案例之 逻辑回归_癌症预测

1. 逻辑回归API介绍

sklearn.linear_model.LogicRegression(solver='liblinear',penalty='l2',C=1.0)

  1. solver损失函数优化方法:
    1️⃣ liblinear 对小数据集 场景训练速度更快,sag和saga对大数据集 更快一些。
    2️⃣ 正则化:sag、saga支持L2 正则化或者没有正则化;liblinear和saga支持L1正则化;
  2. penalty:正则化的种类,l1或者l2
  3. C:正则化力度
  4. 默认将类别数量少的当做正例
    (即L1 L2正则化无需单独再创建对象,直接通过penalty属性(正则化的种类)直接指定,此中选择L2正则化防止过拟合;C正则化力度,即正则化力度越大,权重系数就会越小;默认将类别数量少的当做正例,也可自行指定正例

2. 案例:使用 逻辑回归模型 实现癌症预测

逻辑回归模型介绍:
1.概述 :属于有监督学习,即有特征、有标签、且标签是离散的。主要适用于二分类;
2.原理:把线性回归处理后的预测值-->通过Sigmoid激活函数,映射到0, 1概率-->基于自定义的阈值,结合概率来分类;
3.损失函数:极大似然估计函数的 负数形式;

python 复制代码
"""
案例:演示逻辑回归模型实现癌症预测
逻辑回归模型介绍:
    概述:属于有监督学习,即有特征、有标签、且标签是离散的。主要适用于二分类。
    原理:把线性回归处理后的预测值-->通过Sigmoid激活函数,映射到[0, 1]概率-->基于自定义的阈值,结合概率来分类
    损失函数:极大自然估计函数的 负数形式

    机器学习开发流程:
        1.加载数据
        2.数据的预处理
        3.特征工程(特征提取、特征与处理、特征降维、特征选择、特征组合)
        4.模型训练
        5.模型预测
        6.模型评估
"""
# 导包
import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression #逻辑回归模型
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import StandardScaler        #标准化
from sklearn.model_selection import train_test_split    #训练集和测试集分割

from day02.案例之波士顿房价预测_正规方程法 import transfer

# from sklearn.metrics import accuracy_score            #模型评估

# 1.加载数据
data=pd.read_csv('data/breast-cancer-wisconsin.csv')
# data.info()

# 2.数据的预处理
# 2.1 把 ? 替换成np.nan,参1:要被替换的值,参2:用来替换的值,参3:是否替换源数据,默认为False
data=data.replace('?', np.nan,inplace= True)
# 2.2 确实值处理--》删除
data.dropna(axis=0,inplace=True)#axis=0表示行,删除包含缺省值的行(确定axis=0表示行还是列:一般源方法都是默认按行删除,点进原方法看axis等于几)
# 2.3 打印处理后的信息
# data.info()

# 3.特征工程(特征提取、特征与处理、特征降维、特征选择、特征组合)
# 3.1 特征提取之 提取特征和标签
x = data.iloc[:, 1:-1] #按照行号、列索引获取数据,: 表示所有行,1:-1表示从第1列到最后一列,包左不包右
# y=data.iloc[:, -1]  #获取最后一列
# y=data['Class']     #获取最后一列,效果同上
y=data.Class.values #获取最后一列,效果同上
# 3.2 查看特征和标签
print(x[:5])
print(y[:5])
print(f'特征:{x.shape}, 标签:{y.shape}')#特征:(683, 9), 标签:(683,)
# 3.3切割训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=23)
# 3.4 特征工程:标准化
# 3.4.1 创建标准化对象
transfer = StandardScaler()
# 3.4.2 对训练集进行标准化处理
x_train=transfer.fit_transform(x_train)
# 3.4.3 对测试集进行标准化处理
x_test=transfer.transform(x_test)

# 4.模型训练
# 4.1 创建模型对象 --》逻辑回归对象
estimator=LogisticRegression()
# 4.2 模型训练
estimator.fit(x_train,y_train)

# 5.模型预测
y_predict=estimator.predict(x_test)
print(f'预测结果:{y_predict}')

# 6.模型评估
# 正确率(准确率),公式为:预测对的/ 样本总数
print(f'预测前评估,正确率:{estimator.score(x_test,y_test)}') #测试集的特征、标签
print(f'预测后评估,正确率:{accuracy_score(y_test,y_predict)}')#测试集的标签、预测值

# 思考:逻辑回归模型能用 准确率来评测吗?
# 答案:可以,但是结果不精准,因为逻辑回归模型主要用于 二分类,即:A类还是B类,不能说 97%的A类,3%的B类
# 所以要通过 混淆矩阵来评测,即:精确率,召回率,F1值(F1-Score),ROC曲线,AUC值.
相关推荐
一只小bit6 分钟前
Agent 动态调控:模型、工具、提示词、输出、流模式
机器学习·langchain·llm·人机交互·langgraph
星恒随风8 分钟前
C++ STL 详解:set 与 multiset 的使用、区间查询和算法应用
开发语言·c++·笔记·学习·算法
m沐沐15 分钟前
【自然语言处理】NLP分词与Word2Vec词向量——从原理到实战
人工智能·深度学习·opencv·机器学习·计算机视觉·自然语言处理·word2vec
Lumos18616 分钟前
《ESP32 物联网全栈实战-02》ESP-IDF 工程结构
算法
QN1幻化引擎26 分钟前
把 意识评测做成了一场"非侵入实验":不碰生产代码,分数反而更真了
人工智能·算法·架构
冻柠檬飞冰走茶1 小时前
PTA基础编程题目集 7-17 爬动的蠕虫(C语言实现)
c语言·开发语言·数据结构·算法
临床数据科学和人工智能兴趣组1 小时前
R语言版本检查与扩展包自动更新
机器学习·数据分析·r语言·r语言-4.2.1
是上好佳佳佳呀1 小时前
【机器学习|DAY06】集成学习(Ensemble Learning)笔记
笔记·机器学习·集成学习
会编程的土豆2 小时前
LeetCode 热题 HOT100(一):哈希表与双指针入门(Go 实现)
算法·leetcode·职场和发展
学习中.........2 小时前
并行 BPE 训练 与 手写 `Tokenizer`
人工智能·算法·机器学习·语言模型