100天机器学习day4之逻辑回归

  大家好 我是小k 今天的模板博客有些小错误  我在这里做出了一些调整 代码可以直接复制运行

  逻辑回归属于机器学习里的分类模块 今天我们看的是最简单的分类 俗称二分类 一个最简单的例子便是垃圾邮件分类 是则剔除 否则收入 下面我先展示下今天例子的数据集

100天机器学习day4之逻辑回归_第1张图片

第一步:导入数据并划分数据集

import pandas as pd
import numpy as np

data = pd.read_csv(r'D:\python\100daysdata\Social_Network_Ads.csv')

x = data.iloc[:,[2,3]].values
y = data.iloc[:,4].values
print(x[0]) //打出第一行两个特征数值
print(y[0]) //打出第一行的结果

from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,random_state=1314)


打印结果如下:
[   19 19000]
0

第二步:特征缩放


from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.fit_transform(X_test)

什么是特征缩放?:

特征缩放是用来标准化数据特征的范围 

那么为什么要标准化数据特征呢?举个例子 比如k近邻算法中 分类器主要是计算两点间的距离 设想一下 假如数据集中一个特征非常的大 那么距离都会被这个特征所主导 如果我们将每个特征都归一化后 比如说全都缩放到-1到1之间 那么计算机在处理数据时会方便许多 

此外 特征缩放可以加快梯度收敛的速度

特征缩放的两种方法:

1:调节比例   也就意味着把所有数据都缩放到[-1,1]之间

2:标准化  这个方法在机器学习中被广泛使用 本例子使用的就是这个方法 此方法是使每个特征的值有零均值和单位方差

第三步:训练模型并进行预测

from sklearn.linear_model import  LogisticRegression
classifier = LogisticRegression()
classifier.fit(x_train,y_train)

y_pred = classifier.predict(x_test)

print(y_test)
print(y_pred)

打印结果如下:
[0 0 0 1 0 1 0 1 0 0 0 1 1 1 0 1 0 1 1 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 1 0 0
 1 0 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 1 0 0 1 1 0 1 0 0 1 1 0 1 0 1 0 1 0 0 0
 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0
 0 0 0 1 0 0 1 1 1]


[0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0
 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0
 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0
 0 0 0 1 0 0 0 1 1]

第四步:混淆矩阵

什么是混淆矩阵?在本例中 就是用来检测我们的逻辑回归预测结果

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test,y_pred)
print(cm)
accuracy = (cm[0][0]+cm[0][1])/(cm[0][0]+cm[0][1]+cm[1][0]+cm[1][1])
print(accuracy)

打印结果如下:
[[68  1]
 [21 30]]
0.575


这里有几个概念:TP FN FP TN 在这个例子中分别代表68 1 21 30

TP(True Positive): 真实为1,预测也为1

FN(False Negative): 真实为1,预测为0

FP(False Positive): 真实为0,预测为1

TN(True Negative): 真实为0,预测也为0

分类模型总体判断的准确率(包括了所有class的总体准确率):

accuary=\frac{TP+TN}{TP+FN+FP+TN}

最后算出的准确率利用的就是这个公式

 

如果你觉得本文对你有帮助 就来个点个赞吧

你可能感兴趣的:(机器学习,机器学习)