线性分类器:一种假设特征与分类结果存在线性关系的模型。该模型通过累加计算每个维度的特征与各自权重的乘积来帮助决策。

# 导入pandas与numpy工具包。

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

# 使用sklearn.cross_valiation里的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)

# 从sklearn.preprocessing里导入StandardScaler。

from sklearn.preprocessing import StandardScaler

# 从sklearn.linear_model里导入LogisticRegression与SGDClassifier。

from sklearn.linear_model import LogisticRegression

from sklearn.linear_model import SGDClassifier

# 标准化数据,保证每个维度的特征数据方差为1,均值为0。使得预测结果不会被某些维度过大的特征值而主导。

ss = StandardScaler()

X_train = ss.fit_transform(X_train)

X_test = ss.transform(X_test)

# 初始化LogisticRegression与SGDClassifier。

lr = LogisticRegression()

sgdc = SGDClassifier()

# 调用LogisticRegression中的fit函数/模块用来训练模型参数。

lr.fit(X_train, y_train)

# 使用训练好的模型lr对X_test进行预测,结果储存在变量lr_y_predict中。

lr_y_predict = lr.predict(X_test)

# 调用SGDClassifier中的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模块获得LogisticRegression其他三个指标的结果。

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模块获得SGDClassifier其他三个指标的结果。

print (classification_report(y_test, sgdc_y_predict, target_names=['Benign', 'Malignant']))

LogisticRegression比SGDClassifier在测试集上有更高的准确性,因为Scikit—learn中用解析的方式计算LogisticRegression(用时长),而用梯度法估计SGDClassifier的参数(用时短),因此训练大规模数据10万量级以上建议用随机梯度算法对模型参数进行估计。

参考书籍:python机器学习及实践——从零开始通往Kaggle竞赛之路

机器学习之线性分类器(Linear Classifiers)——肿瘤预测实例的更多相关文章

  1. Python机器学习(基础篇---监督学习(线性分类器))

    监督学习经典模型 机器学习中的监督学习模型的任务重点在于,根据已有的经验知识对未知样本的目标/标记进行预测.根据目标预测变量的类型不同,我们把监督学习任务大体分为分类学习与回归预测两类.监督学习任务的 ...

  2. 机器学习之路: python k近邻分类器 KNeighborsClassifier 鸢尾花分类预测

    使用python语言 学习k近邻分类器的api 欢迎来到我的git查看源代码: https://github.com/linyi0604/MachineLearning from sklearn.da ...

  3. cs231n笔记 (一) 线性分类器

    Liner classifier 线性分类器用作图像分类主要有两部分组成:一个是假设函数, 它是原始图像数据到类别的映射.另一个是损失函数,该方法可转化为一个最优化问题,在最优化过程中,将通过更新假设 ...

  4. 菜鸟之路——机器学习之SVM分类器学习理解以及Python实现

    SVM分类器里面的东西好多呀,碾压前两个.怪不得称之为深度学习出现之前表现最好的算法. 今天学到的也应该只是冰山一角,懂了SVM的一些原理.还得继续深入学习理解呢. 一些关键词: 超平面(hyper ...

  5. SVM – 线性分类器

    感知机 要理解svm,首先要先讲一下感知机(Perceptron),感知机是线性分类器,他的目标就是通过寻找超平面实现对样本的分类:对于二维世界,就是找到一条线,三维世界就是找到一个面,多维世界就是要 ...

  6. 机器学习技法笔记(2)-Linear SVM

    从这一节开始学习机器学习技法课程中的SVM, 这一节主要介绍标准形式的SVM: Linear SVM 引入SVM 首先回顾Percentron Learning Algrithm(感知器算法PLA)是 ...

  7. cs231n笔记:线性分类器

    cs231n线性分类器学习笔记,非完全翻译,根据自己的学习情况总结出的内容: 线性分类 本节介绍线性分类器,该方法可以自然延伸到神经网络和卷积神经网络中,这类方法主要有两部分组成,一个是评分函数(sc ...

  8. 1. cs231n k近邻和线性分类器 Image Classification

    第一节课大部分都是废话.第二节课的前面也都是废话. First classifier: Nearest Neighbor Classifier 在一定时间,我记住了输入的所有的图片.在再次输入一个图片 ...

  9. SVM中的线性分类器

    线性分类器: 首先给出一个非常非常简单的分类问题(线性可分),我们要用一条直线,将下图中黑色的点和白色的点分开,很显然,图上的这条直线就是我们要求的直线之一(可以有无数条这样的直线)     假如说, ...

随机推荐

  1. VCRuntime静默安装

    批处理脚本: "%~dp0\VC_X64Runtime\VC_x64Runtime.exe" /q"%~dp0\VC_X86Runtime\VC_X86Runtime.e ...

  2. Java基础之多线程简述

    首先,要辨析进程与线程的概念: 进程是程序执行的过程,它持有资源和线程,相对于程序本身而言具有动态性. 线程是系统中最小的执行单元,同一个进程中可能有多个线程,它们共享该进程持有的资源.线程的通信也称 ...

  3. 洛谷P1208 [USACO1.3]混合牛奶 Mixing Milk(贪心)

    题目描述 由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要.帮助Marry乳业找到最优的牛奶采购方案. Marry乳业从一些奶农手中采购牛奶,并且每一位奶农为乳制品加工企业提供的价格是 ...

  4. 【Oracle】手工建库启动到nomount状态时错误ORA-09925,ORA-01017

    配置好pfile和口令文件后启动数据库到nomount状态下出现错误: [oracle@localhost ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2 ...

  5. 小米 SOAR 开源SQL优化工具安装

    github :https://github.com/xiaomi/soar 安装说明 :https://github.com/XiaoMi/soar/blob/master/doc/install. ...

  6. 【技术累积】【点】【java】【8】maven常用命令(持续更新)

    建立 mvn archetype:generate -DgroupId=com.andy.test -DartifactId=test-project -Dversion=0.0.1-SNAPSHOT ...

  7. 克隆CentOS 6.9 配置静态IP,重启网络服务时报错

    克隆的CentOS 6.9 第一次开机时,VMware workstation会为新虚拟机自动生成新mac地址,导致虚拟机配置文件中mac地址与虚拟机新mac地址不一致. 解决方法:1. 修改网卡配置 ...

  8. vs code格式化代码快捷键

    windows:shift+alt+F ubuntu: ctrl+shift+i

  9. DNS解析过程详解(转载)

    DNS解析过程详解(转载) DNS Domain Name System 域名系统,它就是根据域名查出IP地址.    先说一下DNS的几个基本概念: 一. 根域 就是所谓的“.”,其实我们的网址ww ...

  10. Linux下挂载分区 (本人实例)

    设置分区开机自动挂载 要在/etc/fstab里设置一行 把上面空格去掉就行了