k近邻算法(knn) 学习
来源:互联网 发布:红叶知弦小说 编辑:程序博客网 时间:2024/06/06 03:38
思路
k-近邻算法(kNN)的工作原理是:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。
特点
- 优点:精度高、对异常值不敏感、无数据输入假定。
- 缺点:计算复杂度高、空间复杂度高。
- 适用数据范围:数值型和标称型。
代码例子
# -*- coding: utf-8 -*-# __author__ = 'wangbowen'from numpy import *import operatordef createDataSet(): """ 创建数据集和标签 """ group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1] ] ) labels = ['A', 'A', 'B', 'B'] return group, labelsdef classfiy0(inX, data_set, labels, k): """ k近邻算法 params: inX: 用于分类的输入向量 data_set: 训练样本 labels: 标签向量与data_set的行数相同 k:选择最近邻居的数目,总是正整数 """ # 计算距离 data_set_size = data_set.shape[0] diff_mat = tile(inX, (data_set_size, 1)) - data_set sq_diff_mat = diff_mat**2 # **2对每个元素平方 sq_distances = sq_diff_mat.sum(axis=1) distances = sq_distances**0.5 print distances sorted_dintance_indexs = distances.argsort() print sorted_dintance_indexs class_count = {} for i in range(k): # 选择距离最小的k个点 vote_label = labels[sorted_dintance_indexs[i]] class_count[vote_label] = class_count.get(vote_label, 0) + 1 # 排序 sorted_class_count = sorted(class_count.iteritems(), key=operator.itemgetter(1), reverse=True) # 返回频率发生最高的元素标签 return sorted_class_count[0][0]if __name__ == '__main__': group, labels = createDataSet() print classfiy0([0, 0], group, labels, 3) # 输出: B
阅读全文
0 0
- k近邻算法(knn) 学习
- k-近邻算法(kNN)
- k-近邻算法(kNN)
- k近邻算法(kNN)
- KNN(K近邻)算法
- KNN(k近邻算法)
- K-近邻算法(KNN)
- KNN ( K近邻算法 )
- k近邻算法(kNN)
- K-近邻算法:KNN
- k-近邻算法(kNN)
- kNN-k近邻算法
- K近邻算法-KNN
- K近邻算法-KNN
- kNN(k近邻算法)
- KNN,k-近邻算法
- KNN(K近邻算法)
- kNN k-近邻算法
- 用python简单实现mysql数据同步到ElasticSearch
- Web单选下拉列表与多选下拉列表的清除
- 如何快速转载CSDN中的博客
- Android 中判断为空的简单语句
- kd树识别压缩有的mnist数据集
- k近邻算法(knn) 学习
- jetson tk1开发(1)-开箱
- 最全Pycharm教程(33)——使用Pycharm编写IPython Notebook文件
- SSH框架入门(1)——struts2(1)
- Cookie笔记
- HDOJ1045
- [Mysql] 防御和检查SQL注入攻击的手段
- 机器学习之K-means聚类算法
- AngularJS ui.bootstrap.alert 消息