线性回归原理推导与应用(八):逻辑回归二分类乳腺癌数据分类

乳腺癌数据是sklearn中自带的数据集,需要通过相关特征对是否患有乳腺癌进行分类。

数据清洗与建模

首先加载相关库和相关数据

py 复制代码
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
import numpy as np
import pandas as pd

#加载数据
bcdata = load_breast_cancer()
# 转成dataFrame格式,方便查看
df_data = pd.DataFrame(bcdata.data, columns=bcdata.feature_names)
df_data['targe'] = bcdata.target
df_data.head()

通过运行的结果可以看出这个数据集有30个自变量,包括半径,紧密度,面积等相关数据,并同时包括对应指标的平均值,最大值,最小值。而target列为结果列,0 表示恶性,1 表示良性。数据集共569条记录,均没有缺失数据

接下来将数据分为测试集和训练集

py 复制代码
from sklearn.model_selection import train_test_split
X_train,X_test,y_train, y_test=train_test_split(bcdata.data,bcdata.target,test_size=0.3)

在这里直接使用sklearn中的逻辑回归LogisticRegression()建模,其官网地址为https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html,其语法和参数为:

py 复制代码
model = LogisticRegression(penalty='l2', 
                          dual=False, 
                          tol=0.0001, 
                          C=1.0, 
                          fit_intercept=True, 
                          intercept_scaling=1, 
                          class_weight=None, 
                          random_state=None, 
                          solver='lbfgs', 
                          max_iter=100, 
                          multi_class='auto', 
                          verbose=0, 
                          warm_start=False, 
                          n_jobs=None, 
                          l1_ratio=None)

对应的参数为:

  • penalty:指定惩罚(正则化项)类型,用于避免过拟合,可以是 'l1'、'l2'、'elasticnet' 或 'none'。
  • C:正则化强度的倒数,较小的值指定更强的正则化。
  • fit_intercept:指定是否应该向决策函数中添加常数项(也称截距)。
  • intercept_scaling:仅在使用求解器 'liblinear' 且 fit_intercept 为 True 时有用。当特征值相差很大时,此参数有助于稳定 'liblinear' 的收敛。
  • class_weight:用于标示各个类别的权重,通常用于处理类别不平衡的问题。如果不设置,则所有类的权重都为 1。
  • random_state:是随机数生成器的种子。在需要重现结果的情况下用于初始化中心。
  • solver:指定在优化问题中使用的算法,如 'liblinear'、'newton-cg'、'lbfgs'、'sag' 和 'saga'。
  • max_iter:求解器内部迭代的最大次数,即优化算法的迭代次数。
  • multi_class:如果是多类(非二分类)问题,则指定用于多类策略的算法,可以是 'ovr'(一对剩余)或 'multinomial'。
  • verbose:对于某些求解器,正整数的verbose参数可以用于显示求解器中的进程信息。
  • warm_start:设为True时,使用前一个调用的解决方案作为初始化,否则,只是擦除前一个解决方案。
  • n_jobs:用于指定并行作业的数量。None意味着1,而-1意味着使用所有处理器。
  • l1_ratio:仅在penalty='elasticnet'时使用,这是Elastic-Net混合参数,其中 0 <= l1_ratio <= 1。

本例中是最简单的二分类,所以直接调用,参数直接采用默认的参数

py 复制代码
clf = LogisticRegression()
clf.fit(X_train,y_train)

这里直接运行会发现会有一个警告:
这是因为使用了默认的lbfgs算法且参数的迭代次数达到了限制(默认max_iter=100),但是两次迭代参数变化还是比较大,仍然没有在一个很小的阈值以下,这就叫没有收敛。

这个时候的选择有 :1.忽略, 2.增大最大迭代次数, 3.更换其他的模型或者那个参数solver, 4.将数据进行预处理,提取更有用的特征。这里重点是讲解逻辑回归的使用,所以我们直接忽略不细聊具体的参数

逻辑回归模型评价

逻辑回归模型是一个分类模型,所以采用一般的分类模型评价指标即可。常用的分类模型评价指标可参考https://blog.csdn.net/qq_42692386/article/details/147896278

这里直接使用sklearn中的score函数,对于分类任务其返回的是准确率

py 复制代码
score=clf.score(X_test,y_test)
score

#结果为0.9122807017543859

也可以直接计算准确率,和score函数结果一致

py 复制代码
print( "模型准确率:",(clf_y_predict== y_test).sum()/len(y_test))
相关推荐
源码之家8 小时前
机器学习:基于大数据二手房房价预测与分析系统 可视化 线性回归预测算法 Django框架 链家网站 二手房 计算机毕业设计✅
大数据·算法·机器学习·数据分析·spark·线性回归·推荐算法
xuehaikj13 小时前
【深度学习】YOLOv10n-MAN-Faster实现包装盒flap状态识别与分类,提高生产效率
深度学习·yolo·分类
AI街潜水的八角14 小时前
深度学习杂草分割系统1:数据集说明(含下载链接)
人工智能·深度学习·分类
月下倩影时21 小时前
视觉学习篇——理清机器学习:分类、流程与技术家族的关系
学习·机器学习·分类
算法与编程之美21 小时前
探索不同的优化器、损失函数、batch_size对分类精度影响
人工智能·机器学习·计算机视觉·分类·batch
甄心爱学习2 天前
数据挖掘11-分类的高级方法
人工智能·算法·分类·数据挖掘
qunshankeji3 天前
YOLOv8-SOEP-RFPN-MFM水果智能分类与检测模型实现
yolo·分类·数据挖掘
m0_462605223 天前
第N5周:Pytorch文本分类入门
人工智能·pytorch·分类
极客学术工坊3 天前
2023年辽宁省数学建模竞赛-B题 数据驱动的水下导航适配区分类预测-基于支持向量机对水下导航适配区分类的研究
机器学习·支持向量机·数学建模·分类
Learn Beyond Limits3 天前
Regression vs. Classification|回归vs分类
人工智能·python·算法·ai·分类·数据挖掘·回归