快速入门Sklearn

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

速查表

参考

特征工程待完成

posted @ 2018-05-31 22:28  NeverMoes  阅读(1083)  评论(0编辑  收藏  举报