当前位置: 首页 > news >正文

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

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

数据清洗与建模

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

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条记录,均没有缺失数据

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

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,其语法和参数为:

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。

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

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函数,对于分类任务其返回的是准确率

score=clf.score(X_test,y_test)
score#结果为0.9122807017543859

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

print( "模型准确率:",(clf_y_predict== y_test).sum()/len(y_test))

在这里插入图片描述

相关文章:

  • BUCK电路利用状态空间平均法和开关周期平均法推导
  • 大模型 Agent 就是文字艺术吗?
  • 3par persona设置错误,linux I/O持续报错
  • 【golang】能否在遍历map的同时删除元素
  • 文章记单词 | 第106篇(六级)
  • Redis-基础-总结
  • OptiStruct结构分析与工程应用:吸声单元吸声材料基本性能指标
  • 连续质数和
  • hugging-face数据集快速下载
  • 使用compressorjs实现前端图片压缩
  • 怎么判断一个Android APP使用了KMM这个跨端框架
  • [Java恶补day4] 283. 移动零
  • 水利水电安全员考试的案例分析题一般涉及哪些方面的知识?
  • 4408. 李白打酒加强版(dp)
  • 多路径可靠传输协议(比如 MPTCP)为什么低效
  • ISO 26262-5 评估硬件架构度量值
  • 频率分布直方图
  • 熔断器(Hystrix,Resilience4j)
  • Three.js 中的 Octree(八叉树)详解
  • deepseek组合使用
  • 海口做网站/深圳疫情最新情况
  • 制作营销网站模板免费下载/潍坊网站建设
  • 建设营销型网站的优势/网络推广合同
  • 中国电力建设股份有限公司网站/识图
  • 备用网站怎么做/长沙百度首页排名
  • 怎样免费做彩票网站/网络营销软件推广