python 逻辑回归_Python逻辑回归——建模-评估模型
发布日期:2022-02-04 03:25:46 浏览次数:13 分类:技术文章

本文共 2509 字,大约阅读时间需要 8 分钟。

学完线性回归,逻辑回归建模+评估模型的过程就相对好理解很多。其实就是换汤不换药。

逻辑回归不是回归算法,而是分类算法,准确来说,叫逻辑分类

逻辑分类本质上是二分分类,即分类结果标签只有两个

逻辑回归建模-评估模型的过程

如何建立有序的二维数据结构

1.字典是无序的,所以引入一个OrderedDict来让顺序变成有序

2.数据集转成Pandas的二维数据结构进行处理

如何实现逻辑回归

1.提取出特征和标签

提取出某一列:loc (根据索引进行提取)

2.建立训练数据和测试数据

从样本中随机的按比例选取训练数据(train)和测试数据(test):

使用交叉验证(sklearn.model_selection)中的train_test_split

train_test_split三个参数:

第一个参数:所要划分的样本特征

第二个参数:所要划分的标签特征

第三个参数:train_size= (<0的小数:训练数据的占比 >0的整数:样本的数量)

x_train , x_test , y_train , y_test 各分配到一定比例的数据

3.使用训练数据训练模型

注意:sklearn要求输入的特征必须是二维数组的类型,但是因为我们目前只有1个特征,所以需要用安装错误提示用reshape转行成二维数组的类型

导入逻辑回归:使用sklearn.linear_model中的LogisticRegression

用LogisticRegression创建训练模型:model = LogisticRegression()

训练模型:用的是fit函数

model.fit(x_train , y_train)

4.使用测试数据进行模型评估

评估模型准确度 准确率 :score函数

model.score(x_test,y_test)

5.进一步理解什么是逻辑函数

预测数据的结果用predict: model.predict([[3]])

得出的结果要么0要么1

1)用predict_probe获取概率值

model.predict_proba([[3]])

输出结果第1个值是标签为0的概率值,第2个值是标签为1的概率值

2)用逻辑回归函数获取概率值

757980eee3e58c8e8e6ff1ccfb2e3b0c.png

逻辑回归函数 第一步要得到z值

z=a+bx

a:截距 a=model.intercept_

b:回归系数 b=model.coef_

将z值带入逻辑回归函数中,得到概率值

y_pred=1/(1+np.exp(-z))

e:通过Numpy中的exp函数求得

52b9bae3775d6a34ba9452ff44e9e58d.png

逻辑回归代码

#建立有序的二维数据结构import pandas as pdfrom collections import OrderedDictexamDict={    '学习时间':[0.50,0.75,1.00,1.25,1.50,1.75,1.75,2.00,2.25,2.50,            2.75,3.00,3.25,3.50,4.00,4.25,4.50,4.75,5.00,5.50],    '通过考试':[0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1]}examOrder=OrderedDict(examDict)examDf=pd.DataFrame(examOrder)examDf.head() #1.提取出特征和标签x_exam=examDf.loc[:,'学习时间']y_exam=examDf.loc[:,'通过考试']  #2.建立训练数据和测试数据from sklearn.model_selection import train_test_splitx_train, x_test, y_train, y_test=train_test_split(x_exam, y_exam, train_size=0.8)print(x_exam.shape)print(y_exam.shape)print(x_train.shape)print(x_test.shape)print(y_train.shape)print(y_test.shape)  #绘制测试数据和训练数据的散点图import matplotlib.pyplot as pltplt.scatter(x_train, y_train, color="blue", label="train data")plt.scatter(x_test, y_test, color="red", label="test data")plt.legend(loc=2)plt.xlabel("Hours")plt.ylabel("Pass")plt.show()  #3.使用训练数据训练模型x_train=x_train.reshape(-1,1)y_train=y_train.reshape(-1,1) from sklearn.linear_model import LogisticRegressionmodel=LogisticRegression()model.fit(x_train, y_train) #4.使用测试数据进行模型评估x_test=x_test.reshape(-1,1)y_test=y_test.reshape(-1,1)model.score(x_test,y_test)  #5.计算模型的准确率model.score(x_test,y_test) #预测最终结果是通过还是不通过model.predict([[3]]) #用predict_proba求出通过的概率值=算出z带入逻辑回归函数求出的概率值#计算概率值得方法1model.predict_proba([[3]])#计算概率值得方法2x=3a=model.intercept_b=model.coef_z=a+b*x#将z带入逻辑回归函数中,算出通过的概率值import numpy as npy_pred=1/(1+np.exp(-z))y_pred

转载地址:https://blog.csdn.net/weixin_39626369/article/details/110972893 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:麻瓜编程python爬虫微专业_微专业:Python Web开发工程师(零基础课程),麻瓜编程侯爵主讲 价值2400元...
下一篇:python 字典合并_python:dict 真的很神奇

发表评论

最新留言

感谢大佬
[***.8.128.20]2024年06月25日 05时47分50秒