欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

逻辑回归——乳腺癌分类

程序员文章站 2022-07-14 13:01:51
...

逻辑回归的数学原理

  1. 逻辑回归是一种二分类的有监督学习算法。

  2. 对数几率回归。
    逻辑回归——乳腺癌分类
    逻辑回归——乳腺癌分类

  3. 损失函数采用最大似然函数的负对数。
    逻辑回归——乳腺癌分类

  4. 使用梯度下降算法找最优参数。

对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_)))

逻辑回归——乳腺癌分类