当前位置:   article > 正文

logistics回归模型的原理和实现_logistic回归模型的实现

logistic回归模型的实现

机器学习基础(七)

Logistics回归

原理

Logistics回归是统计学习中的经典分类方法,是一种广义的线性回归模型。它经常被使用于二分类问题的解决上,具有不错的效果。

Logistics回归是在线性回归的基础上,加入了 s i g m o i d sigmoid sigmoid函数,使函数的取值分布在 [ 0 , 1 ] [0,1] [0,1]之间,从而使模型具有分类的效果。

Logistics回归的表达式为:
h θ ( x ) = g ( θ T X ) = 1 1 + e − θ T x h_{\theta}(x)=g(\theta^{T}X)=\frac{1}{1+e^{-\theta^{T}x}} hθ(x)=g(θTX)=1+eθTx1

所以可以得到
P ( Y = 1 ∣ x ) = h θ ( x ) P ( Y = 0 ∣ x ) = 1 − h θ ( x ) P(Y=1|x)=h_{\theta}(x)\qquad P(Y=0|x)=1-h_{\theta}(x) P(Y=1x)=hθ(x)P(Y=0x)=1hθ(x)

然后就可以得到模型的似然函数为
L ( θ ) = ∏ i = 1 n ( h θ ( x i ) ) y i ( 1 − h θ ( x i ) ) 1 − y i L(\theta)=\prod^{n}_{i=1}(h_{\theta}(x_{i}))^{y_{i}}(1-h_{\theta}(x_{i}))^{1-y_{i}} L(θ)=i=1n(hθ(xi))yi(1hθ(xi))1yi

即当 y i = 0 y_{i}=0 yi=0时函数取 h θ ( x ) h_{\theta}(x) hθ(x),当 y i = 1 y_{i}=1 yi=1时函数取 1 − h θ ( x ) 1-h_{\theta}(x) 1hθ(x)

然后对似然函数取对数,得到
ln ⁡ ( L ( θ ) ) = ∑ i = 1 n ( y i ln ⁡ ( h θ ( x i ) ) + ( 1 − y i ) ln ⁡ ( 1 − h θ ( x ) ) ) ) \ln(L(\theta))=\sum^{n}_{i=1}(y_{i}\ln(h_{\theta}(x_{i}))+(1-y_{i})\ln(1-h _{\theta}(x)))) ln(L(θ))=i=1n(yiln(hθ(xi))+(1yi)ln(1hθ(x))))

然后通过求解模型的极值,就可以得到最优的 θ \theta θ值,这也是看作Logistics函数的损失函数,这是所有数据的总损失。但似然函数是取模型最大值时的 θ \theta θ值,损失函数是需要求损失最小,所以可以将似然函数取负,然后取平均每个数据的损失,这样可以减少计算量。
c o s t ( h θ ( x ) , y ) = − 1 n ∑ i = 1 n ( y i ln ⁡ ( h θ ( x i ) ) + ( 1 − y i ) ln ⁡ ( 1 − h θ ( x ) ) ) ) cost(h_{\theta}(x),y)=-\frac{1}{n}\sum^{n}_{i=1}(y_{i}\ln(h_{\theta}(x_{i}))+(1-y_{i})\ln(1-h _{\theta}(x)))) cost(hθ(x),y)=n1i=1n(yiln(hθ(xi))+(1yi)ln(1hθ(x))))

代码实现

#导入所需的模块
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler

#导入癌症数据
data = load_breast_cancer()
x = pd.DataFrame(data.data,columns=data["feature_names"])
y = data.target
#切分数据集
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,random_state=1234)

#数据集进行标准化处理
std = StandardScaler()
x_train = std.fit_transform(x_train)
x_test = std.transform(x_test)

#建立logistics回归模型
#模型默认使用l2正则化,C是指定正则化的参数
LR = LogisticRegression(C=60)
LR.fit(x_train,y_train)
#查看模型的准确率
print(LR.score(x_test,y_test))
y_pre = LR.predict(x_test)
#查看模型的召回率
print(classification_report(x_pre,y_test,target_names=data.target_names))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/541167
推荐阅读
相关标签
  

闽ICP备14008679号