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

乳腺癌数据是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))
相关推荐
wm104318 小时前
机器学习之线性回归
人工智能·机器学习·线性回归
sonadorje19 小时前
逻辑回归中的条件概率
算法·机器学习·逻辑回归
sonadorje1 天前
机器学习中的逻辑回归
人工智能·机器学习·逻辑回归
爱打代码的小林1 天前
CNN 卷积神经网络 (MNIST 手写数字数据集的分类)
人工智能·分类·cnn
zhangfeng11332 天前
数据分析 医学分析中线性回归、Cox回归、Logistic回归的定义和区别,原理和公式,适用场景
数据分析·回归·线性回归
zhangfeng11332 天前
spss 性别类似的二分类变量 多分类变量 做线性回归分析
分类·数据挖掘·线性回归
bst@微胖子2 天前
HuggingFace项目实战之分类任务实战
pytorch·深度学习·分类
摸鱼仙人~2 天前
BERT分类的上下文限制及解决方案
人工智能·分类·bert
摸鱼仙人~2 天前
使用 BERT 系列模型实现 RAG Chunk 分类打标
人工智能·分类·bert
数据分享者3 天前
猫狗图像分类数据集-21616张标准化128x128像素JPEG图像-适用于计算机视觉教学研究与深度学习模型训练-研究人员、开发者和学生提供实验平台
深度学习·计算机视觉·分类