原貼: http://www.fengchang.cc/post/89html
以前讀書看過,沒有總結,忘得差很少了,最近讀書又看了一遍,寫總結以下。python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
=========================================================
PCA example with Iris Data-set
=========================================================
Principal Component Analysis applied to the Iris dataset.
See `here <https://en.wikipedia.org/wiki/Iris_flower_data_set>`_ for more
information on this dataset.
"""
print
(__doc__)
# Code source: Gaël Varoquaux
# License: BSD 3 clause
import
numpy as np
import
matplotlib.pyplot as plt
from
mpl_toolkits.mplot3d
import
Axes3D
from
sklearn
import
decomposition
from
sklearn
import
datasets
np.random.seed(
5
)
centers
=
[[
1
,
1
], [
-
1
,
-
1
], [
1
,
-
1
]]
iris
=
datasets.load_iris()
X
=
iris.data
y
=
iris.target
fig
=
plt.figure(
1
, figsize
=
(
4
,
3
))
#clear figure
plt.clf()
ax
=
Axes3D(fig, rect
=
[
0
,
0
, .
95
,
1
], elev
=
48
, azim
=
134
)
# clear axis
plt.cla()
pca
=
decomposition.PCA(n_components
=
3
)
pca.fit(X)
X
=
pca.transform(X)
for
name, label
in
[(
'Setosa'
,
0
), (
'Versicolour'
,
1
), (
'Virginica'
,
2
)]:
ax.text3D(X[y
=
=
label,
0
].mean(),
X[y
=
=
label,
1
].mean()
+
1.5
,
X[y
=
=
label,
2
].mean(), name,
horizontalalignment
=
'center'
,
bbox
=
dict
(alpha
=
.
5
, edgecolor
=
'w'
, facecolor
=
'w'
))
# Reorder the labels to have colors matching the cluster results
y
=
np.choose(y, [
1
,
2
,
0
]).astype(np.
float
)
ax.scatter(X[:,
0
], X[:,
1
], X[:,
2
], c
=
y, cmap
=
plt.cm.nipy_spectral,
edgecolor
=
'k'
)
ax.w_xaxis.set_ticklabels([])
ax.w_yaxis.set_ticklabels([])
ax.w_zaxis.set_ticklabels([])
plt.show()
|