主要确定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))

速查表

参考

特征工程待完成

快速入门Sklearn的更多相关文章

  1. scikit-learn——快速入门

    scikit-learn——快速入门 sklearn 快速入门 环境: ubuntu 12.04, 64 bits python 2.7 sklearn 0.14 好几个月没有发博客了,平时的笔记都随 ...

  2. scikit-learn——快速入门 - daniel-D(转)

    ML sklearn快速入门 申明:该系列博客是学习 sklearn 的笔记,内容将涵盖大部分机器学习的方法.本人微博@迅猛龙Daniel,能力有限,存在任何问题,希望共同交流.该博客采用马克飞象专业 ...

  3. [阿里移动推荐算法]比赛_快速入门_4_19_update_仅供参考,思维不要受局限

    [这里只讲快速入门——即破题,正负样本不平衡.特征数量等问题就自己多看论文或者其他资料吧~~如果还有数据挖掘相关基础知识不了解的,建议看看<数据挖掘导论>] [以下是理解错误案例]:错误的 ...

  4. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...

  5. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

  6. 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)

    今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...

  7. 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  8. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  9. Mybatis框架 的快速入门

    MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...

随机推荐

  1. matplotlib 知识点13:绘制散点图(scatter函数精讲)

    散点图是指在回归分析中,数据点在直角坐标系平面上的分布图,散点图表示因变量随自变量而变化的大致趋势,据此可以选择合适的函数对数据点进行拟合. 用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间 ...

  2. Expert Python programming - Reading Notes

    1. MRO: method resolution order lookup order: L(MyClass) = [MyClass, merged(L(Base1), L(Base2), Base ...

  3. Android笔记--Bitmap

    Android | Bitmap解析 Android中Bitmap是对图像的一种抽象.通过他可以对相应的图像进行剪裁,旋转,压缩,缩放等操作.这里循序渐进的一步步了解Bitmap的相关内容. 先了解B ...

  4. 【Web应用-Kudu】Kudu 管理和诊断 azure web 应用

    Azure  Kudu是 GitHub 上的一个开源项目,Kudu 站点 (也称为网站控制管理 SCM) 提供了一系列的在线工具,可以帮助用户查看 web 应用的设置,诊断 web 应用,以及安装 w ...

  5. APP启动原理

    当我们点击一个应用的时候,系统会自动创建一个相应的activity类实例,然后执行Oncreate方法,接着会执行以下两行代码,解释如下: super.onCreate(savedInstanceSt ...

  6. Git服务器和Git权限管理应用GITLAB安装方法

    首先声明,本文使用的服务器是Centos 6.5,在其他版本的LINUX上运行不保证也是一样的效果. 顺便说下 来波点赞 来波收藏和推荐  有什么问题 我会一直关注评论的 想放一张最终图吧 其中主要涉 ...

  7. Ubuntu14.04 32位安装Youcompleteme

    前一段时间在ubuntu16.04 64位上安装了vim插件Youcompleteme,花了两三天才弄好.今天在ubuntu14.04 32位上安装同样的插件,才知道之前所做的安装原来是多么的简单.今 ...

  8. Android(java)学习笔记139:Android中Menu的使用(静态 和 动态)

    1. 使用xml定义Menu(静态方法) 菜单资源文件必须放在res/menu目录中.菜单资源文件必须使用<menu>标签作为根节点.除了<menu>标签外,还有另外两个标签用 ...

  9. CAD控件的超链接事件(网页版)

    _DMxDrawXEvents::HyperlinkClick 有超连接的实体被点击了. 参数 说明 IDispatch* pEntity IMxDrawEntity,被点击的实体 DOUBLE dX ...

  10. PAT (Basic Level) Practise (中文)-1029. 旧键盘(20)

    PAT (Basic Level) Practise (中文)-1029. 旧键盘(20) http://www.patest.cn/contests/pat-b-practise/1029 旧键盘上 ...