Python kNN算法简单记录

2019-07-05  本文已影响0人  ATSTAKE

最近看了机器学习实战这本书,第一个机器算法就是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()

上一篇 下一篇

猜你喜欢

热点阅读