机器学习算法与Python实践Word文件下载.docx
- 文档编号:17048789
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:10
- 大小:341.86KB
机器学习算法与Python实践Word文件下载.docx
《机器学习算法与Python实践Word文件下载.docx》由会员分享,可在线阅读,更多相关《机器学习算法与Python实践Word文件下载.docx(10页珍藏版)》请在冰豆网上搜索。
3.
4.#
Input:
newInput:
vector
to
compare
existing
dataset
(1xN)
5.#
dataSet:
size
m
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
a
which
contains
4
samples
with
2
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
A
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.
i
xrange(k):
40.
3:
choose
min
41.
voteLabel
labels[sortedDistIndices[i]]
42.
43.
4:
count
occur
44.
when
key
not
classCount,
get()
45.
will
0
46.
classCount[voteLabel]
classCount.get(voteLabel,
0)
+
1
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
3
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]
B
2.2、kNN进阶
这里我们用kNN来分类一个大点的数据库,包括数据维度比较大和样本数比较多的数据库。
这里我们用到一个手写数字的数据库,可以到这里下载。
这个数据库包括数字0-9的手写体。
每个数字大约有200个样本。
每个样本保持在一个txt文件中。
手写体图像本身的大小是32x32的二值图,转换到txt文件保存后,内容也是32x32个数字,0或者1,如下:
数据库解压后有两个目录:
目录trainingDigits存放的是大约2000个训练数据,testDigits存放大约900个测试数据。
这里我们还是新建一个kNN.py脚本文件,文件里面包含四个函数,一个用来生成将每个样本的txt文件转换为对应的一个向量,一个用来加载整个数据库,一个实现kNN分类算法。
最后就是实现这个加载,测试的函数。
inX:
14.import
os
15.
16.
17.#
18.def
22.
23.
52.#
convert
image
53.def
img2vector(filename):
32
cols
56.
imgVector
zeros((1,
cols))
57.
fileIn
open(filename)
58.
xrange(rows):
59.
lineStr
fileIn.readline()
60.
col
xrange(cols):
61.
imgVector[0,
col]
int(lineStr[col])
62.
63.
64.
65.#
load
66.def
loadDataSet():
67.
Getting
training
68.
---Getting
set..."
69.
dataSetDir
E:
/Python/Machine
Learning
Action/'
70.
trainingFileList
os.listdir(dataSetDir
trainingDigits'
)
71.
len(trainingFileList)
72.
73.
train_x
zeros((numSamples,
1024))
74.
train_y
[]
75.
xrange(numSamples):
76.
filename
trainingFileList[i]
77.
78.
get
79.
train_x[i,
:
img2vector(dataSetDir
trainingDigits/%s'
%
filename)
80.
81.
from
file
name
such
1_18.txt"
82.
int(filename.split('
_'
)[0])
83.
train_y.append(label)
84.
85.
testing
86.
87.
testingFileList
testDigits'
88.
len(testingFileList)
89.
test_x
90.
test_y
91.
92.
testingFileList[i]
93.
94.
95.
test_x[i,
testDigits/%s'
96.
97.
98.
99.
test_y.append(label)
100.
101.
train_x,
train_y,
test_x,
102.
103.#
test
hand
writing
104.def
testHandWritingClass():
105.
106.
data..."
107.
loadDataSet()
108.
109.
training...
110.
training..."
111.
pass
112.
113.
114.
testing..."
115.
numTestSamples
test_x.shape[0]
116.
matchCount
117.
xrange(numTestSamples):
118.
predict
kNNClassify(test_x[i],
119.
==
test_y[i]:
120.
+=
121.
accuracy
float(matchCount)
/
122.
123.
show
result
124.
result..."
125.
The
%.2f%%'
(accuracy
100)
测试非常简单,只需要在命令行中输入:
2.kNN.testHandWritingClass()
输出结果如下:
1.step
data...
2.---Getting
set...
3.---Gett
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机器 学习 算法 Python 实践
![提示](https://static.bdocx.com/images/bang_tan.gif)