十二 逻辑回归
1.概念
逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。由于算法的简单和高效,在实际中应用非常广泛。
逻辑回归一般用于二分类问题,比如:
是好瓜还是坏瓜
健康还是不健康
可以托付终身还是不可以
2.原理
逻辑回归的输入是线性回归的输出
线性回归: h ( w ) = w 1 x 1 + w 2 x 2 + . . . . + b h(w)=w_1x_1+w_2x_2+....+b h(w)=w1x1+w2x2+....+b
sigmoid激活函数 : f ( x ) = 1 1 + e − x f(x)=\frac{1}{1+e^{-x}} f(x)=1+e−x1
sigmoid函数的值是在[0,1]区间中的一个概率值,默认为0.5为阈值可以自己设定,大于0.5认为是正例,小于则认为是负例
把上面的 h ( w ) h(w) h(w) 线性的输出再输入到sigmoid函数当中 f ( w ) = 1 1 + e − h ( w ) f(w)=\frac{1}{1+e^{-h(w)}} f(w)=1+e−h(w)1
损失函数:
损失函数图:
当y=1时:
通过损失函数图像,我们知道:
当y=1时,我们希望 h θ ( x ) h\theta(x) hθ(x) 值越大越好
当y=0时,我们希望 h θ ( x ) h\theta(x) hθ(x) 值越小越好
综合0和1的损失函数:
手动算一下下:
然后使用梯度下降算法,去减少损失函数的值,这样去更新逻辑回归前面对应算法的权重参数,提升原本属于1类别的概率,降低原本是0类别的概率.
3.API
逻辑斯蒂
sklearn.linear_model.LogisticRegression()
参数:
fit_intercept bool, default=True 指定是否计算截距
max_iter int, default=100 最大迭代次数。迭代达到此数目后,即使未收敛也会停止。
模型对象:
.coef_ 权重
.intercept_ 偏置
predict()预测分类
predict_proba()预测分类(对应的概率)
score()准确率
4.示例
python
#导包
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
#加载数据
X,y = load_iris(return_X_y=True)
print(y)
#二分类 删除第三类
X=X[y!=2]
y=y[y!=2]
print(y)
#数据集划分
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=33)
print(X_train.shape,y_train.shape)
#逻辑回归模型
model=LogisticRegression()
#训练
model.fit(X_train,y_train)
#权重
print(model.coef_)
#偏置
print(model.intercept_)
#预测分类
y_predict=model.predict(X_test)
print(y_predict)
print(y_test)
#预测分类对应的概率
proba=model.predict_proba(X_test)
print(proba)
#评估
print(model.score(X_test,y_test))