目录

一:加载数据

二:数据集划分

三:选择算法

四:网格模型 超参调优

五:模型预测

六:模型保存和使用

七:完整源码分享

八:预测与实际比对


一:加载数据

from sklearn.datasets import load_breast_cancer# 加载肺癌数据
cancer_data = load_breast_cancer()
X = cancer_data.data
Y = cancer_data.target
print(X, X.shape)

提取特征数据,结果如下 

[[1.799e+01 1.038e+01 1.228e+02 ... 2.654e-01 4.601e-01 1.189e-01][2.057e+01 1.777e+01 1.329e+02 ... 1.860e-01 2.750e-01 8.902e-02][1.969e+01 2.125e+01 1.300e+02 ... 2.430e-01 3.613e-01 8.758e-02]...[1.660e+01 2.808e+01 1.083e+02 ... 1.418e-01 2.218e-01 7.820e-02][2.060e+01 2.933e+01 1.401e+02 ... 2.650e-01 4.087e-01 1.240e-01][7.760e+00 2.454e+01 4.792e+01 ... 0.000e+00 2.871e-01 7.039e-02]] (569, 30)
print(Y, Y.shape)

提取标签数据,结果如下,共2种结果为0和1 

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 0 1 0 0 1 1 1 1 0 1 0 0 1 1 1 1 0 1 0 01 0 1 0 0 1 1 1 0 0 1 0 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 1 1 0 1 1 0 1 11 1 1 1 1 1 0 0 0 1 0 0 1 1 1 0 0 1 0 1 0 0 1 0 0 1 1 0 1 1 0 1 1 1 1 0 11 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 0 0 1 1 0 0 1 1 1 1 0 1 1 0 0 0 1 01 0 1 1 1 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 1 1 0 0 1 11 0 1 1 1 1 1 0 0 1 1 0 1 1 0 0 1 0 1 1 1 1 0 1 1 1 1 1 0 1 0 0 0 0 0 0 00 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 11 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 0 1 1 1 1 0 0 0 1 11 1 0 1 0 1 0 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 00 1 0 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 11 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1 0 1 1 1 1 1 0 1 10 1 0 1 1 0 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 11 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 1 0 1 0 1 1 1 1 1 0 1 1 0 1 0 1 0 01 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 0 0 0 0 0 0 1] (569,)

二:数据集划分

# 数据划分
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.3, random_state=666)

数据集划分为训练集和测试集,比例设置 、随机划分数设置

三:选择算法

# 选择一个算法
# multi_class:多分类参数是在 二分类基础上进行
# OVR:一对多 把多元的转为二分类 有几个点就分几次处理 4特征
# OVO:一对一 把多元的转为更多的二分类,求概率,然后进行比较,求出最大的概率(耗时较多)
# penalty="l2":损失函数  penalty : {'l1', 'l2', 'elasticnet', 'none'}, default='l2'
# class_weight:权重      class_weight : dict or 'balanced', default=None
# solver:   {'newton-cg', 'lbfgs', 'liblinear', 'sag', 'saga'}, \
#             default='lbfgs'
model = LogisticRegression()
param_list = [{'penalty': ['l1', 'l2'],'class_weight': [None, 'balanced'],'solver': ['newton-cg', 'lbfgs', 'liblinear'],'multi_class': ['ovr']},{'penalty': ['l1', 'l2'],'class_weight': [None, 'balanced'],'solver': ['newton-cg', 'lbfgs', 'sag'],'multi_class': ['multinomial']}
]

penalty="l2":正则化防止过拟合 

solver:优化算法选择参数(在下一步中使用网格模型 得出超参数的最优解)

逻辑回归算法LogisticRegression,重要参数如下

 multi_class:多分类参数是在 二分类基础上进行
 OVR:一对多 把多元的转为二分类 有几个点就分几次处理 4特征
 OVO:一对一 把多元的转为更多的二分类,求概率,然后进行比较,求出最大的概率(耗时较多)
 penalty="l2":损失函数  penalty : {'l1', 'l2', 'elasticnet', 'none'}, default='l2'
 class_weight:权重      class_weight : dict or 'balanced', default=None
 solver:   {'newton-cg', 'lbfgs', 'liblinear', 'sag', 'saga'}, \
                  default='lbfgs'

四:网格模型 超参调优

# 网格算法
grid = GridSearchCV(model, param_grid=param_list, cv=10)
grid.fit(X_train, y_train)
print(grid.best_estimator_)
print(grid.best_params_)
print(grid.best_score_)

获取超参最优解,如下,模型评分值较高 

LogisticRegression(multi_class='multinomial', solver='newton-cg')
{'class_weight': None, 'multi_class': 'multinomial', 'penalty': 'l2', 'solver': 'newton-cg'}
0.9547435897435899

五:模型预测

# 预测模型
best_model = LogisticRegression(multi_class='multinomial', solver='newton-cg')
best_model.fit(X_train, y_train)
y_predict = best_model.predict(X_test)
print(y_predict == y_test)

如下,可以看出,预测结果大致效果还是不错的 

[ True  True  True  True  True  True  True  True  True  True  True  TrueTrue False  True  True  True  True  True  True  True  True  True  TrueTrue  True  True  True  True  True  True  True  True  True  True  TrueTrue  True  True  True  True  True  True  True  True  True  True  TrueTrue  True False  True  True  True  True  True False  True  True  TrueTrue  True False  True  True  True  True  True  True  True  True  TrueTrue  True False  True  True False  True  True  True  True  True  TrueTrue  True  True  True  True  True  True  True  True  True  True  TrueTrue  True  True  True  True  True  True  True  True  True  True  TrueTrue  True  True  True  True  True  True  True  True  True  True  TrueTrue  True  True False  True  True  True  True  True  True  True  TrueTrue  True  True  True  True  True  True  True  True  True False  TrueTrue  True  True  True  True  True  True  True  True  True  True  TrueTrue  True  True  True  True  True  True  True  True  True  True  TrueTrue  True  True]

六:模型保存和使用

# 模型保存
joblib.dump(value=best_model, filename='logisticCancer.model')# 模型使用
cancerModel = joblib.load('logisticCancer.model')

七:完整源码分享

from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.linear_model import LogisticRegression  # 逻辑回归算法
import joblib# 加载肺癌数据
cancer_data = load_breast_cancer()
X = cancer_data.data
Y = cancer_data.target
# print(X, X.shape)
# print(Y, Y.shape)# 数据划分
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.3, random_state=666)# 选择一个算法
# multi_class:多分类参数是在 二分类基础上进行
# OVR:一对多 把多元的转为二分类 有几个点就分几次处理 4特征
# OVO:一对一 把多元的转为更多的二分类,求概率,然后进行比较,求出最大的概率(耗时较多)
# penalty="l2":损失函数  penalty : {'l1', 'l2', 'elasticnet', 'none'}, default='l2'
# class_weight:权重      class_weight : dict or 'balanced', default=None
# solver:   {'newton-cg', 'lbfgs', 'liblinear', 'sag', 'saga'}, \
#             default='lbfgs'
model = LogisticRegression()
param_list = [{'penalty': ['l1', 'l2'],'class_weight': [None, 'balanced'],'solver': ['newton-cg', 'lbfgs', 'liblinear'],'multi_class': ['ovr']},{'penalty': ['l1', 'l2'],'class_weight': [None, 'balanced'],'solver': ['newton-cg', 'lbfgs', 'sag'],'multi_class': ['multinomial']}
]# 网格算法
# grid = GridSearchCV(model, param_grid=param_list, cv=10)
# grid.fit(X_train, y_train)
# print(grid.best_estimator_)
# print(grid.best_params_)
# print(grid.best_score_)# 预测模型
best_model = LogisticRegression(multi_class='multinomial', solver='newton-cg')
best_model.fit(X_train, y_train)
y_predict = best_model.predict(X_test)
print(y_predict == y_test)

模型预测,结果分析如下,准确率相对来说还是比较高的 

八:预测与实际比对

import pandas as pd

线性图 回归模型

import matplotlib.pyplot as plttest_pre = pd.DataFrame({"test": y_test.tolist(),"pre": y_predict.flatten()})
test_pre.plot(figsize=(18, 10))
plt.show()

点状图 回归模型

import matplotlib.pyplot as plt# 预测与实际
plt.scatter(y_test, y_predict, label="test")
plt.plot([y_test.min(), y_test.max()],[y_test.min(), y_test.max()],'k--',lw=3,label="predict")
plt.show()

有上面两图,分析得出,预测与实际的比对效果还是相当不错的

逻辑回归 预测癌症数据相关推荐

  1. 基于逻辑回归的癌症分类预测-良/恶性乳腺癌肿瘤预测及ROC曲线绘制

    逻辑回归 逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归.由于算法的简单和高效,在实际中应用非常广泛.逻辑回归是解决二分类问题 ...

  2. 使用逻辑回归对泰坦尼克号数据 生存死亡情况预测

    泰坦尼克号数据集介绍 Titanic数据集是非常适合数据科学和机器学习新手入门练习的数据集. 数据集为1912年泰坦尼克号沉船事件中一些船员的个人信息以及存活状况.这些历史数据已经非分为训练集和测试集 ...

  3. 基于逻辑回归的癌症分类预测-良/恶性乳腺癌肿瘤预测

    简介:逻辑回归是属于机器学习里面的监督学习,它是以回归的思想来解决分类问题的一种非常经典的二分类分类器. 流程分析: 获取数据 数据处理模块(处理缺失值) 数据集划分 特征工程(标准化) 逻辑回归预估 ...

  4. 【机器学习实战】利用sklearn中的逻辑回归对癌症分类预测-良/恶性乳腺癌肿瘤预测

    1. 数据集 数据下载地址:https://archive.ics.uci.edu/ml/machine-learning-databases/ 数据描述 (1)699条样本,共11列数据,第一列用语 ...

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

    本文后面附有数据集 逻辑回归介绍 逻辑回归(Logistic Regression)是机器学习中的一种分类模型,虽然名字中带有回归, 就是因为它与回归之间有一定的联系.由于算法的简单和高效,在实际中应 ...

  6. SAS 二元逻辑回归 预测下月是否会消费

    数据集来自 UCI UCI_Credit_Card.csv 数据集信息 此数据集包含有关2005年4月至2005年9月台湾地区信用卡客户的默认付款,人口统计因素,信用数据,付款历史和账单的信息. 内容 ...

  7. mllib逻辑回归 spark_大数据技术之Spark mllib 逻辑回归

    本篇教程探讨了大数据技术之Spark mllib 逻辑回归,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入. 逻辑回归 逻辑回归其实是一个分类算法而不是回归算法.通常是利用已知的 ...

  8. 【机器学习入门】(9) 逻辑回归算法:原理、精确率、召回率、实例应用(癌症病例预测)附python完整代码和数据集

    各位同学好,今天我和大家分享一下python机器学习中的逻辑回归算法.内容主要有: (1) 算法原理:(2) 精确率和召回率:(3) 实例应用--癌症病例预测. 文末有数据集和python完整代码 1 ...

  9. 使用python逻辑回归模型来进行nba竞赛数据预测球队胜率

    好的,我来为你介绍一下使用 Python 进行逻辑回归模型预测 NBA 竞赛数据中球队胜率的步骤. 首先,你需要准备训练数据.这些数据可能包含球队的历史胜率,球员数据,比赛场地等信息.你可以使用这些信 ...

最新文章

  1. 双目图像超分辨:现状、挑战与展望
  2. 网站优化排名提升不发愁,这几点你掌握了吗?
  3. 简约而不简单|值得收藏的Numpy小抄表(含主要语法、代码)
  4. Effective C++ 阅读笔记(一)透彻了解inline以及降低编译依存关系
  5. java 参数注入_Java通过反射,注入参数
  6. Hello Quartz (第一部分)
  7. Pandas 文本数据方法 is*()
  8. AI 开发者不容错过的 20 个机器学习和数据科学网站
  9. java 租房系统源码,JAVA房屋出租管理系统
  10. 遇到问题---hosts不起作用问题的解决方法
  11. 在deepin 上安装佳能MF 4700打印机驱动
  12. Python实战|「甜点消消」游戏数据分析过程
  13. CSS等高布局的7种方式
  14. vmware 桌面 服务器版,vmware云桌面软件服务器(vmware云桌面搭建教程)
  15. 最新表情包小程序+前后端去授权版/最火表情包小程序源码
  16. vue h5网页点击按钮 -- 跳到微信小程序 wx-open-launch-weapp;onMenuShareAppMessage 分享图片不显示,且方法已废弃
  17. Golang 多版本管理神器 gvm
  18. 基于卷积神经网络的句子分类模型【经典卷积分类附源码链接】
  19. 谁说计算机专业只能去互联网敲代码?国企,公务员,产品经理照样很香|应届生求职指南
  20. 在线表格编辑插件handsontable使用

热门文章

  1. 双倍余额递减法和年数总和法计提折旧的公式及方法
  2. 弄清Flink1.8的远程过程调用(RPC)
  3. 科普 | 什么是贴片电阻?
  4. C# Winfrom 自定义控件——带图片的TextBox
  5. oracle10创建实例表空间,解析oracle 10g示例方案创建过程
  6. 分割为mesh之后的地形shader编写——2
  7. sql -- 查找电话相同的人的姓名
  8. 智能综合布线管理软件实现机房配线可视化管理
  9. 群晖用docker安装花生壳
  10. NHK Easy News 翻译 12月19日