最新分类KNN近邻法Word下载.docx

上传人:b****2 文档编号:14829433 上传时间:2022-10-25 格式:DOCX 页数:10 大小:292.42KB
下载 相关 举报
最新分类KNN近邻法Word下载.docx_第1页
第1页 / 共10页
最新分类KNN近邻法Word下载.docx_第2页
第2页 / 共10页
最新分类KNN近邻法Word下载.docx_第3页
第3页 / 共10页
最新分类KNN近邻法Word下载.docx_第4页
第4页 / 共10页
最新分类KNN近邻法Word下载.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

最新分类KNN近邻法Word下载.docx

《最新分类KNN近邻法Word下载.docx》由会员分享,可在线阅读,更多相关《最新分类KNN近邻法Word下载.docx(10页珍藏版)》请在冰豆网上搜索。

最新分类KNN近邻法Word下载.docx

4)确定前k个点所在类别的出现频率;

5)返回前k个点出现频率最高的类别作为当前点的预测分类。

二、Python实现

对于机器学习而已,Python需要额外安装三件宝,分别是Numpy,scipy和Matplotlib。

前两者用于数值计算,后者用于画图。

安装很简单,直接到各自的官网下载回来安装即可。

安装程序会自动搜索我们的python版本和目录,然后安装到python支持的搜索路径下。

反正就python和这三个插件都默认安装就没问题了。

另外,如果我们需要添加我们的脚本目录进Python的目录(这样Python的命令行就可以直接import),可以在系统环境变量中添加:

PYTHONPATH环境变量,值为我们的路径,例如:

E:

\Python\MachineLearninginAction

2.1、kNN基础实践

一般实现一个算法后,我们需要先用一个很小的数据库来测试它的正确性,否则一下子给个大数据给它,它也很难消化,而且还不利于我们分析代码的有效性。

首先,我们新建一个kNN.py脚本文件,文件里面包含两个函数,一个用来生成小数据库,一个实现kNN分类算法。

代码如下:

[python] 

1.######################################### 

2.# 

kNN:

Nearest 

Neighbors 

3. 

4.# 

Input:

newInput:

vector 

to 

compare 

existing 

dataset 

(1xN) 

5.# 

dataSet:

size 

data 

set 

of 

known 

vectors 

(NxM) 

6.# 

labels:

labels 

(1xM 

vector) 

7.# 

k:

number 

neighbors 

use 

for 

comparison 

8. 

9.# 

Output:

the 

most 

popular 

class 

label 

10.######################################### 

11. 

12.from 

numpy 

import 

13.import 

operator 

14. 

15.# 

create 

which 

contains 

samples 

with 

classes 

16.def 

createDataSet():

17. 

matrix:

each 

row 

as 

sample 

18. 

group 

array([[1.0, 

0.9], 

[1.0, 

1.0], 

[0.1, 

0.2], 

[0.0, 

0.1]]) 

19. 

['

A'

 

'

B'

four 

and 

two 

20. 

return 

group, 

21. 

22.# 

classify 

using 

kNN 

23.def 

kNNClassify(newInput, 

dataSet, 

labels, 

k):

24. 

numSamples 

dataSet.shape[0] 

shape[0] 

stands 

num 

25. 

26. 

## 

step 

1:

calculate 

Euclidean 

distance 

27. 

tile(A, 

reps):

Construct 

an 

array 

by 

repeating 

reps 

times 

28. 

following 

copy 

rows 

dataSet 

29. 

diff 

tile(newInput, 

(numSamples, 

1)) 

Subtract 

element-wise 

30. 

squaredDiff 

** 

squared 

subtract 

31. 

squaredDist 

sum(squaredDiff, 

axis 

1) 

sum 

is 

performed 

32. 

0.5 

33. 

34. 

2:

sort 

35. 

argsort() 

returns 

indices 

that 

would 

in 

ascending 

order 

36. 

sortedDistIndices 

argsort(distance) 

37. 

38. 

classCount 

{} 

define 

dictionary 

(can 

be 

append 

element) 

39. 

xrange(k):

40. 

3:

choose 

min 

41. 

voteLabel 

labels[sortedDistIndices[i]] 

42. 

43. 

4:

count 

occur 

44. 

when 

key 

not 

classCount, 

get() 

45. 

will 

46. 

classCount[voteLabel] 

classCount.get(voteLabel, 

0) 

47. 

48. 

5:

max 

voted 

49. 

maxCount 

50. 

key, 

value 

classCount.items():

51. 

if 

>

maxCount:

52. 

53. 

maxIndex 

54. 

55. 

然后我们在命令行中这样测试即可:

1.import 

2.from 

4.dataSet, 

kNN.createDataSet() 

5. 

6.testX 

array([1.2, 

1.0]) 

7.k 

8.outputLabel 

kNN.kNNClassify(testX, 

3) 

9.print 

"

Your 

input 

is:

testX, 

classified 

class:

outputLabel 

10. 

11.testX 

array([0.1, 

0.3]) 

12.outputLabel 

13.print 

这时候会输出:

1.Your 

1.2 

1.0] 

2.Your 

0.1 

0.3] 

2.2、kNN进阶

这里我们用kNN来分类一个大点的数据库,包括数据维度比较大和样本数比较多的数据库。

这里我们用到一个手写数字的数据库,可以到下载。

这个数据库包括数字0-9的手写体。

每个数字大约有200个样本。

每个样本保持在一个txt文件中。

手写体图像本身的大小是32x32的二值图,转换到txt文件保存后,内容也是32x32个数字,0或者1,如下:

数据库解压后有两个目录:

目录trainingDigits存放的是大约2000个训练数据,testDigits存放大约900个测试数据。

这里我们还是新建一个kNN.py脚本文件,文件里面包含四个

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1