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

乳腺癌数据是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))
相关推荐
李昊哲小课6 小时前
使用 scikit-learn 库对乌克兰冲突事件数据集进行多维度分类分析
人工智能·python·机器学习·分类·scikit-learn
白熊1886 小时前
【机器学习基础】机器学习入门核心算法:逻辑回归(Decision Tree)
算法·机器学习·逻辑回归
山顶听风15 小时前
好坏质检分类实战(异常数据检测、降维、KNN模型分类、混淆矩阵进行模型评估)
算法·矩阵·分类
之之为知知15 小时前
深度学习常用概念详解:从生活理解到技术原理
人工智能·深度学习·算法·职场和发展·矩阵·分类·回归
非小号16 小时前
PaddleNLP 的文本分类项目
python·机器学习·分类
小L爱科研2 天前
6.1 Q1|广州医科大学GBD发文 | 良性前列腺增生与合并症之间的相关性
数据库·机器学习·数据分析·逻辑回归·健康医疗
love530love2 天前
部署微软开源人工智能Qlib量化投资平台
大数据·数据结构·人工智能·windows·python·算法·线性回归
胖哥真不错2 天前
R基于逻辑回归模型实现心脏病检测及SHAP值解释项目实战
r语言·逻辑回归·项目实战·shap值解释·逻辑回归模型·心脏病检测
のハス2 天前
吴恩达机器学习笔记:逻辑回归3
笔记·机器学习·逻辑回归