逻辑回归分析实训----乳腺癌肿瘤预测
逻辑回归
逻辑回归也被被称为logistic回归分析模型,在机器学习领域中被划归为一种有监督的学习方法。它是一种广义线性回归模型,在研究一个因变量y与一个或多个自变量x之间的关系时具有重要价值,并且主要应用于分类问题上。例如,在给定一个人的各项指标(如身高体重)后,则可基于这些数据预测其体型属性并判断其所属类别(如"胖"与"瘦")。
2.线性回归vs逻辑回归
区别:
它们的响应变量存在差异,在线性回归模型中直接使用ax+b作为响应变量即y=ax+b的形式;而采用sigmoid函数将ax+b映射至(0,1)区间以完成概率估计的任务。输出结果(y):在线性回归中输出结果是一个单一数值(可以是任意实际数值),例如50000、23.98等;而对于逻辑回归而言,则会输出表示不同类别的整数标签。输入特征(x):在线性回归中输入特征被表示为一个列向量;在涉及二维图像的逻辑回归模型中,则会使用一个二维数组来表示特征。矩阵中的每个元素代表图像像素的灰度值,在这里规定为介于0到255之间的整数,并且其中黑色对应于0、白色对应于255、其他值则代表不同程度的灰色。损失函数(cost):在线性回归中所使用的损失函数是用来衡量预测值与预期值之间差异程度的一个综合指标;而针对逻辑回归问题,则采用计算分类正确率或误分类率的相关损失函数来优化模型参数。
相似性:
- 逻辑回归与线性回归在形式上高度相似,并均采用ax+b的形式作为基础模型。
其中a和b是需要估计的参数。 - 训练:无论是线性回归还是逻辑回归,在训练过程中都旨在学习权重(W)和偏置(b)值。
- 结果:从结果角度来看,在预测用于分类的任务中所建立的模型均基于相同的理论基础。
3.乳腺癌中肿瘤预测(实训)------逻辑回归分析
3.1 导入需要的各种包,例如:pandas,numpy,sklearn

3.2 定义列,给列起名字

3.3 导入数据,增加数据的参数值(导入时数据的路径一定是安装的路径)

3.4 输出列表返回的元组,获取数据中的信息值

3.5 查看数据的基本情况

3.6 对数据目标值进行说明

3.7 替换数据中的缺失值,并且删除缺失值的样本,再确定特征值和目标值

设定目标值之后,在数据中划分训练集与测试集,并进行了特征工程设计;随后应用逻辑回归算法构建预测模型,并完成模型训练以评估其性能。

3.9 对模型进行评估,得到模型预测值

4.代码如下:
import pandas as pd #导入pandas库
import numpy as np #导入numpy库
from sklearn.model_selection import train_test_split #从sklearn.model_selection导入train_test_split函数
from sklearn.preprocessing import StandardScaler #从sklearn.preprocessing导入StandardScaler类
from sklearn.linear_model import LogisticRegression #从sklearn.linear_model导入LogisticRegression类
import ssl #导入ssl模块
ssl._create_default_https_context = ssl._create_unverified_context #配置ssl默认上下文
该模型的特征工程部分采用了以下字段名列表进行参数设置:
该列表包含了十个关键指标及其对应的英文缩写表示:
Sample code number(样本编码编号)、Clump Thickness(细胞厚度)、Uniformity of Cell Size(细胞尺寸的一致性)、Uniformity of Cell Shape(细胞形状的一致性)、Marginal Adhesion(边缘粘着性)、Single Epithelial Cell Size(单上皮细胞大小)、Bare Nuclei(裸核体)、Bland Chromatin(松软染色质)、Normal Nucleoli(正常核仁)、Mitoses(分裂次数)。
将data赋值为从r"C:\Users\HP\Desktop\breast-cancer-wisconsin.data"中读取的CSV文件,并指定columns参数为names。
data
data.shape #输出列表返回的元组
data.info #获取数据中的信息
data.describe() #查看数据基本情况
data.Class #目标值说明
将?号替换为NaN值的数据进行赋值操作
对数据进行非空数据的保留处理,并去除存在缺失值的样本
x=data.iloc[:,1:10] #确定特征值
x.head()
y=data['Class'] #确定目标值
y.head()
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2) #分割数据
transform=StandardScaler() #特征工程(标准化)
通过训练过程确定参数后得到的变换矩阵 x_train = transfrom.fit_transform(x_train);通过训练过程确定参数后得到的变换矩阵 x_test = transfrom.fit_transform(x_test)
estimate= LogisticRegression() #机器学习(逻辑回归) 建立模型
estimate.fit(x_train,y_train) #训练模型
y_predict=estimate.predict(x_test) #模型评估
y_predict
estimate.score(x_test,y_test)
学号:202113430110
姓名:罗媛
