One - One Code All

Blog Content

sklearn入门之knn算法

机器学习   2013-05-12 22:03:37

一、选择模型流程

直接借用Sklearn 官网流程图,蓝色圆圈内是判断条件,绿色方框内是可以选择的算法:

sklearn_model_select.png

从 START 开始,首先看数据的样本是否 >50,小于则需要收集更多的数据。

由图中,可以看到算法有四类,分类,回归,聚类,降维。

其中 分类和回归是监督式学习,即每个数据对应一个 label。

聚类 是非监督式学习,即没有 label。

另外一类是 降维,当数据集有很多很多属性的时候,可以通过 降维 算法把属性归纳起来。例如 20 个属性只变成 2 个,注意,这不是挑出 2 个,而是压缩成为 2 个,它们集合了 20 个属性的所有特征,相当于把重要的信息提取的更好,不重要的信息就不要了。


然后看问题属于哪一类问题,是分类还是回归,还是聚类,就选择相应的算法。

当然还要考虑数据的大小,例如 100K 是一个阈值。


可以发现有些方法是既可以作为分类,也可以作为回归,例如 SGD。


二、应用模型

Sklearn 把所有机器学习的模式整合统一起来了,学会了一个模式就可以通吃其他不同类型的学习模式。

使用模型的步骤:

导入模块-创建数据-建立模型-训练-预测。


实例:用 分类器 去把Sklearn 自带的Iris数据中的四种类型的花分开。这种花有四个属性,花瓣的长宽,茎的长宽,根据这些属性把花分为三类。

今天用 KNN classifier,就是选择几个临近点,综合它们做个平均来作为预测值。

import numpy as np
from sklearn import datasets
from sklearn.cross_validation import train_test_split
from sklearn.neighbors import KNeighborsClassifier

iris=datasets.load_iris()
iris_X=iris.data  # 属性
iris_y=iris.target # 标签

# 输出数据的前2行,
print(iris_X[:2,:]) # X 有四个属性
head2 = iris_X[:2,:]
print(head2)
print(iris_y)  # y 有 0,1,2 三类

#把数据集分为训练集和测试集两个部分一部分是训练集,一部分是测试集,其中测试集占了30%
X_train,X_test,y_train,y_test=train_test_split(iris_X,iris_y,test_size=0.3)    
print(y_train)

knn=KNeighborsClassifier() # 定义模型
knn.fit(X_train,y_train) # 用 fit 来训练 training data,这一步就完成了训练的所有步骤,
print(knn.predict(X_test)) # knn 就已经是训练好的模型,可以直接用来 predict 测试集的数据,
print(y_test)



上一篇:sklearn机器学习流程
下一篇:sklearn学习之svm

The minute you think of giving up, think of the reason why you held on so long.