最近看了机器学习实战这本书,第一个机器算法就是kNN,理论看起来很简单,但实现起来还需要一定的pthon基本功
第一步:就需要自己创造一个假数据,最好是浮点的:
一个是:selfData = np.random.uniform(1,9) #这个是弄一个浮点随机数出来,后面可以用for循环获得你要的矩阵
二是:np.random.random(a)*x #这个是一次性获得0-1之间的小数,在乘以x,扩大
第二步才是分类
打字好麻烦,直接发图片
import numpy as np
import matplotlib.pyplot as plt
import random
import math
from collections import Counter
def creatData():
np.random.seed()
y = [ random.uniform(1,9) for i in range(20)]
x = [0,0,0,0,0,1,1,1,1,1]
copx = np.array(x)
copy = np.array(y).reshape(10,2)
return copx,copy
def classifier(k,copx,copy,x1):
distances = np.sqrt(np.sum((copy-x1)**2,axis = 1))
index = np.argsort(distances)
nestIndex = [copx[i] for i in index[:k]]
votex = Counter(nestIndex)
result = votex.most_common(1)[0][0]
return result
if __name__ == '__main__':
copx,copy = creatData()
x1 = ([5,5])
k = 3
resultA = classifier(k,copx,copy,x1)
print(resultA)
plt.scatter(copy[copx == 0,0],copy[copx == 0,1],color = 'r')
plt.scatter(copy[copx == 1,0],copy[copx == 1,1],color = 'b')
plt.scatter(x1[0],x1[1],color = 'g')
plt.show()