机器学习笔记(十二)——线性逻辑回归(sklearn)
本博客仅用于个人学习,不用于传播教学,主要是记自己能够看得懂的笔记(
学习知识、资源和数据来自:机器学习算法基础-覃秉丰_哔哩哔哩_bilibili
数据可见:机器学习笔记(十一)——线性逻辑回归(梯度下降法) - Lcy的瞎bb - 博客园 (cnblogs.com)
用sklearn就很简单啦,了解了基本原理之后就灰常容易啦。
Python代码如下:
from sklearn import linear_model from sklearn.metrics import classification_report from sklearn import preprocessing import numpy as np import matplotlib.pyplot as plt #数据是否标准化 scale=False #画散点图 def plot(): p1,=plt.plot(x0,y0,'bo') p2,=plt.plot(x1,y1,'rx') plt.legend(handles=[p1,p2],labels=['0','1'],loc='best') data=np.genfromtxt('C:/Users/Lenovo/Desktop/学习/机器学习资料/逻辑回归/LR-testSet.csv',delimiter=',') x_data=data[:,:-1] y_data=data[:,-1] if scale: #数据标准化 x_data=preprocessing.scale(x_data) x0,y0,x1,y1=[],[],[],[] for i in range(len(y_data)): if y_data[i]: x1.append(x_data[i,0]) y1.append(x_data[i,1]) else: x0.append(x_data[i,0]) y0.append(x_data[i,1]) plot() plt.show() model=linear_model.LogisticRegression() #sklearn中的逻辑回归模型 model.fit(x_data,y_data) if scale==False: #标准化的数据再画出决策边界没有意义 w=model.coef_ b=model.intercept_ plot() plt.plot(x_data[:,0],-(b+x_data[:,0]*w[0,0])/w[0,1],'k') plt.show() #求正确率和回归率 predict=model.predict(x_data) print(classification_report(y_data,predict))
得到结果:
precision recall f1-score support
0.0 0.96 0.94 0.95 47
1.0 0.94 0.96 0.95 53
accuracy 0.95 100
macro avg 0.95 0.95 0.95 100
weighted avg 0.95 0.95 0.95 100