- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 569583 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 176098
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
【机器学习】无监督学习的概念,使用无监督学习发现数据的特点& t% R. o( ?# T# V' Q% R
3 q, y8 H+ k; H b, W4 Z
到目前位置,我们主要把注意力集中在监督学习的问题上,数据集中的每个数据点都有一个已知的标签或者目标值。然而如果面对没有已知的输出结果,或者没有人监督学习算法,我们要怎么做。
0 K3 m# \. Y. z M) Z( V
, t) Y. c0 g; e# R5 w" K这就是无监督学习 。
0 W/ m+ H- u& X- v2 T: p( T/ X+ W+ \4 \6 N5 F
在无监督、非监督学习中了,学习过程仅使用输入数据,没有更多的指导信息,要求从这些数据中提取知识。我们已经讨论了非监督学习众多形式的一种降维。另一个普及的领域就是聚类分析。他的目的是吧数据分为相似元素组成的不同区域中。
* a$ v( z! a8 l
1 B& t4 A3 L) m( A# M在本章中,我们想要理解不同的聚类算法如何从简单到,无标记的数据集中提取特征。这些结构特征,可以用于特征处理,图像处理,甚至是作为无监督学习任务的预处理步骤。
1 c: I( v, O3 j# N5 m作为一个具体的例子,我们将对图像进行聚类,将色彩空间降到16位数。; E0 ?6 u( S: V! k, p
" i( @9 N& c3 Y% x: M' w* c解决的问题
+ {* J( A0 i8 Q) h2 m7 u/ i1.K-means聚类和期望最大化是什么?如何在opencv中实现这些算法。
0 i3 u7 `# m* @2 ^2.如何在层次树中使用聚类算法。他带来的好处有哪些。( [$ L: n' J1 g8 K. }0 H
3.如何使用无监督学习,进行预处理,图像处理,分类。
* T G+ t# K, r
+ N' |0 l6 X, |, j2 t+ T; y1 理解无监督学习
7 }- _2 s; s5 ]' Q( J1 y% K/ t/ P4 a+ Q无监督学习可能有很多形式,但是他们的目标总是把原始数据转化为更加丰富,更加有意义的表示,这么做可以让人们更容易理解,也可以更方便的使用机器学习算法进行解析。
7 y9 r1 U1 u6 \9 r( d9 K* Y3 f) }5 b无监督学习的应用包括一下应用:0 @ P3 N5 A# o" _( @/ X$ Z; D0 ?
1降维:他接受一个许多特征的高维度数据表示,尝试对这些数据进行压缩,以使其主要特征,可以使用少量的携带高信息量的数据来表示。4 k9 f: @, b/ H$ \
2因子分析:用于找到导致被观察的到的数据的隐含因素或者未观察到的方面。
' k$ }1 X$ P, b) d3 L9 F w7 g3 A3聚类分析:, _8 y+ i& P) X
尝试把数据分成相似元素组成的不同组。: u$ p6 U& s1 G a/ T
0 D% u0 h$ n+ Z' w/ ?& X) A+ y
无监督学习主要的挑战就是,如何确定一个算法是否出色,或者学习到什么有用内容,通常评估一个无监督学习算法结果的唯一方式是手动检查,并确定结果是否有意义。
5 I, O4 }2 a) q) d& [3 e! h
# @8 L Q; Z1 W- t. n+ D# _" {话虽然如此,但是非监督学习,可以非常有,比如作为预处理或者特征提取的步骤。3 M s* ?/ w" R7 F
N& r; u) z3 ^4 U2 A" @2理解K-means聚类1 I, Q3 P& L. h1 Y
Opencv 提供最有用的聚类算法是k-means,因为它会从一个没有标记的多维度数据集中搜寻预设的K个聚类结果。; c# r, B6 t; d8 l3 T
7 W1 \8 q7 o6 V
它通过两个简单的假设来完成最佳聚类了。: v- @3 V# \/ j2 h/ z7 D
1 每个聚类中心都是属于该类别的所有数据点的算术平均值, a( V- h! J( R" n) C
2 聚类中的每一个点相对其他聚类中心,更靠近本类别的中心。
7 s1 {4 ^6 ]: x5 b. _4 d4 `
o- A- A( q0 ~/ G) c2.1 实现第一个kmeans例子
" ]+ B, h- O6 s3 y' R6 u首先,生成一个包含四个不同点集合的数据集。为了强调这是一个非监督的方法,我门在可视化将忽略哪些标签。使用matplotlib进行可视化。4 C0 q& \; B1 h; i5 H
; |7 o4 g- I6 ]1 }: D& I R: |9 S* K
import matplotlib.pyplot as plt% p; Y( m7 B, l1 r
import pylab3 m2 W5 Q; T/ T. q5 Q& O
from sklearn.datasets._samples_generator import make_blobs$ | W6 Y% b3 R4 m) x
6 z' N, b, u8 |+ B: D( Yplt.style.use('ggplot')
b* ^- R; ^. J8 N3 z2 n) `$ Sx,y=make_blobs(n_samples=300,centers=4,cluster_std=1.0,random_state=10)
: f, C# u8 ?1 Wplt.scatter(x[:,0],x[:,1],s=100)
* O2 O+ a& m1 y7 xpylab.show()3 M$ |- l+ L K0 o7 s
, L: G* D! _& k7 d! t! Y1 Z
) {0 q9 l6 {# \
1
( k' T; U& T3 x4 O& O2/ @3 ?, h. U5 Q7 x( g
3
: D( t1 ~- a* p* m2 W4* q0 N* v7 o, A: E$ v
5
0 P$ ^4 G0 n5 |* a) \% @0 E68 S. e! s- b7 q& g+ p
7- q& ~/ ]0 P5 B; C/ J
80 x' z% i7 z9 s
9; @" k# O+ A4 _, x
107 y- L6 }$ T! U$ t) b
9 f) y& b5 k6 h: U! m
我们创建一个四个不同区域的聚类,centers=4,一共300节点。
! k' u+ h: I" ` T u' T1 ]4 M如上程序生成图像所示结果。# A0 N' x( v3 A& @! ]2 b
尽管没有给数据分配目标标签,但直接使用肉眼还是可以看出来一共是四类。$ w% ~8 H- O1 }% `' i+ F
kmeans就可以通过算法办到,无需任何关于目标的标签或者潜在的数据分布的信息。
' z1 _2 e4 L8 z# I8 A; `9 w当然尽管,kmeans在opencv中是一个统计模型,不能调用api中的train和predict。相反,使用cv2.kmeans可以直接使用这个算法。。为了使用这个模型,我们需要指定一些参数,比如终止条件,和初始化标志。
$ F& l5 K5 `/ Y# t+ b9 T. p9 x3 h8 R, ]$ ]9 r
我们让算法误差小于1.0(cv2.TERM_CRITERIA_EPS),或者已经 执行了十次迭代(cv2.TERM_CITTERIA_MAX_ITER)时候终止。* `5 ^8 |7 n3 D% t1 i# e
/ H8 i. }' Z- t4 s. Q- a1 T2 D7 M
! R; {- Z3 g x2 v4 M1 Q0 q R4 K/ ^/ h7 {( @4 U
import matplotlib.pyplot as plt
1 n, Q; D4 p# x% g4 _8 Uimport pylab k J6 T @ |1 f
from sklearn.datasets._samples_generator import make_blobs
. O- c0 w8 v8 P; Z* P Jimport cv2
/ m) h5 e& T' q, a. Qimport numpy as np
% v+ \: A/ a5 {9 L$ t% Z0 [) y0 i* s
plt.style.use('ggplot')
! B& L# H* _; K2 \2 _: Q Tx,y=make_blobs(n_samples=300,centers=4,cluster_std=1.0,random_state=10)
' _4 _' R4 G+ k' w$ Zplt.scatter(x[:,0],x[:,1],s=100)
1 D& E; O6 E& b9 [: @/ Z2 u, ~) }+ ?
9 E( R+ Y8 _5 b/ L' vcriteria=(cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER,10,1.0)7 T5 d; K- \8 y9 t
flags=cv2.KMEANS_RANDOM_CENTERS
( |# k, [) ]# F2 s- Y" H- W/ ncompactness,labels,centers=cv2.kmeans(x.astype(np.float32),4,None,criteria,10,flags)
, e% l2 e4 [- N+ E$ i9 R, Aprint(compactness)
) K) l& c" V7 V8 y
# |8 i( M/ m$ W k: ^5 zplt.scatter(x[:,0],x[:,1],c=labels,s=50,cmap='viridis')+ ~5 l, h: J+ }; V# D
plt.scatter(centers[:,0],centers[:,1],c='black',s=200,alpha=0.5)( n0 n1 ] P- O
7 f; L- z- F) H) t, G Zpylab.show()5 s a( b/ R2 w- O9 v
& o, X# C* f* z! J9 `9 l; w' F- T% J q$ R+ x1 n" h' P
- A, K G, G# W$ H: k* n
' u P" p7 B- [7 d: l, _# k
* j, A$ `% w' T4 V$ ]7 a8 a* ^) T5 V, z/ K# H8 `0 q) E- Q/ R4 ]
% ~8 _; }' I1 q0 j3 i8 R6 [* E
14 t7 C; \5 k) ]* H( p9 }
2
: }$ V7 Y; m6 x% \$ ]3
! C: v! N/ o# B9 G& Y! K) Q4
( h* `4 R# \$ g$ T5
4 s% b, j5 ]& Q! m6
5 d5 ]% j3 x! e77 Q' F1 {) F0 T, j
8
) r3 _* s* g5 i6 H* ^ b/ {' u9 k9
! \* H3 P' ^! A2 E10. I$ J( X( y1 _7 ~) c O4 ^
11
. W1 P( s' P3 b7 T% m' c12& @1 C+ c3 y% b9 V
133 a( |" d* N2 F
14
8 G! c9 k, ?1 ~/ L6 y15& N/ W7 A, b8 ]+ ~- Z/ p2 `
16. H) w J& @$ u* D2 N2 o
17
) J* Y/ }% N3 ^2 b$ O1 D9 J, {18
- Q' B: l% H; L# g; u9 s9 N191 e- d; H. r( C: z: \ s
20
; k6 w" D) w3 R! s- T" {21
! L$ |. a9 ~% U/ K' L& u22
' R6 }' S8 ^' o$ A* z e3 k23
- E4 u$ s$ R( v24
9 A e" e" f8 d% S8 X25$ F3 k; J' S2 E( k
26 ]( @5 q' S2 M
上面程序结果可以产生图2的效果。
; |$ J1 b- L& O+ u0 J1 Y/ \) |) c% t' i7 E. p
print(compactness)这个变量,表示每个点到它聚类中心的距离平方和。较高紧凑都表明所有的点更靠近他们的聚类中心,较低 的紧凑度表明不同的聚类可能无法的很好区分。 b% g, f/ J9 v% \+ |
* H& h8 l* b" {+ T4 B) A当然,这个是非常依赖于x中的真实值。如果点与点之间最初的距离比较大,那我们就很难得到一个非常小的紧凑度。因此,把数据画出来,并按照聚类标签分配不同颜色,可以显示更多信息。
" Q: W1 Q2 `2 f9 }
, S6 g: F- h! {2 n3理解kmeans; T& h3 Y. a. e! `& n
kmeans是聚类众多常见期望最大化中一个具体的例子。简单来说,算法处理的过程如下所示:
% o, K E0 V- p; l% A7 ^1.从一些随机的聚类中心开始
0 p8 h8 [ _5 u% W, O9 K2.一种重复直到收敛
5 Y! x! M' t! V: }6 f; S' t/ d4 Y9 c6 Q1 f- m
期望步骤:把所有的数据点分配到离他们最近的聚类中心。
# X% v0 u9 ?% } o* w( O最大化步骤:通过取出聚类中所有点的平均来更新聚类中心。3 T% Y& ?6 J" U" `
, U0 k6 H& V& ?% N# ]) k3 }
它涉及到一个定义聚类中心位置的适应性函数最大化的过程。对于kmeans最大化是计算一个聚类中所有数据点的算数平均得到。
9 j+ I0 r. s# b$ o0 t9 Z————————————————
5 z2 V9 f; B" V( _9 l8 p版权声明:本文为CSDN博主「紫钺-高山仰止」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
5 O3 {8 N3 j4 a原文链接:https://blog.csdn.net/qq_43158059/article/details/126789000) c6 E8 B5 ~) l: ^) w% i `6 ?
8 P! k5 ~( Y2 |5 M' j* i- Q7 o* J3 R$ {2 n Y+ O) R
|
zan
|