码迷,mamicode.com
首页 > 编程语言 > 详细

KNN算法的代码实现

时间:2018-03-09 15:33:12      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:规则   das   www.   imp   .sh   reverse   eve   ted   返回   

# -*- 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:maowankui@163.com
#命名规则采用驼峰命名
#######################################################
#导入对应的包
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算法的代码实现

标签:规则   das   www.   imp   .sh   reverse   eve   ted   返回   

原文地址:https://www.cnblogs.com/PiPifamily/p/8534091.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!