逻辑回归简单原理及python实现

一.原理

  • 什么是逻辑回归

逻辑回归其实不是回归算法,是一个分类算法,只不过它的参数是线性回归方程,是一个用于二分分类的算法。二分分类是指我们的分类结果标签只有两个。
逻辑函数y=S(z)是一个S型曲线,z是回归函数,y的值是从0到1,和垂直轴相交在0.5处,通过一个逻辑函数可以将y的值控制在0到1之间。
因为z是一个线性回归方程,所以叫逻辑回归。

看笔记:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 分类和回归的区别

输出数据类型:分类输出离散数据,即分类的标签;回归输出连续数据
通过机器学习得到的结果不一样,分类算法得到是一个决策面,用于对数据集中的数据进行分类;回归算法得到是是一个最佳拟合线,可以最好的接近数据集中的各个点
对模型的评估指标不一样,分类中用正确率作为指标,即正确分类的数据占总数据的比例;回归中用决定系数R平方来评估模型的好坏,表示有多少百分比的y波动被回归线描述了。

二.实现

'''
logistic regression
'''

#导入需要的包
import pandas as pd
#建立数据集
from collections import OrderedDict
#是否通过考试用0和1表示,0表示未通过,1表示通过。
examDict={'学习时间':[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.5,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]}
# 使用OrderedDict会根据放入元素的先后顺序进行排序。所以输出的值是排好序的
examOrderDict=OrderedDict(examDict)
examDf=pd.DataFrame(examOrderDict)
# examDf.head()
#在机器学习编码中变量命名在变量后面加一个大写的X表示特征,y表示标签,通过后缀就可以看出哪些是特征和标签。
#获取特征
'''
loc——通过行标签索引行数据 
iloc——通过行号索引行数据 
ix——通过行标签或者行号索引行数据(基于loc和iloc 的混合)
'''
exam_X=examDf.loc[:,'学习时间']
#获取标签
exam_y=examDf.loc[:,'通过考试']
#建立训练数据和测试数据
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(exam_X,exam_y,test_size=.2)
#导入sklearn包逻辑回归函数
from sklearn.linear_model import LogisticRegression
#创建逻辑回归模型
model=LogisticRegression(solver='liblinear')
#训练模型
'''
机器学习包sklearn要求输入的特征必须是一个二维数组的类型,这里只有一个特征,
需要进行重塑,否则会报错,因此对训练数据和测试数据的特征进行重塑。
'''
X_train=X_train.values.reshape(-1,1)
X_test=X_test.values.reshape(-1,1)
model.fit(X_train,y_train)

#可以用model的predict_proba方法预测给定学习时间是否通过考试的概率
# model.predict_proba(3)
print(model.predict_proba([[5]]))

这里输入5,输出结果为:

[[0.15837754 0.84162246]]

参考:逻辑回归分类

猜你喜欢

转载自blog.csdn.net/qq_39327985/article/details/88603678
今日推荐