KNN算法的代码实现

Posted pipifamily

tags:

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

# -*- coding: utf-8 -*-
"""
Created on Wed Mar  7 09:17:17 2018

@author: admin
"""

#######################################################
#kNN cluster
#author:niucas
#date:2-18-03-07
#homePage:http://www.cnblogs.com/PiPifamily/
#email:[email protected]
#命名规则采用驼峰命名
#######################################################
#导入对应的包
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import operator


############
#准备数据
############
def creatDataSet():
    ‘‘‘
    函数的作用是创建一个训练数据集,并且对应各个数据的label(标签)
    ‘‘‘
    testData = np.array([
            [1.0,1.1],
            [1.0,1.1],
            [0.,0.],
            [0.,0.1]
            ])
    testLabel = [A,A,B,B]
    return testData,testLabel
def classify(inData,dataSet,labels,k):
    ‘‘‘
    此函数是用来进行分类;
    参数定义如下:
    inData:输入数据
    dataSet:训练数据集
    labels:训练数据对应的labels
    k:选取的K值
    ‘‘‘
    dataSetSize = dataSet.shape[0]
    #第一步计算欧式距离
    diff = np.tile(inData,(dataSetSize,1)) - dataSet #训练数据集每个对象与测试数据的差值
    distance = ((diff**2).sum(axis=1)) ** 0.5#求差值的平方和
    #############
    #开始进行投票
    #############
    sortedDistIndex = np.argsort(distance) #将欧式距离进行升序排列,结果对用的是索引号
    #存放最终结果的字典,初始化
    classCount = {}
    #投票就是计算前K个值中,概率的最大的类,哪个labels值最大
    for i in range(k):
        voteLabel = labels[sortedDistIndex[i]]
        classCount[voteLabel] = classCount.get(voteLabel,0) + 1
        
    #将classCount中的分类结果进行排序,返回得票数最高的label
    sortedClassCount = sorted(classCount.items(),key=operator.itemgetter(1), reverse = True)#降序排列,默认是升序排列
    
   # class = max(classCount.items(),Key = lambda x : x[1])[0] 
    
    return sortedClassCount[0][0]

if __name__ == "__main__":
    #导入数据
    dataSet,labels = creatDataSet()
    inData = [0.1,0.1]
    #简单分类
    className = classify(inData,dataSet,labels,3)
    print(the class of test sample is %s %className)
    


    

 

以上是关于KNN算法的代码实现的主要内容,如果未能解决你的问题,请参考以下文章

自己实现的简易的knn算法

python实现简单knn算法

数据挖掘——KNN算法的实现

从零开始的AI·吃透kNN算法,学完我悟了(附实例代码)

Python机器学习(十六)KNN原理与代码实现

以❤️简单易懂❤️的语言带你搞懂有监督学习算法附Python代码详解机器学习系列之KNN篇