机器学习之良/恶性乳腺癌肿瘤预测

知识点:

  逻辑斯蒂回归分类器

  训练数据集:https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data

数据预处理

打开ipython网页解释器

#导入模块
import pandas as pd
import numpy as np
#创建特征列表表头
column_names = [‘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‘,‘Class‘]
#使用pandas.read_csv函数从网上读取数据集
data = pd.read_csv(‘https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data‘,names=column_names)
#将?替换为标准缺失值表示
data = data.replace(to_replace=‘?‘,value = np.nan)
#丢弃带有缺失值的数据(只要有一个维度有缺失便丢弃)
data = data.dropna(how=‘any‘)
#查看data的数据量和维度
data.shape  

维度打印信息为:

  有683条数据,维度为11

如果用mac环境,在读取网络上数据集时候可能会报错,解决方案,打开Finder,找到python解释器,点击安装即可

  处理后数据集如下:

  由于原始数据没有提供对应的测试样本用于评估模型性能,这里对带标记的数据进行分割,25%作为测试集,其余作为训练集

#使用sklearn.cross_validation里的train_test_split模块分割数据集
from sklearn.cross_validation import train_test_split
#随机采样25%的数据用于测试,剩下的75%用于构建训练集
X_train,X_test,y_train,y_test = train_test_split(data[column_names[1:10]],data[column_names[10]],test_size = 0.25,random_state = 33)
#查看训练样本的数量和类别分布
y_train.value_counts()

#查看测试样本的数量和类别分布
y_test.value_counts()

  

建立模型,预测数据

#从sklearn.preprocessing导入StandardScaler
from sklearn.preprocessing import StandardScaler
#从sklearn.linear_model导入LogisticRegression(逻辑斯蒂回归)
from sklearn.linear_model import LogisticRegression
#从sklearn.linear_model导入SGDClassifier(随机梯度参数)
from sklearn.linear_model import SGDClassifier

#标准化数据,保证每个维度的特征数据方差为1,均值为,使得预测结果不会被某些过大的特征值而主导(在机器学习训练之前, 先对数据预先处理一下, 取值跨度大的特征数据, 我们浓缩一下, 跨度小的括展一下, 使得他们的跨度尽量统一.)
ss = StandardScaler()
X_train = ss.fit_transform(X_train)
X_test = ss.transform(X_test)

#初始化两种模型
lr = LogisticRegression()
sgdc = SGDClassifier()

#调用逻辑斯蒂回归,使用fit函数训练模型参数
lr.fit(X_train,y_train)#使用训练好的模型lr对x_test进行预测,结果储存在变量lr_y_predict中
lr_y_predict = lr.predict(X_test)

#调用随机梯度的fit函数训练模型
sgdc.fit(X_train,y_train)#使用训练好的模型sgdc对X_test进行预测,结果储存在变量sgdc_y_predict中
sgdc_y_predict = sgdc.predict(X_test)

  下面查看两种模型的预测结果

  使用线性分类模型从事良/恶性肿瘤预测任务的性能分析

#从sklearn.metrics导入classification_report
from sklearn.metrics import classification_report

#使用逻辑斯蒂回归模型自带的评分函数score获得模型在测试集上的准确性结果
print(‘Accuracy of LR Classifier:‘,lr.score(X_test,y_test))
#使用classification_report模块获得逻辑斯蒂模型其他三个指标的结果(召回率,精确率,调和平均数)
print(classification_report(y_test,lr_y_predict,target_names=[‘Benign‘,‘Malignant‘]))

  

#使用随机梯度下降模型自带的评分函数score获得模型在测试集上的准确性结果
print(‘Accuarcy of SGD Classifier:‘,sgdc.score(X_test,y_test))
##使用classification_report模块获得随机梯度下降模型其他三个指标的结果
print(classification_report(y_test,sgdc_y_predict,target_names=[‘Benign‘,‘Malignant‘]))

  结论:通过比较,逻辑斯蒂模型比随机梯度下降模型在测试集上表现有更高的准确性,因为逻辑斯蒂采用解析的方式精确计算模型参数,而随机梯度下降采用估计值

  特点分析:逻辑斯蒂对参数的计算采用精确解析的方法,计算时间长但是模型性能高,随机梯度下降采用随机梯度上升算法估计模型参数,计算时间短但产出的模型性能略低,一般而言,对于训练数据规模在10万量级以上的数据,考虑到时间的耗用,推荐使用随机梯度算法

  

  

时间: 2024-08-05 18:33:34

机器学习之良/恶性乳腺癌肿瘤预测的相关文章

【机器学习实践一】搭建心脏病预测案例

产品地址:https://data.aliyun.com/product/learn?spm=a21gt.99266.416540.102.OwEfx2 一.背景 心脏病是人类健康的头号杀手.全世界1/3的人口死亡是因心脏病引起的,而我国,每年有几十万人死于心脏病. 所以,如果可以通过提取人体相关的体侧指标,通过数据挖掘的方式来分析不同特征对于心脏病的影响,对于预测和预防心脏病将起到至关重要的作用.本文将会通过真实的数据,通过阿里云机器学习平台搭建心脏病预测案例. 二.数据集介绍 数据源: UC

机器学习之利用KNN近邻算法预测数据

前半部分是简介, 后半部分是案例 KNN近邻算法: 简单说就是采用测量不同特征值之间的距离方法进行分类(k-Nearest Neighbor,KNN) 优点: 精度高.对异常值不敏感.无数据输入假定 缺点:时间复杂度高.空间复杂度高 1.当样本不平衡时,比如一个类的样本容量很大,其他类的样本容量很小,输入一个样本的时候,K个临近值中大多数都是大样本容量的那个类,这时可能就会导致分类错误.改进方法是对K临近点进行加权,也就是距离近的点的权值大,距离远的点权值小. 2.计算量较大,每个待分类的样本都

机器学习之路: python 决策树分类 预测泰坦尼克号乘客是否幸存

使用python3 学习了决策树分类器的api 涉及到 特征的提取,数据类型保留,分类类型抽取出来新的类型 需要网上下载数据集,我把他们下载到了本地, 可以到我的git下载代码和数据集: https://github.com/linyi0604/MachineLearning 1 import pandas as pd 2 from sklearn.cross_validation import train_test_split 3 from sklearn.feature_extraction

威斯康星乳腺癌良性预测

一.获取数据 wget https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data 原始数据以逗号分隔: 各个列的属性: 1.Sample Code Number id number 2.Clump Thickness   1 - 10 肿块厚度 3.Uniformity Of Cell Size 1 - 10 细胞大小均一性 4.Un

基于python的机器学习实现日元币对人民币汇率预测

## 导入所需的包 import pandas as pd import numpy as np import matplotlib.pyplot as plt import tensorflow as tf tf.reset_default_graph() plt.rcParams['font.sans-serif'] = 'SimHei' ##设置字体为SimHei显示中文 plt.rcParams['axes.unicode_minus'] = False ##设置正常显示符号 ## 导入

项目二:使用机器学习(SVM)进行基因预测

参考链接: LIBSVM -- A Library for Support Vector Machines(本项目所用到的SVM包)   SVM SVM - 知乎精华 支持向量机请通俗介绍 高中文化 请看Coursera的ML视频,里面有SVM     基因注释 基因组注释介绍  注释四部分:重复序列:非编码RNA:基因结构:功能注释. 真核基因组注释方法与流程的文章 : A beginner's guide to eukaryotic genome annotation 基因组注释分析主要包括

《机器学习及实践--从零开始通往Kaggle竞赛之路》

<机器学习及实践--从零开始通往Kaggle竞赛之路> 在开始说之前一个很重要的Tip:电脑至少要求是64位的,这是我的痛. 断断续续花了个把月的时间把这本书过了一遍.这是一本非常适合基于python入门的机器学习入门的书籍,全书通俗易懂且有代码提供.书中源代码连接为Ipython环境.主页君使用的是pycharm,python2.7,具体安转过程书本写的很详细.码完书中代码,有一点点点小不符(或许可能是因为平台不一样),百度基本可以解决问题(有问题也可以留言探讨).贴一点代码,以示学习: 1

07 线性分类器(Linear Classifiers)

机器学习中监督学习模型的任务重点在于,根据已有经验知识对未知样本的目标/标记进行预测. 根据目标预测变量的类型不同,把监督学习任务大体分为分类学习与回归预测两类. 监督学习任务的基本架构和流程 首先准备训练数据,可以是文本.图像.音频等: 然后抽取所需要的特征,形成特征向量(Feature Vectors): 接着,把这些特征向量连同对应的标记/目标(Labels)一并送入学习算法(Machine Learning Algorithm)中,训练处一个预测模型(Predictive Model):

10 逻辑回归

10 逻辑回归 分类算法-逻辑回归 应用场景 (二分类) 广告点击率 (典型的二分类问题,点了或者没点,也能得出) 是否为垃圾邮件 是否患病 金融诈骗 虚假账号 逻辑回归定义 逻辑回归: 是一种分类算法,使用线性回归的式子作为输入,通过sigmoid函数转换为概率问题. sigmoid函数:1/(1+e^-x), 将输入值x,映射到(0,1), 与概率值联系起来 逻辑回归公式 线性回归的输入 --> sigmoid 转换 -->分类 [0,1] 概率值, 阈值一般取0.5 逻辑回归的损失函数.