1.首先从图片的角度,对机器学习算法、实战有一个全面而感性的认识。
1.1 机器学习算法思维导图

1.2 监督学习经典模型树状图

1.3 Scikit-learn工具包使用网状图

1.4 监督学习流程图


2.剖析监督学习流程图的每一个步骤(by code)。
2.1 原始数据收集
(1)导入本地数据:

import pandas as pd
train = pd.read_csv('../Breast-Cancer/breast-cancer-train.csv')
test = pd.read_csv('../Breast-Cancer/breast-cancer-test.csv')

(2)在线获取数据

import pandas as pd
titanic = pd.read_csv('http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt')

(3)导入sklearn模块自带的数据集

from sklearn.datasets import load_boston,load_digits,fetch_20newsgroups
boston = load_boston()
#查看数据说明(DESCR)
print boston.DESCRdigits = load_digits()
#查看数据规模和特征维度
print digits.data.shape#与之前预存的数据不同,fetch_20newsgroups需要即时从互联网下载数据
news=fetch_20newsgroups(subset='all')
#查验数据规模和细节
print len(news.data)
print news.data[0]

2.2 数据预处理

  • 处理缺失数据

(1)泰坦尼克号乘客数据中,对缺失的乘客年龄进行处理

#这里是先完成了特征提取,然后再处理的 missing data
X['age'].fillna(X['age'].mean(),inplace=True)

(2)在肿瘤分类任务中,将原始数据数据缺失值进行处理

#将?替换为标准缺失值
data = data.replace(to_replace='?',value=np.nan)
#丢失带有缺失值的数据(只要有一个纬度缺失就舍弃)
data = data.dropna(how='any')
  • 特征提取(选取数据样本中的重要特征)

(1)泰坦尼克号乘客数据中,选取对结果影响比较大的几个特征组成数据样本X,y

X = titanic[['pclass','sex','age']]
y = titanic['survived']

(2)手写体数字图像的数据,利用数据的维度,获取X,y

X_train = digits_train[np.arange(64)]
y_train = digits_train[64]
X_test = digits_test[np.arange(64)]
y_test = digits_test[64]

2.3 采样(数据分割)

from sklearn.cross_validation import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=33)

2.4 数据进一步预处理

  • 特征抽取(将原始数据转化为特征向量的形式)
#1.用CountVectorizer提取特征(词袋法)
from sklearn.feature_extraction.text import CountVectorizer
count_vec=CountVectorizer()
X_count_train = count_vec.fit_transform(X_train)
X_count_test = count_vec.transform(X_test)#2.用TfidfVectorizer提取特征
from sklearn.feature_extraction.text import TfidfVectorizer
tfidf_vec = TfidfVectorizer()
X_tfidf_train = tfidf_vec.fit_transform(X_train)
X_tfidf_test = tfidf_vec.transform(X_test)#3.使用DictVectorizer将类别型特征转换成0/1型
from sklearn.feature_extraction import DictVectorizer
#sparse=False指不用稀疏矩阵表示
vec = DictVectorizer(sparse=False)
#转换特征之后,我们发现凡是类别型的特征都单独剥离出来,独自构成一列特征,数值型特征则保持不变,如sex分割成'sex=female', 'sex=male'两列
X_train = vec.fit_transform(X_train.to_dict(orient='record'))
X_test = vec.fit_transform(X_test.to_dict(orient='record'))
  • 特征筛选(在高维度、已量化的特征向量中选择更有效的特征组合)
# 从sklearn导入特征筛选器
from sklearn import feature_selection
# 筛选特征向量表现最好的前20%个特征,使用相同配置的决策树模型进行预测,并且评估性能
fs = feature_selection.SelectPercentile(feature_selection.chi2,percentile=20)
#注意此处的fit_transform参数,是两个值,不再只是X_train
X_train_fs = fs.fit_transform(X_train,y_train)
  • 特征标准化(使得预测结果不会被某些维度过大的特征值所主导)
from sklearn.preprocessing import StandardScaler
ss=StandardScaler()
#注意,X_train与X_test的标准化方法不同
X_train = ss.fit_transform(X_train)
X_test = ss.transform(X_test)
  • 特征降维(将高维度的特征空间映射到低维度的空间,尽可能的保证数据的多样性)
from sklearn.decomposition import PCA
#初始化一个可以将高维度的特征向量(64维)压缩至两个维度的PCA
estimator = PCA(n_components=2)
X_pca = estimator.fit_transform(X_digits)

2.5 学习算法训练

#1.线性分类器模型训练
from sklearn.linear_model import LogisticRegression,SGDClassifier
lr=LogisticRegression()
lr.fit(X_train,y_train)
sgdc=SGDClassifier()
sgdc.fit(X_train,y_train)#2.使用kernel='linear'配置的SVC模型训练
from sklearn.svm import SVC
linear_svc = SVC(kernel='linear')
linear_svc.fit(X_train,y_train)#3.朴素贝叶斯模型训练
from sklearn.naive_bayes import MultinomialNB
mnb = MultinomialNB()
mnb.fit(X_train,y_train)#4.K近邻(回归)模型训练
from sklearn.neighbors import KNeighborsClassifier
knc = KNeighborsClassifier()
knc.fit(X_train,y_train)#5.决策树分类器模型训练
from sklearn.tree import DecisionTreeClassifier
dtc = DecisionTreeClassifier()
dtc.fit(X_train,y_train)#6.集成模型(分类)训练
from sklearn.ensemble import RandomForestClassifier
rfc = RandomForestClassifier()
rfc.fit(X_train,y_train)from sklearn.ensemble import GradientBoostingClassifier
gbc = GradientBoostingClassifier()
gbc.fit(X_train,y_train)······

2.6 超参数优化 (模型配置,我们一般统称为模型的超参数)

#以下给出一个超参数搜索的例子,返回模型性能最好的超参数
from sklearn.pipeline import Pipeline
clf = Pipeline([('vect',TfidfVectorizer(stop_words='english',analyzer='word')),('svc',SVC())])
parameters = {'svc__gamma':np.logspace(-2,1,4),'svc__C':np.logspace(-1,1,3)}
from sklearn.grid_search import GridSearchCV
gs = GridSearchCV(clf,parameters,verbose=2,refit=True,cv=3)
#执行单线程网格搜索
gs.fit(X_train,y_train)
print gs.best_params_,gs.best_score_

2.7 后期处理

  • 性能评估

(1)分类模型评估:

#使用sklearn.metrics中的classification_report模块对肿瘤预测模型的性能进行分析
from sklearn.metrics import classification_report
#1.使用逻辑回归模型自带的评分函数score获得模型在测试集上对准确性结果
print 'Accuracy Of LR:',lr.score(X_test,y_test)
#利用classification_report模块获得LR的其他三个指标(pression,recall,f1 score)
print classification_report(y_test,lr_y_predict,target_names=['Bebign','Malignat'])
#2.使用SGD模型自带的评分函数score获得模型在测试集上的准确性结果
print 'Accuracy Of SGD:',sgdc.score(X_test,y_test)
#利用classification_report模块获得LR的其他三个指标(pression,recall,f1 score)
print classification_report(y_test,sgdc_y_predict,target_names=['Bebign','Malignat'])

(2)回归模型评估:

#使用SGDRegressor自带的评估模块,并输出评估结果
print 'the value of default measurement of SGDR:',sgdr.score(X_test,y_test)
from sklearn.metrics import r2_score,mean_squared_error,mean_absolute_error
print 'the value of R-squared of SGDR is',r2_score(y_test,sgdr_y_predict)
print 'the MSE of SGDR is',mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(sgdr_y_predict))
print 'the MAE of SGDR is',mean_absolute_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(sgdr_y_predict))
#回归模型自带的评估结果与r2_score的值是一样的,推荐使用第一种方式
  • 模型选择
    通过交叉验证的方式,选择性能表现最稳定,预测准确性最好的模型。

2.8 选定最终的分类/回归模型
2.9 将交叉验证后,性能表现最好的几个模型,放在测试集上评估
2.10在测试集上,表现最佳的模型,用来预测未知新数据

《机器学习实战》完整总结相关推荐

  1. spark python教程_Python Spark 2.0 Hadoop机器学习与大数据实战 完整pdf_IT教程网

    资源名称:Python Spark 2.0 Hadoop机器学习与大数据实战 完整pdf 第1章 Python Spark机器学习与Hadoop大数据 1 第2章 VirtualBox虚拟机软件的安装 ...

  2. 机器学习实战——分类及性能测量完整案例(建议收藏慢慢品)

    文章目录 1. 获取数据 2. 训练二元分类器 3. 性能测量 3.1 交叉验证测量准确率 3.2 混淆矩阵 3.3 精度和召回率 3.4 F1F_1F1​分数 3.5 精度/召回率权衡 3.6 RO ...

  3. 机器学习实战 —— 决策树(完整代码)

    声明: 此笔记是学习<机器学习实战> -- Peter Harrington 上的实例并结合西瓜书上的理论知识来完成,使用Python3 ,会与书上一些地方不一样. 机器学习实战-- 决策 ...

  4. 资料分享:送你一本《机器学习实战》电子书!

    这两天,各985高校发布了考研初试分数线.从中发现这两年大数据相关专业的分数线暴涨啊.没有400分估计心里都没底啊.可见大数据这个领域有多火爆!而机器学习是我们团队的一个主要方向,新加入的同学通常都是 ...

  5. python机器学习实战(一)

    原文链接:www.cnblogs.com/fydeblog/p/7140974.html 前言 这篇notebook是关于机器学习中监督学习的k近邻算法,将介绍2个实例,分别是使用k-近邻算法改进约会 ...

  6. 机器学习实战之SVM

    一引言: 支持向量机这部分确实很多,想要真正的去理解它,不仅仅知道理论,还要进行相关的代码编写和测试,二者想和结合,才能更好的帮助我们理解SVM这一非常优秀的分类算法 支持向量机是一种二类分类算法,假 ...

  7. 《机器学习实战》chapter02 K-近邻算法(KNN)

    2.2 示例:使用K-近邻算法改进约会网站的配结果 收集数据:提供文本文件 准备数据:使用Python解析文本文件(文本转numpy矩阵.归一化数据等) 分析数据:使用Matplotlib画二维扩散图 ...

  8. 疯狂的机器学习实战-银行营销预测

    机器学习实战-银行营销预测 问题: 数据集: 链接:https://pan.baidu.com/s/1TUOLr8jFbT38p_iUh1iBsQ 提取码:1234 银行营销数据集 这些数据与葡萄牙银 ...

  9. 机器学习实战 | SKLearn最全应用指南

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  10. 机器学习实战 基于_机器学习实战:基于Scikit-Learn和TensorFlow—第四章笔记

    机器学习实战:基于Scikit-Learn和TensorFlow---第四章笔记 一.学习目标 之前用了那么多的机器学习的模型,但是它们各自的训练算法在很大程度上还是一个黑匣子,我们对对系统内部的实现 ...

最新文章

  1. NeurIPS 2020 | 没有乘法的神经网络,照样起飞?
  2. Java并发编程之堵塞队列介绍以及SkipList(跳表)
  3. 树莓派-解决apt-get upgrade速度慢的方法[更换阿里云源]
  4. 语言学博士、Kaggle数据分析师,她说:读研不是必选项,这4项技能学校不教
  5. java单线程共享,「Java并发编程实战」之对象的共享
  6. [渝粤教育] 中国地质大学 电路理论(新) 复习题
  7. IOS文件操作(NSFileManager)
  8. SAPscript Forms 教程
  9. 美团一站式机器学习平台
  10. 10个超实用的微信小程序 | 值得推荐的微信小程序
  11. 抖音seo源码系统开发@抖音小程序挂载能力实现技术搭建
  12. 什么是RESTful风格的API设计?
  13. C语言 查找书籍(结构体)
  14. 论文笔记(五)FWENet:基于SAR图像的洪水水体提取深度卷积神经网络(CVPR)
  15. android 清理系统缓存文件怎么恢复,文件过期或已被清理怎么恢复(微信如何恢复已清理文件)...
  16. 区块链基本概念学习笔记
  17. SM4国密算法实现分析
  18. 学习笔记-python数据分析-环境配置
  19. 快速创建属于自己的GitHub仓库
  20. seresnet50训练自己的数据集_SSD框架训练自己的数据集

热门文章

  1. linux一键ghost,linux 下一键 Ghost
  2. 图像压缩编码码matlab实现——DM编码
  3. python培训教程 ppt
  4. java 报异常_java 报异常
  5. 成都信息工程大学 809 软件工程导论简答题必背
  6. flash倒计时制作
  7. TFTP协议下载服务器指定文件夹内的图片
  8. 新萝卜家园 Ghost XP SP3 电脑城装机专用版 10.5
  9. html flsh 特效,FLASH教程:开花的特效Flash实例
  10. 破解Prezi桌面版30天限制的方法