自己实现的简易的knn算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自己实现的简易的knn算法相关的知识,希望对你有一定的参考价值。

程序代码:

import csv
import random
import operator
import math
import matplotlib.pyplot as plt

#计算距离的函数
def getdistance(testIntance,trainInstance):

    length=len(testIntance)
    distance=0
    # 这个循环只能取到数字
    for i in range(length):
        testInstance1=float(testInstance[i])
        trainInstance1=float(trainInstance[i])
        distance+=(pow((testInstance1-trainInstance1),2))
    # print(distance)
    return math.sqrt(distance)

#读文件
with open(r‘b.txt‘,‘rt‘) as f:
    lines=csv.reader(f)
    dataSet=list(lines)

#测试点
testInstance=[5,5]

distances=[]
for i in range(len(dataSet)):
    dist=getdistance(testInstance,dataSet[i])
    distances.append((dataSet[i],dist))
# 到这里的distances是带有坐标和各个点与待测点距离的列表了
# print(distances)
# 这里采用寻找离他最近的4个样本,然后统计
# 排序操作
distances.sort(key=operator.itemgetter(1))

# 对排序后的前k个值进行种类统计na
tj={}
for i in range(5):
    result=distances[i][0][2]
    if result in tj:
        tj[result]+=1
    else:
        tj[result]=1
print(tj)
# 把字典中统计的结果拿来比较,去统计数大的作为结果

for key in tj:
    if tjresult==None:
        tjresult=key

    if tj[key]>tj[tjresult]:
        tjresult=key
    print(tjresult)
print(tjresult)

数据样式:
技术分享图片

以上是关于自己实现的简易的knn算法的主要内容,如果未能解决你的问题,请参考以下文章

利用 python 实现 KNN 算法(自己实现 和 sklearn)

KNN算法实现手写体区分

自己实现KNN算法

2. KNN和KdTree算法实现

KNN算法的代码实现

机器学习 分类算法--K近邻算法 KNN