逻辑回归——乳腺癌分类
程序员文章站
2022-07-14 13:01:51
...
逻辑回归的数学原理
-
逻辑回归是一种二分类的有监督学习算法。
-
对数几率回归。
-
损失函数采用最大似然函数的负对数。
-
使用梯度下降算法找最优参数。
对conda 自带数据集分类
导包
读数据
划分训练集和测试集
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
cancer=load_breast_cancer()
data=pd.DataFrame(data=cancer.data,columns=cancer.feature_names)
xtrain,xtest,ytrain,ytest=train_test_split(data,cancer.target,test_size=0.3,random_state=250)
导入逻辑回归
训练分类器
from sklearn.linear_model import LogisticRegression
lr=LogisticRegression().fit(xtrain,ytrain)
查看训练的各项参数值
lr.coef_
可以看到很多标签的权重特别小,因为逻辑回归默认使用的L2
正则化项
也可以使用L1
正则化项试一试,但是使用L1
正则化项需要加上solver='liblinear'
,否则会报错。
lr1=LogisticRegression(penalty='l1',solver='liblinear').fit(xtrain_,ytrain)
可以看到,使用L1
正则化项,那些极小的参数都变成了0。
查看一下模型准确率
lr.score(xtest,ytest)
对模型进行优化
因为逻辑回归是一种对数几率回归,为了排除量纲对模型的影响,可以对数据先做标准化处理。
from sklearn.preprocessing import StandardScaler
s=StandardScaler()
xtrain_=s.fit_transform(xtrain)
xtest_=s.fit_transform(xtest)
使用新的训练集做逻辑回归
lr2=LogisticRegression().fit(xtrain_,ytrain)
查看准确率
lr2.score(xtest_,ytest)
可以看到,准确率略有提升
最后
最后的最后,检查一下模型的查全率和查准率
from sklearn.metrics import classification_report
print(classification_report(ytest,lr1.predict(xtest_)))