一.案例简介

对于699条样本,利用逻辑回归进行癌症分类,强化对于逻辑回归的认识以及API的使用方法。

二.代码部分详解

导包

import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression         #逻辑回归模型
from sklearn.preprocessing import StandardScaler            #标准化
from sklearn.model_selection import train_test_split        #数据分割
from sklearn.metrics import accuracy_score                  #模型评估

1.加载数据并查看数据

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

2.数据预处理

#2.数据预处理
#2.1将?转化为np.nan  参1:要被替换的值  参2:用来替换的值   参3:是否替换原数据,默认是False
data.replace('?',np.nan, inplace=True)
#2.2缺失值处理——》删除
data.dropna(axis=0, inplace=True)                           #axis=0,表示行,删除缺失值的行
#2.3打印处理后的信息
#data.info()

3.特征工程

#3.特征工程(提取,预处理...)
#3.1特征提取之提取特征和标签
x = data.iloc[:, 1:-1]        #按照行号,列索获取数据,:表示所有行,1:-1表示第一列到最后一列(左闭右开)实际是第一列和倒数第二列
# y = data.iloc[:, -1]          #所有行,最后一列
# y = data['Class']             #获取最后一行,效果同上
y = data.Class                #效果同上
#3.2查看下特征和标签
print(x[:5])
print(y[:5])
print(x.shape,y.shape)
#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创建标准化对象
transform = StandardScaler()
#3.4.2对训练集进行标准化
x_train = transform.fit_transform(x_train)
#3.4.3对测试集进行标准化
x_test = transform.transform(x_test)

4.模型训练

#4.模型训练
#4.1创建模型对象
estimator = LogisticRegression()
#4.2模型训练
estimator.fit(x_train,y_train)

5.模型预测评估

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


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

6.完整代码

"""
新学
当数据部分有异常缺失时,我们可以用replace替换非nan值,然后删除有空值的数据
读取数据标签的三种方法

"""



import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression         #逻辑回归模型
from sklearn.preprocessing import StandardScaler            #标准化
from sklearn.model_selection import train_test_split        #数据分割
from sklearn.metrics import accuracy_score                  #模型评估

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


#2.数据预处理
#2.1将?转化为np.nan  参1:要被替换的值  参2:用来替换的值   参3:是否替换原数据,默认是False
data.replace('?',np.nan, inplace=True)
#2.2缺失值处理——》删除
data.dropna(axis=0, inplace=True)                           #axis=0,表示行,删除缺失值的行
#2.3打印处理后的信息
#data.info()


#3.特征工程(提取,预处理...)
#3.1特征提取之提取特征和标签
x = data.iloc[:, 1:-1]        #按照行号,列索获取数据,:表示所有行,1:-1表示第一列到最后一列(左闭右开)实际是第一列和倒数第二列
# y = data.iloc[:, -1]          #所有行,最后一列
# y = data['Class']             #获取最后一行,效果同上
y = data.Class                #效果同上
#3.2查看下特征和标签
print(x[:5])
print(y[:5])
print(x.shape,y.shape)
#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创建标准化对象
transform = StandardScaler()
#3.4.2对训练集进行标准化
x_train = transform.fit_transform(x_train)
#3.4.3对测试集进行标准化
x_test = transform.transform(x_test)

#4.模型训练
#4.1创建模型对象
estimator = LogisticRegression()
#4.2模型训练
estimator.fit(x_train,y_train)


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


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

#思考:逻辑回归是否能用准确率来评测
#答案:可以,但是结果不精准,应为逻辑回归模型主要用于二分类,即:A类还是B类,不能说97%的A类,3%的B类
#所以要通过 混淆矩阵来评测,即:精确率,召回率,F1值(F1—Score),ROC曲线,AUC值

三.总结

对于数据处理:对于缺失数据,进行剔除处理。加强了对于逻辑回归的学习和认识。

更多推荐