- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 565163 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174772
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
【机器学习】无监督学习的概念,使用无监督学习发现数据的特点# ~: r2 p0 S0 L6 W. v) R9 ]5 `
2 ?. b& N u! g2 J2 D3 l( A
到目前位置,我们主要把注意力集中在监督学习的问题上,数据集中的每个数据点都有一个已知的标签或者目标值。然而如果面对没有已知的输出结果,或者没有人监督学习算法,我们要怎么做。0 V! A4 p$ J' W5 `( S8 O& o' [# t" c1 U
9 }: w% C- @! k4 H+ Q0 o7 M
这就是无监督学习 。; ~1 C4 X' @9 B
& T+ _0 @! D7 J N5 @3 [1 q+ f4 H在无监督、非监督学习中了,学习过程仅使用输入数据,没有更多的指导信息,要求从这些数据中提取知识。我们已经讨论了非监督学习众多形式的一种降维。另一个普及的领域就是聚类分析。他的目的是吧数据分为相似元素组成的不同区域中。' G/ E3 Y" X) {" U
" r, l8 q, A( \' L9 s l
在本章中,我们想要理解不同的聚类算法如何从简单到,无标记的数据集中提取特征。这些结构特征,可以用于特征处理,图像处理,甚至是作为无监督学习任务的预处理步骤。
0 e4 O& S7 u! u$ z作为一个具体的例子,我们将对图像进行聚类,将色彩空间降到16位数。
, o* C: B8 v& k1 |' K4 S( V B
" ~- M" e$ J$ b4 w0 [' R3 T4 \解决的问题8 e. l7 q2 d) Y2 B4 X4 \( z* d* u
1.K-means聚类和期望最大化是什么?如何在opencv中实现这些算法。2 N/ W/ h7 W; S* _4 X5 {9 T
2.如何在层次树中使用聚类算法。他带来的好处有哪些。8 {# [2 q8 T7 F- t
3.如何使用无监督学习,进行预处理,图像处理,分类。
" U6 ]: q% R/ i$ \4 D
* A6 H/ L( G6 V: a6 f$ h D$ s1 理解无监督学习
2 @8 [# R* O E" U9 C3 u无监督学习可能有很多形式,但是他们的目标总是把原始数据转化为更加丰富,更加有意义的表示,这么做可以让人们更容易理解,也可以更方便的使用机器学习算法进行解析。
; e4 V* o" z! z- c无监督学习的应用包括一下应用:
: Q2 ?3 i6 w m1降维:他接受一个许多特征的高维度数据表示,尝试对这些数据进行压缩,以使其主要特征,可以使用少量的携带高信息量的数据来表示。
, Q1 h. a3 l5 n) K) Q3 G/ r2因子分析:用于找到导致被观察的到的数据的隐含因素或者未观察到的方面。
' C3 d G4 U4 X3聚类分析:
5 |$ y! V* z2 n- d尝试把数据分成相似元素组成的不同组。
( j" |/ u5 R' V$ u& S! B6 B8 {. b/ U
无监督学习主要的挑战就是,如何确定一个算法是否出色,或者学习到什么有用内容,通常评估一个无监督学习算法结果的唯一方式是手动检查,并确定结果是否有意义。
$ ]# L* Z2 Q1 y8 |: I/ a" J, _2 A+ B! r+ t( ^# W0 n+ `$ h
话虽然如此,但是非监督学习,可以非常有,比如作为预处理或者特征提取的步骤。$ e0 K" }0 C1 s% q$ D& i b" W u
& x, `+ c& m# t3 p, @. \
2理解K-means聚类
( S0 g* I% A% `2 B2 W$ Z3 R( FOpencv 提供最有用的聚类算法是k-means,因为它会从一个没有标记的多维度数据集中搜寻预设的K个聚类结果。) _5 ]$ d: |0 _+ g* M
) M3 F$ p8 \; `0 H它通过两个简单的假设来完成最佳聚类了。
: X6 R O! w) P2 i: h* v3 c1 每个聚类中心都是属于该类别的所有数据点的算术平均值$ h% \5 U5 t" g, {
2 聚类中的每一个点相对其他聚类中心,更靠近本类别的中心。; [3 ]4 L, K# `% T
6 }8 ` z8 S. q0 o: P. S2.1 实现第一个kmeans例子
/ b( A; h* U5 _ S首先,生成一个包含四个不同点集合的数据集。为了强调这是一个非监督的方法,我门在可视化将忽略哪些标签。使用matplotlib进行可视化。; p- u* j1 }1 t# Y
7 x+ p0 O; V: N, f3 N2 a Eimport matplotlib.pyplot as plt
6 @) b- F. ]) D- W- {; Aimport pylab
: I/ [/ {* x% w; [# Wfrom sklearn.datasets._samples_generator import make_blobs
7 J& Y) w7 S8 x! s. B" |% ]
( L2 j; F8 b: Yplt.style.use('ggplot')+ k( a- x. H; q" h
x,y=make_blobs(n_samples=300,centers=4,cluster_std=1.0,random_state=10)
, q* r: ?$ R/ o+ V% Qplt.scatter(x[:,0],x[:,1],s=100)
& s0 A o4 D; ?3 Fpylab.show()
# H/ g3 S' _# X4 Q' t6 M: W7 l) Y6 O
- K2 S8 ^: l9 \* u
1# N) M& C. J& t5 |
2
# q! l2 U7 ?9 l5 ~: A! q3
+ G/ \' I, K0 \' `4
0 M* M" E& _( g8 B5 d6 V5: A3 p# }7 B& N: x2 O: L
6) N y# W# u: T* ]7 C8 z. r
7
7 Z8 T+ a5 t0 V. H4 G, ^+ ?# Z J82 {0 {4 x$ Q/ q: n* v0 h
9
$ f; e5 I. R* ^# N" v10# l# d' H# x5 z& j, u* F
# Y$ |/ o, w1 ^1 `
我们创建一个四个不同区域的聚类,centers=4,一共300节点。; C, p. Y) H) D9 U. ?9 V+ O" U
如上程序生成图像所示结果。
5 c1 M2 h+ X! D" \8 c- ^0 r尽管没有给数据分配目标标签,但直接使用肉眼还是可以看出来一共是四类。+ G t3 _) p: t
kmeans就可以通过算法办到,无需任何关于目标的标签或者潜在的数据分布的信息。5 ^/ b5 M8 d( S/ s, L- h
当然尽管,kmeans在opencv中是一个统计模型,不能调用api中的train和predict。相反,使用cv2.kmeans可以直接使用这个算法。。为了使用这个模型,我们需要指定一些参数,比如终止条件,和初始化标志。* C1 u9 d2 M3 r
0 @! i o( l! e$ y$ ?1 }
我们让算法误差小于1.0(cv2.TERM_CRITERIA_EPS),或者已经 执行了十次迭代(cv2.TERM_CITTERIA_MAX_ITER)时候终止。
^4 u, e5 i' K/ {; B8 U0 N( {% F/ y& m" E5 |+ B- h0 U
3 ^4 K* f; v1 Y3 Y' x
- \3 w+ g* H c. Ximport matplotlib.pyplot as plt2 c' t0 h6 w2 C8 h& G
import pylab
$ `* T' G) y/ V T: [4 O) Afrom sklearn.datasets._samples_generator import make_blobs
! [( M$ a H5 D1 ?2 b/ k4 fimport cv2
- G' V. Q7 |! w' o+ l, c* oimport numpy as np
0 ]( {/ l6 o( ]; j4 o) r! g* d: Q' ?5 R8 Y. g9 @' C
plt.style.use('ggplot')6 f% f" r' k3 C' B: k9 X
x,y=make_blobs(n_samples=300,centers=4,cluster_std=1.0,random_state=10)
* Z" [: |+ L' Y N/ wplt.scatter(x[:,0],x[:,1],s=100)
8 |. C1 U w- l6 R2 z8 J) |( k) Y# ], V. ], Y
' P8 B& T, Z) L, |8 e. ?
criteria=(cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER,10,1.0); [& J5 B, b, v `- B! X
flags=cv2.KMEANS_RANDOM_CENTERS, }2 n/ C7 D9 U' }9 J3 z4 q: W
compactness,labels,centers=cv2.kmeans(x.astype(np.float32),4,None,criteria,10,flags)
. R. ? u! A4 {6 \3 r& ]print(compactness)
" C* ]5 D4 w! l
0 X7 ]( x8 O. _plt.scatter(x[:,0],x[:,1],c=labels,s=50,cmap='viridis')" J* [) X5 o; o1 l* l2 T( E
plt.scatter(centers[:,0],centers[:,1],c='black',s=200,alpha=0.5)( o5 }! P0 E9 s. r% g( s' p0 C# h6 ]
2 g$ _8 h! |# f# @/ \
pylab.show()8 A' u3 K2 N: t$ b. e' f l, t/ K: \
+ {+ n/ T6 J: @3 r+ m! Y* W5 k
: w* S1 a* t" `6 H
& L( ]$ W$ q, b) ?3 S) Z
4 S" U) y2 T3 ?' j c, r2 \' i, G
: U0 N$ I5 n0 Z o4 V$ R
! R$ T. ]' b2 X: \4 _0 V: T3 ?8 { K1 k9 z) W D% K1 K
1
) v8 p) N; Q( l* q* S" G6 V23 ~3 c4 }/ t% e3 l
38 n, G. C, y! k2 J
4: z# L$ l+ T9 N8 H- S, z
53 N {% x7 t S6 M
6
5 \; V) A( O; j3 ~+ [& N7
: f9 K) V3 x1 i8
2 F! h$ c0 y& t$ { t% {% u' e* q' y9: p! z' w1 i4 R4 |2 [) k8 h |1 B2 }
10
4 V: n8 e% ~1 L# R. r K, e7 B11' j$ ^; \& H7 |6 ^
12" O6 U! ~, j! Z. q" B9 M
13, U. M+ h4 a& G, g6 k
142 K8 U( |( i1 z* g' N3 p
15% j) M9 [& ~; P; V
16
3 `/ |: G% d7 e0 ~17* h0 D: g0 o" F6 H# i; J
18
: ^; Q0 F7 v; J7 z19
" `2 f4 `! {: I3 m: d' b/ B+ I0 m207 @1 h; d1 T3 B( s( Q
21' o) j9 ?; ?3 |% t! h7 f
224 L& G$ y9 v( ]
23) F9 ^( T( J0 J t/ h% a
249 j- G3 f" p0 H- r% h$ n' W
255 _* k) B* |' M( @
26 ^5 ]7 |+ u! w7 {/ D
上面程序结果可以产生图2的效果。# w/ ^5 a8 ~- {. y6 ~2 d0 J
0 l3 t+ a. ?" \: x; p
print(compactness)这个变量,表示每个点到它聚类中心的距离平方和。较高紧凑都表明所有的点更靠近他们的聚类中心,较低 的紧凑度表明不同的聚类可能无法的很好区分。0 X/ J% Z: i4 K7 A# V
8 r8 x; l7 C2 U+ y5 T$ _当然,这个是非常依赖于x中的真实值。如果点与点之间最初的距离比较大,那我们就很难得到一个非常小的紧凑度。因此,把数据画出来,并按照聚类标签分配不同颜色,可以显示更多信息。
" g/ K4 I/ V6 Y& z! H2 W* v6 p" u& N2 s' H/ U0 a6 N1 \3 U
3理解kmeans
0 r9 A. T. b; u$ J$ hkmeans是聚类众多常见期望最大化中一个具体的例子。简单来说,算法处理的过程如下所示:
; F! v8 {8 c* d. S$ L: f1.从一些随机的聚类中心开始/ x) r& W' A9 @/ l, [
2.一种重复直到收敛
- d* X- t @, S: }
6 F( u" a. F" s3 E. I$ k4 h' K期望步骤:把所有的数据点分配到离他们最近的聚类中心。
8 Y+ f, H y F4 i# \2 g最大化步骤:通过取出聚类中所有点的平均来更新聚类中心。
# T6 W+ d8 z f8 @4 _7 n5 g1 c, d4 v+ \, D0 Q
它涉及到一个定义聚类中心位置的适应性函数最大化的过程。对于kmeans最大化是计算一个聚类中所有数据点的算数平均得到。& @2 s+ ]0 V, G. C; I2 G6 I: D; u
————————————————
) ?: ~+ C& J& y; F0 p7 X版权声明:本文为CSDN博主「紫钺-高山仰止」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。" a9 m9 W% Q) R! P9 R l2 L
原文链接:https://blog.csdn.net/qq_43158059/article/details/126789000
8 |$ `" l; Z# ]$ O. }4 T8 G
) v" ]: `, o/ h1 D K+ q2 g
2 v7 L( X% n& a% ^' d+ ` |
zan
|