机器学习笔记(十二)——线性逻辑回归(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

posted @ 2021-07-28 10:44  Lcy的瞎bb  阅读(109)  评论(0编辑  收藏  举报