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

乳腺癌数据是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))
相关推荐
云程笔记16 小时前
021.损失函数深度解读:YOLO的定位、置信度、分类损失计算
人工智能·yolo·机器学习·计算机视觉·分类·数据挖掘
开开心心就好16 小时前
能把网页藏在Word里的实用摸鱼工具
linux·运维·服务器·windows·随机森林·逻辑回归·excel
龙侠九重天18 小时前
ML.NET 实战:快速构建分类模型
分类·数据挖掘·c#·.net
小鱼~~21 小时前
分类问题和回归问题概念
机器学习·分类·回归
动物园猫21 小时前
道路表面缺陷数据集分享(YOLO系列分类检测)| 路面病害 目标检测 坑洼裂缝 训练集
yolo·目标检测·分类
renhongxia11 天前
ORACLE-SWE:量化Oracle 信息信号对SWE代理的贡献
人工智能·深度学习·学习·语言模型·分类
kishu_iOS&AI2 天前
机器学习 —— 线性回归(实例)
人工智能·python·机器学习·线性回归
kishu_iOS&AI2 天前
机器学习 —— 线性回归(2)
人工智能·python·算法·机器学习·线性回归
源码之屋2 天前
计算机毕业设计:Python天气数据采集与可视化分析平台 Django框架 线性回归 数据分析 大数据 机器学习 大模型 气象数据(建议收藏)✅
人工智能·python·深度学习·算法·django·线性回归·课程设计
q_35488851532 天前
计算机毕业设计:Python智慧水文监测与流量预测系统 Flask框架 多元线性回归 数据分析 可视化 水网 流量预测 水位预测(建议收藏)✅
大数据·python·信息可视化·数据挖掘·flask·线性回归·课程设计