机器学习 MLIA学习笔记(二)之 KNN算法(一)原理入门实例

KNN算法详解
本文介绍了K-近邻(KNN)算法的基本原理,并通过一个简单的Python实现示例来展示如何使用KNN进行分类。该算法首先计算待分类样本与训练集中每个样本的距离,然后选取距离最近的K个样本,最后根据这K个样本的类别来决定待分类样本的类别。

KNN=K-Nearest Neighbour

原理:我们取前K个相似的数据(排序过的)中概率最大的种类,作为预测的种类。通常,K不会大于20。

 

下边是一个简单的实例,具体的含义在注释中:

import numpy as np
import operator
import os

def createDataSet():
    group = np.array([[1.0, 1.1],[1.0, 1.0],[0, 0],[0, 0.1]])
    labels = ['A', 'A', 'B', 'B']
    return group, labels

def classify(inX, dataSet, labels, k):
    dataSetSize = dataSet.shape[0]#lines num; samples num
    diffMat = np.tile(inX, (dataSetSize,1)) - dataSet#dataSize*(1*inX)
    sqDiffMat = diffMat**2
    sqDistances = sqDiffMat.sum(axis=1)#add as the first dim
    distances = sqDistances**0.5
    #return indicies array from min to max
    #this is an array
    sortedDistanceIndices = distances.argsort()
    #classCount={}
    classCount=dict()   #define a dictionary
    for i in range(k):
        voteIlabel = labels[sortedDistanceIndices[i]]
        classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1#get(key,default=none)
    #return a list like [('C',4),('B',3),('A',2)], not a dict
    #itemgetter(0) is the 1st element
    #default: from min to max
    sortedClassCount = sorted(classCount.iteritems(),
                              key=operator.itemgetter(1), reverse=True)                  
    return sortedClassCount[0][0]

 

转载于:https://www.cnblogs.com/AmitX-moten/p/4176598.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值