【机器学习算法-python实现】KNN-k近邻算法的实现(附源码)
来源:互联网 发布:java图像压缩算法 编辑:程序博客网 时间:2024/04/28 13:00
(转载请注明出处:http://blog.csdn.net/buptgshengod)
1.背景
今后博主会每周定时更新机器学习算法及其python的简单实现。今天学习的算法是KNN近邻算法。KNN算法是一个监督学习分类器类别的算法。
什么是监督学习,什么又是无监督学习呢。监督学习就是我们知道目标向量的情况下所使用的算法,无监督学习就是当我们不知道具体的目标变量的情况下所使用的。而监督学习又根据目标变量的类别(离散或连续)分为分类器算法和回归算法。
k-Nearest Neighbor。k是算法中的一个约束变量,整个算法的总体思想是比较简单的,就是将数据集的特征值看作是一个个向量。我们给程序一组特征值,假设有三组特征值,就可以看做是(x1,x2,x3)。系统原有的特征值就可以看做是一组组的(y1,y2,y3)向量。通过求两向量间的距离,我们找出前k个距离最短的y的特征值对。这些y值所对应的目标变量就是这个x特征值的分类。
公式:
2.python基础之numpy
numpy是python的一个数学计算库,主要是针对一些矩阵运算,这里我们会大量用到它。 介绍一下本章代码中用到的一些功能。
arry:是numpy自带的数组表示,比如本例中的4行2列数字可以这样输入
group=array([[9,400],[200,5],[100,77],[40,300]])
shape:显示(行,列)例:shape(group)=(4,2)
zeros:列出一个相同格式的空矩阵,例:zeros(group)=([[0,0],[0,0],[0,0],[0,0]])
tile函数位于python模块 numpy.lib.shape_base中,他的功能是重复某个数组。比如tile(A,n),功能是将数组A重复n次,构成一个新的数组
sum(axis=1)矩阵每一行向量相加
3.数据集
4.代码
代码分三个函数,分别是
创建数据集:
数据归一化:
分类函数:
createDataset
from __future__ import divisionfrom numpy import *import operatordef createDataset(): group=array([[9,400],[200,5],[100,77],[40,300]]) labels=['1','2','3','1'] return group,labels
数据归一化:
autoNorm
def autoNorm(dataSet): minVals = dataSet.min(0) maxVals = dataSet.max(0) ranges = maxVals - minVals normDataSet = zeros(shape(dataSet)) m = dataSet.shape[0] normDataSet = dataSet - tile(minVals, (m,1)) #print normDataSet normDataSet = normDataSet/tile(ranges, (m,1)) #element wise divide # print normDataSet return normDataSet, ranges, minVals
分类函数:
classify
def classify(inX, dataSet, labels, k): dataSetSize = dataSet.shape[0] diffMat = tile(inX, (dataSetSize,1)) - dataSet sqDiffMat = diffMat**2 sqDistances = sqDiffMat.sum(axis=1) distances = sqDistances**0.5 sortedDistIndicies = distances.argsort() classCount={} for i in range(k): voteIlabel = labels[sortedDistIndicies[i]] classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1 sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True) return sortedClassCount[0][0]
5.显示结果
6.代码下载
下载地址
3 1
- 【机器学习算法-python实现】KNN-k近邻算法的实现(附源码)
- 【机器学习算法-python实现】KNN-k近邻算法的实现(附源码)
- 【机器学习算法-python实现】KNN-k近邻算法的实现(附源码)
- 机器学习算法的python实现(1)---k近邻算法(kNN)
- 【机器学习系列】kNN(k近邻算法)的python实现
- K-近邻算法(kNN)python实现
- 机器学习之k-近邻(kNN)算法与Python实现
- 机器学习与数据挖掘-K最近邻(KNN)算法的实现(java和python版)
- 【机器学习实战之一】:C++实现K-近邻算法KNN
- 【机器学习实战】:C++实现K-近邻算法KNN
- 机器学习经典算法详解及Python实现--K近邻(KNN)算法
- 机器学习经典算法详解及Python实现–K近邻(KNN)算法
- 机器学习经典算法详解及Python实现--K近邻(KNN)算法
- 机器学习经典算法详解及Python实现--K近邻(KNN)算法
- 机器学习实战2:k近邻算法KNN(python)
- K近邻(KNN)算法---Python实现(一)
- knn K近邻算法python实现
- 【机器学习】k近邻算法(kNN)
- PMC推出针对LTE优化的WinPath4处理器,巩固其在移动回传领域的领导地位
- windows phone 8 如何监听ScrollView的ManipulationCompletedg事件
- 【LeetCode】Valid Parentheses & Generate Parentheses & Longest Valid Parentheses
- 在C#中利用Keep-Alive处理Socket网络异常断开的方法
- System.getProperty("line.separator")
- 【机器学习算法-python实现】KNN-k近邻算法的实现(附源码)
- 编程之美--求阶乘数结尾的0的个数 求二进制最有一个1的位置
- 【Lucene3.6.2入门系列】第14节_SolrJ操作索引和搜索文档以及整合中文分词
- phpmyadmin 出现Cannot start session without errors 错误 总结的几种原因和解决办法
- 《算法导论》笔记 第13章 13.1 红黑树的性质
- poj A Funny Game
- 【Lucene3.6.2入门系列】第15节_SolrJ高亮
- No_23Non-abundant sums
- ios判断系统是24小时制还是12小时制