大家好 我是小k 今天的模板博客有些小错误 我在这里做出了一些调整 代码可以直接复制运行
逻辑回归属于机器学习里的分类模块 今天我们看的是最简单的分类 俗称二分类 一个最简单的例子便是垃圾邮件分类 是则剔除 否则收入 下面我先展示下今天例子的数据集
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的总体准确率):
最后算出的准确率利用的就是这个公式
如果你觉得本文对你有帮助 就来个点个赞吧