基于逻辑回归算法癌症症状预测分析

本文后面附有数据集

逻辑回归介绍

逻辑回归(Logistic Regression)是机器学习中的一种分类模型,虽然名字中带有回归, 就是因为它与回归之间有一定的联系。由于算法的简单和高效,在实际中应用非常广泛。

逻辑回归应用场景

##3 * 广告点击率 * 是否为垃圾邮件 * 是否患病 * 金融诈骗 * 虚假账号 通过上面的应用,我们可以发现其中的特点,那就是都属于两个类别之间的判断。逻辑回归 就是解决二分类问题的利器
在这里插入图片描述

数据准备

在这里插入图片描述
breast-cancer-wisconsin数据表部分
在这里插入图片描述

代码:

import pandas as  pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import  train_test_split#随机划分为训练子集和测试子集
from sklearn.preprocessing import StandardScaler#标准化处理
from sklearn.linear_model import LogisticRegression#逻辑回归分析
from sklearn.metrics import classification_report#分类评估报告API,显示主要分类指标的文本报告
from sklearn.metrics import roc_auc_score#计算AUG指标
"""
逻辑回归预测癌症案例分析
"""
#加载数据
data=pd.read_csv('./breast-cancer-wisconsin.data')
# print(data)
# print(data.shape)#(698, 11)
# print(data.describe())
#数据预处理
a=data.isnull().sum()
# print(a)#无缺失值

#异常值处理
data.replace('?',np.nan,inplace=True)
data.dropna(how='any',axis=0,inplace=True)
# print(data.shape)

#数据操作
#获取目标值和特征值
#这里一共11列将前10列当做特征值后几列当做目标值
x=data.iloc[:,1:10]
y=data.iloc[:,-1]

#随机划分为训练子集和测试子集,并返回划分好的训练集测试集样本和训练集测试集标签。
x_train,x_test,y_train,y_text=train_test_split(x,y,test_size=0.3)
#x_train训练集特征值
#y_train训练集目标值
#x_test测试集特征值
#y_text测试集目标值,真实值

#数据标准化处理
sd=StandardScaler()
sd.fit_transform(x_train,)
sd.fit_transform(x_test)

#进行逻辑回归预测
lr=LogisticRegression()
#训练数据
lr.fit(x_train,y_train)
#预测数据
y_predict=lr.predict(x_test)
#展示数据
# print('预测值:',y_predict)
# print('权重:',lr.coef_)
# print('偏置:',lr.intercept_)
# print('准确率:',lr.score(x_test,y_text))
#11. Class:  (2 for benign, 4 for malignant) #  类别:2为良性  4为恶性
"""
预测值: [2 2 4 2 4 2 2 4 4 2 4 2 4 2 4 2 2 4 2 2 2 4 2 2 2 2 4 2 4 2 4 2 2 4 2 2 2
 2 2 4 4 2 2 4 2 4 2 2 4 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 4 2 2 4 4 2 4 2 4 4
 2 4 2 4 2 4 2 2 4 2 4 2 2 2 2 4 2 2 2 4 4 4 2 2 2 2 2 2 2 2 2 2 2 2 4 2 2
 2 2 2 2 4 4 2 2 2 2 2 2 2 2 4 2 2 2 2 2 2 2 2 2 2 2 2 4 2 4 2 4 4 2 4 2 2
 4 2 2 2 4 4 2 4 2 2 2 2 2 4 4 2 2 2 2 4 4 4 4 2 2 4 4 4 2 2 2 2 4 2 2 2 4
 2 2 2 2 4 2 4 2 4 2 4 2 2 4 2 2 2 2 4 2]
权重: [[ 0.19929187  0.26384073  0.12864645  0.14809029 -0.08610739  0.35278616
   0.19476982  0.19479414  0.15775163]]
偏置: [-5.73110081]
准确率: 0.965853658537
"""
#以上数值会小幅度变动

#分类评估报告API
cf=classification_report(y_text,y_predict,labels=[2,4],target_names=['良性','恶性'])
# print(cf)
"""

             precision    recall  f1-score   support

         良性       0.98      0.96      0.97       141
         恶性       0.92      0.95      0.94        64

avg / total       0.96      0.96      0.96       205"""

#计算AUC指标
#样本均衡不需要计算AUC
#2 代表良性  4 代表恶性
## 0.5~1 之间,越接近于 1 约好
y_text=np.where(y_text>2.5,1,0)
print(y_text)
ret=roc_auc_score(y_text,y_predict)
print(ret)
"""
[0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0
 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0
 0 0 0 0 1 0 0 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 1 0 0 1 1 0
 1 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0
 1 1 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 1 1 0 1 0 1 0 1 0 0
 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0]
0.966992271361

"""

数据集

建议csv格式打开
breast-cancer-wisconsin.data

1000025,5,1,1,1,2,1,3,1,1,2
1002945,5,4,4,5,7,10,3,2,1,2
1015425,3,1,1,1,2,2,3,1,1,2
1016277,6,8,8,1,3,4,3,7,1,2
1017023,4,1,1,3,2,1,3,1,1,2
1017122,8,10,10,8,7,10,9,7,1,4
1018099,1,1,1,1,2,10,3,1,1,2
1018561,2,1,2,1,2,1,3,1,1,2
1033078,2,1,1,1,2,1,1,1,5,2
1033078,4,2,1,1,2,1,2,1,1,2
1035283,1,1,1,1,1,1,3,1,1,2
1036172,2,1,1,1,2,1,2,1,1,2
1041801,5,3,3,3,2,3,4,4,1,4
1043999,1,1,1,1,2,3,3,1,1,2
1044572,8,7,5,10,7,9,5,5,4,4
1047630,7,4,6,4,6,1,4,3,1,4
1048672,4,1,1,1,2,1,2,1,1,2
1049815,4,1,1,1,2,1,3,1,1,2
1050670,10,7,7,6,4,10,4,1,2,4
1050718,6,1,1,1,2,1,3,1,1,2
1054590,7,3,2,10,5,10,5,4,4,4
1054593,10,5,5,3,6,7,7,10,1,4
1056784,3,1,1,1,2,1,2,1,1,2
1057013,8,4,5,1,2,?,7,3,1,4
1059552,1,1,1,1,2,1,3,1,1,2
1065726,5,2,3,4,2,7,3,6,1,4
1066373,3,2,1,1,1,1,2,1,1,2
1066979,5,1,1,1,2,1,2,1,1,2
1067444,2,1,1,1,2,1,2,1,1,2
1070935,1,1,3,1,2,1,1,1,1,2
1070935,3,1,1,1,1,1,2,1,1,2
1071760,2,1,1,1,2,1,3,1,1,2
1072179,10,7,7,3,8,5,7,4,3,4
1074610,2,1,1,2,2,1,3,1,1,2
1075123,3,1,2,1,2,1,2,1,1,2
1079304,2,1,1,1,2,1,2,1,1,2
1080185,10,10,10,8,6,1,8,9,1,4
1081791,6,2,1,1,1,1,7,1,1,2
1084584,5,4,4,9,2,10,5,6,1,4
1091262,2,5,3,3,6,7,7,5,1,4
1096800,6,6,6,9,6,?,7,8,1,2
1099510,10,4,3,1,3,3,6,5,2,4
1100524,6,10,10,2,8,10,7,3,3,4
1102573,5,6,5,6,10,1,3,1,1,4
1103608,10,10,10,4,8,1,8,10,1,4
1103722,1,1,1,1,2,1,2,1,2,2
1105257,3,7,7,4,4,9,4,8,1,4
1105524,1,1,1,1,2,1,2,1,1,2
1106095,4,1,1,3,2,1,3,1,1,2
1106829,7,8,7,2,4,8,3,8,2,4
1108370,9,5,8,1,2,3,2,1,5,4
1108449,5,3,3,4,2,4,3,4,1,4
1110102,10,3,6,2,3,5,4,10,2,4
1110503,5,5,5,8,10,8,7,3,7,4
1110524,10,5,5,6,8,8,7,1,1,4
1111249,10,6,6,3,4,5,3,6,1,4
1112209,8,10,10,1,3,6,3,9,1,4
1113038,8,2,4,1,5,1,5,4,4,4
1113483,5,2,3,1,6,10,5,1,1,4
1113906,9,5,5,2,2,2,5,1,1,4
1115282,5,3,5,5,3,3,4,10,1,4
1115293,1,1,1,1,2,2,2,1,1,2
1116116,9,10,10,1,10,8,3,3,1,4
1116132,6,3,4,1,5,2,3,9,1,4
1116192,1,1,1,1,2,1,2,1,1,2
1116998,10,4,2,1,3,2,4,3,10,4
1117152,4,1,1,1,2,1,3,1,1,2
1118039,5,3,4,1,8,10,4,9,1,4
1120559,8,3,8,3,4,9,8,9,8,4
1121732,1,1,1,1,2,1,3,2,1,2
1121919,5,1,3,1,2,1,2,1,1,2
1123061,6,10,2,8,10,2,7,8,10,4
1124651,1,3,3,2,2,1,7,2,1,2
1125035,9,4,5,10,6,10,4,8,1,4
1126417,10,6,4,1,3,4,3,2,3,4
1131294,1,1,2,1,2,2,4,2,1,2
1132347,1,1,4,1,2,1,2,1,1,2
1133041,5,3,1,2,2,1,2,1,1,2
1133136,3,1,1,1,2,3,3,1,1,2
1136142,2,1,1,1,3,1,2,1,1,2
1137156,2,2,2,1,1,1,7,1,1,2
1143978,4,1,1,2,2,1,2,1,1,2
1143978,5,2,1,1,2,1,3,1,1,2
1147044,3,1,1,1,2,2,7,1,1,2
11

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小争520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值