KNN

整体思想:计算一个点A与其它点之间的距离,取出与该点最近的k个点,然后统计这k个点里面所属分类比例最大的,则A点属于该分类。

k值的选取需要考虑实际情况,没有万能的算法,只有在一定使用环境下最优的算法。

从训练集中找到与新数据最接近的K条记录,然后根据它们的主要分类来决定新数据的类别。算法中涉及的3主要因素:训练集、距离或相似的衡量、k的大小。


计算step:

step1:算距离,给定测试对象,计算它与训练集中的每个对象的距离

step2:找邻居,圈定距离最近的k个训练对象,作为测试对象的近邻

step3:做分类,根据这k个近邻归属的主要类别,确定对测试对象的分类


example:

import numpy as np

from sklearn import neighbors

knn=neighbors.KNeighborsClassifier()

data=np.array([[3,104],[2,100],[1,81],[101,10],[99,5],[98,2]])

labels=np.array([1,1,1,2,2,2])

knn.fit(data,labels)

knn.predict([[18,90]]) #if it is ([18,90]), there is a ValueError. 


具体实现见anaconda练习文件。

#-*- coding:utf-8 -*-
from sklearn import datasets
from sklearn .neighbors import KNeighborsClassifier
import numpy as np
np.random.seed(0)
iris=datasets.load_iris()
iris_x=iris.data
iris_y=iris.target
indices=np.random.permutation(len(iris_x))
iris_x_train=iris_x[indices[:-10]]
iris_y_train=iris_y[indices[:-10]]
iris_x_test=iris_x[indices[-10:]]
iris_y_test=iris_y[indices[-10:]]
knn=KNeighborsClassifier()
knn.fit(iris_x_train,iris_y_train)
iris_y_predict=knn.predict(iris_x_test)
probability=knn.predict_proba(iris_x_test)
neighborpoint=knn.kneighbors([iris_x_test[-1]],5,False)  #[[]]
score=knn.score(iris_x_test,iris_y_test,sample_weight=None)
print('iris_y_predict=')
print(iris_y_predict)
print('accuracy',score)
print('neighborpoint of last test sample',neighborpoint)

print('probability:',probability)

转自https://blog.csdn.net/HeatDeath/article/details/78042186


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值