Python - 机器学习算法库Scikit-Leran使用详解3(Logistic回归算法)
作者:hangge | 2022-08-24 17:10
四、Logistic 回归算法
1,什么是 Logistic 回归?
(1)Logistic 回归算法,又叫做逻辑回归算法,或者 LR 算法(Logistic Regression)。虽然它被称为回归,但其实际上是分类模型,并常用于二分类。
(2)逻辑回归的与线性回归一样,也是以线性函数为基础的;而与线性回归不同的是,逻辑回归在线性函数的基础上添加了一个非线性函数,比如添加 Sigmoid 函数从而可以进行二分类。其 Sigmoid 函数图像如下所示:
提示:sigmoid 函数会将所有的数值转化到 0 和 1 之间,我们可以将其简单的理解为该数据被判定为正样本的概率(所谓正样本就是标签为 1 的样本,负样本就是标签为 0 的样本),根据 sigmoid 函数,我们可以很明显的分析出当前数据应该是哪一个类别(大于 0.5 为正样本,小于 0.5 为负样例)
(3)Logistic 算法在处理二分类问题上表现优越,但在多分类(二个以上)问题上容易出现欠拟合。并且在多分类问题上我们就不再使用 sigmoid 函数,而是另一个叫做 softmax 函数。
2,使用样例
(1)下面我们以 sklearn 库中自带的鸢尾花数据集对 Logistic 回归算法进行简单的应用。
鸢尾花数据集:数据集包含 3 个类,每个类 50 个实例,每条记录都有 4 项特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度,可以通过这 4 个特征预测鸢尾花卉属于(iris-setosa, iris-versicolour, iris-virginica)中的哪一品种。
#导入 sklearn 提供的鸢尾花数据 from sklearn.datasets import load_boston #导入 sklearn 提供的logistic回归算法 from sklearn.linear_model import LogisticRegression #导入skleran 提供的分割数据集的方法 from sklearn.model_selection import train_test_split #导入pandas import pandas as pd #加载数据集 iris = load_iris() #分割数据集训练集,测试集 x_train,x_test,y_train,y_test=train_test_split(iris['data'],iris['target'],random_state=0) #创建一个logistic回归模型 model=LogisticRegression() #训练模型 model.fit(x_train,y_train) #训练后用测试集对模型进行评分 print("模型评分:",model.score(x_test,y_test)) print("每个类别的系数向量为:",model.coef_) print("每个类别的截距值为:",model.intercept_) print('-----------------------------------------------------') print('测试集前5条数据特征值:') print(pd.DataFrame(x_test).head(5)) print('-----------------------------------------------------') print('测试集前5条数据目标值:') print(pd.DataFrame(y_test).head(5)) print('-----------------------------------------------------') #使用模型预测 y_predict=model.predict(x_test) print('使用模型预测测试集前5条数据的目标值:') print(pd.DataFrame(y_predict).head(5))
(2)运行结果如下:
全部评论(0)