用python写程序真的好舒服。

  code:

 import numpy as np

 def read_data(filename):
'''读取文本数据,格式:特征1 特征2 …… 类别'''
f=open(filename,'rt')
row_list=f.readlines() #以每行作为列表
f.close()
data_array=[]
labels_vector=[]
while True:
if not row_list:
break
row=row_list.pop(0).strip().split('\t') #去除换行号,分割制表符
temp_data_row=[float(a) for a in row[:-1]] #将字符型转换为浮点型
data_array.append(temp_data_row) #取特征值
labels_vector.append(row[-1]) #取最后一个作为类别标签
return np.array(data_array),np.array(labels_vector) def classify(test_data,dataset,labels,k):
'''分类'''
diff_dis_array=test_data-dataset #使用numpy的broadcasting
dis_array=(np.add.reduce(diff_dis_array**2,axis=-1))**0.5 #求距离
dis_array_index=np.argsort(dis_array) #升序距离的索引
class_count={}
for i in range(k):
temp_label=labels[dis_array_index[i]]
class_count[temp_label]=class_count.get(temp_label,0)+1 #获取类别及其次数的字典
sorted_class_count=sorted(class_count.items(), key=lambda item:item[1],reverse=True) #字典的值按降序排列
return sorted_class_count[0][0] #返回元组列表的[0][0] def normalize(dataset):
'''数据归一化'''
return (dataset-dataset.min(0))/(dataset.max(0)-dataset.min(0)) k=3 #近邻数
test_data=[0,0] #待分类数据
data,labels=read_data('testdata.txt')
print('数据集:\n',data)
print('标签集:\n',labels)
result=classify(test_data,normalize(data),labels,k)
print('分类结果:',result)

  一个示例的数据集testdata.txt(以制表符隔开):

  1.0 1.1 A
  1.0 1.0 A
  0 0 B
  0 0.1 B

用python实现k近邻算法的更多相关文章

  1. 机器学习 Python实践-K近邻算法

    机器学习K近邻算法的实现主要是参考<机器学习实战>这本书. 一.K近邻(KNN)算法 K最近邻(k-Nearest Neighbour,KNN)分类算法,理解的思路是:如果一个样本在特征空 ...

  2. 用Python从零开始实现K近邻算法

    KNN算法的定义: KNN通过测量不同样本的特征值之间的距离进行分类.它的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别.K通 ...

  3. 机器学习经典算法具体解释及Python实现--K近邻(KNN)算法

    (一)KNN依旧是一种监督学习算法 KNN(K Nearest Neighbors,K近邻 )算法是机器学习全部算法中理论最简单.最好理解的.KNN是一种基于实例的学习,通过计算新数据与训练数据特征值 ...

  4. python 机器学习(二)分类算法-k近邻算法

      一.什么是K近邻算法? 定义: 如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别. 来源: KNN算法最早是由Cover和Hart提 ...

  5. 机器学习实战笔记--k近邻算法

    #encoding:utf-8 from numpy import * import operator import matplotlib import matplotlib.pyplot as pl ...

  6. 机器学习实战笔记(Python实现)-01-K近邻算法(KNN)

    --------------------------------------------------------------------------------------- 本系列文章为<机器 ...

  7. 机器学习之K近邻算法(KNN)

    机器学习之K近邻算法(KNN) 标签: python 算法 KNN 机械学习 苛求真理的欲望让我想要了解算法的本质,于是我开始了机械学习的算法之旅 from numpy import * import ...

  8. 机器学习03:K近邻算法

    本文来自同步博客. P.S. 不知道怎么显示数学公式以及排版文章.所以如果觉得文章下面格式乱的话请自行跳转到上述链接.后续我将不再对数学公式进行截图,毕竟行内公式截图的话排版会很乱.看原博客地址会有更 ...

  9. 机器学习——KNN算法(k近邻算法)

    一 KNN算法 1. KNN算法简介 KNN(K-Nearest Neighbor)工作原理:存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分 ...

随机推荐

  1. Ⅰ.Spring的点点滴滴--序章

    spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架 .net篇(环境为vs2012+Spring.Core.dll) 新建一个控制台 using Spring.Context; ...

  2. JS 笔记

    如何定义一个函数呢?基本语法如下: function 函数名() {      函数代码; } 说明: 1. function定义函数的关键字. 2. "函数名"你为函数取的名字. ...

  3. WebDriver: Getting it to play nicely with Xvfb

    http://www.markhneedham.com/blog/2011/12/15/webdriver-getting-it-to-play-nicely-with-xvfb/ Thoughts ...

  4. 初识 Lucene

    Lucene是一个信息检索工具库,而不是一个完整的搜索程序 搜索程序 Lucene索引核心类 Lucene索引核心类: Document: 文档对象代表一些域(field)的集合 Field: 每个文 ...

  5. PHP自动化测试

    参考网址: 1. 基于Jenkins 实现php项目的自动化测试.自动打包和自动部署 2.  PHP Jenkins,参考:http://jenkins-php.org/ 3.安装PHP_CodeSn ...

  6. dedecms导航

    {dede:global.cfg_cmsurl /} 首页链接 一级导航: {dede:channel type=“top”} [field:typelink]:导航链接 [field:typenam ...

  7. 默认安装wamp修改MySQL密码

    首先,通过WAMP打开mysql控制台. 提示输入密码,因为现在是空,所以直接按回车. 然后输入“use mysql”,意思是使用mysql这个数据库,提示“Database changed”就行. ...

  8. linux命令 common 文件比较

    比较已经排序的文件 comm [options] file1 file2 comm将逐行比较已经排序的两个文件.显示结果包括3列: 第1列为只在file1中找到的行;第2列为只在file2中找到的行; ...

  9. Java_Web学习路线

  10. ###Markdown初步学习

    Markdown学习/* GitHub stylesheet for MarkdownPad (http://markdownpad.com) *//* Author: Nicolas Hery - ...