实现k临近算法

欧式距离

给定一个训练数据集,对新的输入实例,计算两者之间的距离,与k个最小距离的标签进行分类。通俗来说即是点到直线的衍生,点即实例;直线即分类器。

import numpy as np
class knn:
   def knn(inX, dataSet, labels, k):
    '''
    :param inX: <numpy.ndarray> 输入向量
    :param dataSet: <numpy.ndarray> 数据集的向量
    :param labels: <list> 输入实例的标签
    :param k: <str> 输出预测的标签
    :return sortedClassCount[0][0] <str>输出预测的标签
    '''    
    #inX - dataSet
    a = dataSet.shape[0]                    
    b = np.tile(inX, (a, 1)) - dataSet    
    c = b ** 2
    d = c.sum(axis=1)
    e = d ** 0.5
    classCount = {}                        
    for i in range(k):
     f = labels[e[i]]
     classCount[f]= classCount.get(f, 0) + 1
    sortedClassCount = sorted(classCount.iteritems(), key = operater.itemgetter(1), reverse = True)
  return sortedClassCount[0][0]
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容