主要确定sklearn的基本流程,然后把sklearn当做螺丝刀来用就行了,需要什么查什么。

基本流程

首先我们回顾一下机器学习的基本流程:

  1. 特征工程,包括了数据清洗,数据标准版化,特征选取,特征降维
  2. 选取模型,这里还包括了,超参数确定
  3. 模型验证,利用各种不同指标对模型性能进行检验

这里有一个利用KNN进行分类的例子。

from sklearn import neighbors, datasets, preprocessing
from sklearn.cross_validation import train_test_split
from sklearn.metrics import accuracy_score
iris = datasets.load_iris() # 数据集加载
X, y = iris.data[:, :2], iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=33) # 训练集测试集切分
scaler = preprocessing.StandardScaler().fit(X_train) # 数据标准化处理
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
knn = neighbors.KNeighborsClassifier(n_neighbors=5) # 初始化一个空的模型
knn.fit(X_train, y_train) # 模型训练
y_pred = knn.predict(X_test)
accuracy_score(y_test, y_pred) # 计算准确率

特征工程

列举了一些数据预处理的用法。详细的特征工程处理请翻阅参考。

其他用法翻阅速查表。

归一化:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler().fit(X_train)
standardized_X = scaler.transform(X_train)
standardized_X_test = scaler.transform(X_test)

正则化:

from sklearn.preprocessing import Normalizer
scaler = Normalizer().fit(X_train)
normalized_X = scaler.transform(X_train)
normalized_X_test = scaler.transform(X_test)

模型选择



模型选择这里有一张速查表可以使用。

超参数

对于那些可以学习得到参数我们很好处理,那么那些不能通过学习的到参数的正确选择是非常困难的,也是确定模型最难的一步。

一种方法是使用超参数搜索:

import numpy as np
from sklearn.linear_model import Ridge
from sklearn.grid_search import GridSearchCV
# 设定不同超参数值
alphas = np.array([1,0.1,0.01,0.001,0.0001,0])
# 设定模型
model = Ridge()
grid = GridSearchCV(estimator=model, param_grid=dict(alpha=alphas))
grid.fit(X, y)
print(grid)
# 对超参数进行遍历,查看其表现
print(grid.best_score_)
print(grid.best_estimator_.alpha)

评估方法

对模型的评估基本都在sklearn.metrics包里面。

准确率:

# 模型自带
knn.score(X_test, y_test) # 导入metrics包
from sklearn.metrics import accuracy_score
accuracy_score(y_test, y_pred)

回归的f1等其他值。

from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred))

速查表

参考

特征工程待完成

最新文章

  1. Web前端温故知新-CSS基础
  2. Android开发-mac上使用三星S3做真机调试
  3. javaweb——Servlet作为控制器
  4. Anterior and posterior commissures
  5. SMO推导和代码-记录毕业论文4
  6. BuildFilePath 及打开文件对话框
  7. python——初识socket
  8. jenkins svn E175002错误
  9. [原]如何在Android用FFmpeg+SDL2.0解码图像线程
  10. 使用SQL*PLUS,构建完美excel或html输出
  11. mysql查询随机几条数据(速度快)
  12. 浅谈java的String字符串
  13. 利用Python循环(包括while&for)各种打印九九乘法表
  14. notify丢失、虚假唤醒
  15. 记录某公司(简称SMKJ) 的一次面试
  16. NFS服务器工作原理
  17. 《http权威指南》读书笔记4
  18. spring cloud 微服务日志跟踪 sleuth logback elk 整合
  19. 【Teradata Utility】系统工具使用
  20. 微信小程序滚动Tab选项卡:左右可滑动切换

热门文章

  1. B.出题人的女装
  2. 牛客练习赛42A(字符串)
  3. 洛谷 P4092 [HEOI2016/TJOI2016]树 || bzoj4551
  4. 利用HtmlParser解析网页内容
  5. (转)MySql的常用的语句
  6. Unity Shader入门精要学习笔记 - 第17章 Unity的表面着色器探秘
  7. 基于.NET网页开发的工作,需要掌握的知识点
  8. jquery.qrcode.min.js生成二维码
  9. 【排序】插入排序:最稳定:时间复杂度O(n^2)
  10. 在Windows笔记本上调试运行在iOS设备上的前端应用