KNN(K近邻)实现分类

 邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。

kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 kNN方法在类别决策时,只与极少量的相邻样本有关。

import numpy as np
from sklearn import neighbors
from sklearn.externals import joblib
import time
time1=time.time()
#取得knn分类器
clf = neighbors.KNeighborsClassifier()

#data对应着数量和总价
data = np.array([[3,104],[2,100],[1,81],[101,10],[99,5],[98,2]])

#labels则是对应单价便宜(以1代替)和单价昂贵(以2代替)
labels = np.array([1,1,1,2,2,2])

#导入数据进行训练
clf.fit(data,labels)

#进行预测测试
print(clf.predict([[18,90]]))
print('*'*50)
#储存模型
joblib.dump(clf, "1.knn_model.m")

#导入已储存的模型进行预测
clf1 = joblib.load("1.knn_model.m")
print(clf1.predict([[20,0]]))

time2=time.time()
print('整个过程耗时:{}'.format(time1-time2))

以上代码是一个简单的实现预测,根据数量、总价预测单价是便宜还是贵的情景。

备注:1.K近邻分类器KNeighborsClassifier()在在机器学习包sklearn.neighbors中。

           2.通过joblib的dump可以将模型保存到本地,clf是训练的分类器;通过joblib的load方法,加载保存的模型。

 

猜你喜欢

转载自blog.csdn.net/jn10010537/article/details/82888256