- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 569587 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 176099
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
【机器学习】无监督学习的概念,使用无监督学习发现数据的特点
3 r2 m5 t9 u4 _, m0 \" C; j% Z0 u3 P5 t0 X/ l
到目前位置,我们主要把注意力集中在监督学习的问题上,数据集中的每个数据点都有一个已知的标签或者目标值。然而如果面对没有已知的输出结果,或者没有人监督学习算法,我们要怎么做。" a# Y: J& l0 W; B! S0 f
9 n; |6 ^3 `8 w+ A( v$ T8 Z( w这就是无监督学习 。3 d$ B( v; s6 A/ b5 Q' F4 I
3 m% j, B: u3 L) R0 G& D) x \; i
在无监督、非监督学习中了,学习过程仅使用输入数据,没有更多的指导信息,要求从这些数据中提取知识。我们已经讨论了非监督学习众多形式的一种降维。另一个普及的领域就是聚类分析。他的目的是吧数据分为相似元素组成的不同区域中。5 ^9 p- Y# P' i# R/ T
9 ?% B" Q* G3 M' q2 R' `在本章中,我们想要理解不同的聚类算法如何从简单到,无标记的数据集中提取特征。这些结构特征,可以用于特征处理,图像处理,甚至是作为无监督学习任务的预处理步骤。
( c6 T( E4 d i/ M ^, `) t% N. J! l作为一个具体的例子,我们将对图像进行聚类,将色彩空间降到16位数。, A Q! \4 P, ~9 x- T) @
& c5 L; a, i) f* j+ i解决的问题
' l E% k5 t; q0 c9 q* h( X( l1.K-means聚类和期望最大化是什么?如何在opencv中实现这些算法。
' A9 R, o( J5 _0 G1 A2.如何在层次树中使用聚类算法。他带来的好处有哪些。$ s* X2 ?7 |$ q3 H z# w/ h# }
3.如何使用无监督学习,进行预处理,图像处理,分类。2 s. y4 `. Y; A5 R
7 |3 n7 U T8 d8 N% v1 理解无监督学习
9 t, ~9 c% e; N5 Y9 g1 @无监督学习可能有很多形式,但是他们的目标总是把原始数据转化为更加丰富,更加有意义的表示,这么做可以让人们更容易理解,也可以更方便的使用机器学习算法进行解析。9 K2 c0 O5 U/ [ `) ~
无监督学习的应用包括一下应用:/ \ [9 L2 Z. B1 Q7 }7 {
1降维:他接受一个许多特征的高维度数据表示,尝试对这些数据进行压缩,以使其主要特征,可以使用少量的携带高信息量的数据来表示。
/ K" E( m" f) p D5 r2因子分析:用于找到导致被观察的到的数据的隐含因素或者未观察到的方面。$ O& e. f% h* q9 O! y9 n. K
3聚类分析:
6 @. W2 n. e: J4 _6 L/ \" D尝试把数据分成相似元素组成的不同组。; |7 Q/ ^; g6 P# M0 N
" s" G, d- X F) A" {0 g; r无监督学习主要的挑战就是,如何确定一个算法是否出色,或者学习到什么有用内容,通常评估一个无监督学习算法结果的唯一方式是手动检查,并确定结果是否有意义。3 t" D; R" Q" ]8 G
/ U8 c6 t6 P) H+ y- ]4 x5 S
话虽然如此,但是非监督学习,可以非常有,比如作为预处理或者特征提取的步骤。; V- f9 m1 K# Q S( ]/ H; Y4 X
4 x& m8 R: V, s/ Z0 n2 N
2理解K-means聚类2 G2 f; i2 {/ c$ ?7 |/ w. S9 r
Opencv 提供最有用的聚类算法是k-means,因为它会从一个没有标记的多维度数据集中搜寻预设的K个聚类结果。
" h6 \1 P, ?. j) }% q! g) `# ]; g3 o' a* I
它通过两个简单的假设来完成最佳聚类了。' f) H, S F4 E+ ]/ {7 P" ^
1 每个聚类中心都是属于该类别的所有数据点的算术平均值
2 a9 q8 d+ o3 Y" h* z9 r4 Z2 聚类中的每一个点相对其他聚类中心,更靠近本类别的中心。
# \) }9 \9 P$ X
6 G. ]$ K5 u8 I) ]$ |2.1 实现第一个kmeans例子
8 E. f9 }, [# Y u. `1 E/ ~首先,生成一个包含四个不同点集合的数据集。为了强调这是一个非监督的方法,我门在可视化将忽略哪些标签。使用matplotlib进行可视化。
7 Q6 B* {0 b9 X8 }8 p8 D3 c: o& O, S
- [7 Z! W" g5 Uimport matplotlib.pyplot as plt
& Z& }% M0 w6 v5 c% [5 Pimport pylab
8 W- @8 x! p9 x9 y! P( ]from sklearn.datasets._samples_generator import make_blobs
' Z0 H7 x2 }, ]5 u0 w& o% R, @6 B4 c. E
plt.style.use('ggplot')
* I+ b, G2 g7 n4 x& @) q! k2 [x,y=make_blobs(n_samples=300,centers=4,cluster_std=1.0,random_state=10)4 |* e6 ~5 j, E' W( t7 \
plt.scatter(x[:,0],x[:,1],s=100)* a& b* @$ q1 t3 {' \+ N
pylab.show()" `7 K \' l* o& T0 j l" A9 C
1 v3 m( D0 ~6 K! }. J
, U& Z, w/ ?; l6 M- g# z1
T/ y; ] h- i; A% M21 Y* |! Y0 F9 G+ L: y$ ^6 M: [
3
* d* H) e3 b4 d( I' }4
2 _0 o( I+ ~$ O) z6 [4 M5
: K j/ |. o) ^# I$ T6
1 T, t" g0 m5 h. i6 u7! R5 y% ~/ l6 y: @! d6 O
8/ t+ E! m/ q& V4 S
9
, X, I2 p2 {* Y3 z7 r, W10; j% y, l/ y( s3 l$ d9 Z, {. i
0 U8 a$ q* r! N- m% c1 e% p. y
我们创建一个四个不同区域的聚类,centers=4,一共300节点。
7 ~1 i# G4 _3 q H; ~ m4 K如上程序生成图像所示结果。. S" H) t3 y: [5 _. U, y
尽管没有给数据分配目标标签,但直接使用肉眼还是可以看出来一共是四类。
* H$ K" h. J3 P5 }! G5 Ukmeans就可以通过算法办到,无需任何关于目标的标签或者潜在的数据分布的信息。! e$ W! \' e0 f& J+ s, I$ v# }
当然尽管,kmeans在opencv中是一个统计模型,不能调用api中的train和predict。相反,使用cv2.kmeans可以直接使用这个算法。。为了使用这个模型,我们需要指定一些参数,比如终止条件,和初始化标志。
( T1 h0 l9 J+ W# S0 P2 ^& X `0 X: n. H/ L
我们让算法误差小于1.0(cv2.TERM_CRITERIA_EPS),或者已经 执行了十次迭代(cv2.TERM_CITTERIA_MAX_ITER)时候终止。) g- m& f1 ~1 S
2 L" I$ K9 @1 o1 g
5 U/ B; l4 N8 b9 p1 y/ J
3 B: U4 @* D$ b" I! K0 U$ Wimport matplotlib.pyplot as plt: i# u8 U+ P/ v+ l% F7 T
import pylab
) e5 U) I& I; I# e0 v0 nfrom sklearn.datasets._samples_generator import make_blobs5 p2 H) }2 S' N% r( O1 [
import cv2
6 B1 ]5 t) C9 @import numpy as np
' _1 X+ O' |2 ~: A" B9 V6 O
. b7 @. w4 x: w3 _plt.style.use('ggplot'); w* b2 ] |% l( r$ z& V
x,y=make_blobs(n_samples=300,centers=4,cluster_std=1.0,random_state=10)$ E0 M. c' [3 K# a& z. q+ T$ i
plt.scatter(x[:,0],x[:,1],s=100)/ G0 l5 Z0 a: j" A# _
" w v6 h7 W9 Q- z; {; G
6 x) F6 G g4 Y/ P
criteria=(cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER,10,1.0)
# z- z9 W" ~8 I4 a& M# j+ eflags=cv2.KMEANS_RANDOM_CENTERS
: B/ t! ?2 H1 w( H, [& D( Kcompactness,labels,centers=cv2.kmeans(x.astype(np.float32),4,None,criteria,10,flags)
! j2 I% `) p0 `print(compactness)
: [9 m& c R! V3 d; |. } I
5 v0 j: I8 i/ o: m/ b( b5 pplt.scatter(x[:,0],x[:,1],c=labels,s=50,cmap='viridis')$ w f& s+ v) E% s" F
plt.scatter(centers[:,0],centers[:,1],c='black',s=200,alpha=0.5)& b" {7 Z( o7 O. a. b, g
2 Q+ Y: a9 g" ppylab.show()
; m7 {4 u( y5 c5 D- y
) K( g% p. ^0 O; U
; b. h2 y2 B+ h- d2 U) ]% p! h# S& G7 F6 ` s2 M0 h
! |* N3 {- l# S, T, B+ e( X, V: ~" }% H
% }0 _1 {( S8 v1 h" i2 k8 V4 `% `# g1 g$ j% ?
+ k$ ^; x0 l0 K) g1 K: {
17 p+ N% @( Y5 M8 S/ U4 W& @
2: V. ^, N. c& d v4 r
3* T9 T# a& d% ]- ?7 t
4" C1 T- ~8 l6 I1 K( f6 J0 Q' _! ?- a
5) `: N% K/ S7 D6 d6 Y% I, b* i/ U
69 d, h/ I7 ~2 m4 M" ]# I! S8 Y4 Y/ w
7
3 K/ s% j5 p2 {9 s8
B4 D0 I7 x% w2 ?4 ^ z7 J9* g4 ^ Y" z$ ^( w: u. \( U! L
103 n3 ^5 a G. { E6 b/ D
11+ G( }" p ^+ L& D3 C5 i: k
12
+ c6 A1 K: j* R* Y5 m( ?# G0 P8 P139 @) Q) o5 v: ^1 t; c
14
6 L1 P3 U9 Q- B! p8 e1 R9 V. n15
1 G3 L- ^% F+ b2 G166 u+ ?0 v8 t7 ^! X
176 c8 [' C' L& z$ H# _. L9 b- }) d6 \
18
3 h2 F( T5 S& O" |: [, ~7 f- u8 }19( Y7 @- l- s4 i! \' ^
20
9 h$ f1 h _* J$ T4 m2 L g212 D! V o5 q/ G U! Y% r
22/ ~, K5 T' U0 p/ Z5 `6 O: r( B! j
23" ^1 p2 `3 |5 P! _& b6 D5 Q0 m+ H5 ~
24" c: v, ^/ i! Z. [) }' N6 O
25! ^" o4 g3 W. f3 k" `% D
26. j! L3 S) H/ C* \# f
上面程序结果可以产生图2的效果。6 I$ m1 a0 t8 I( C! h* j3 V6 m
! D+ x; q# e& Y: Y8 Z0 xprint(compactness)这个变量,表示每个点到它聚类中心的距离平方和。较高紧凑都表明所有的点更靠近他们的聚类中心,较低 的紧凑度表明不同的聚类可能无法的很好区分。
- }$ \* |% X! m; O* j
! }& `% o5 _7 x% U# ^* P当然,这个是非常依赖于x中的真实值。如果点与点之间最初的距离比较大,那我们就很难得到一个非常小的紧凑度。因此,把数据画出来,并按照聚类标签分配不同颜色,可以显示更多信息。
6 ~0 M2 D7 D0 w6 |' [4 e# U" \) C8 ^. a8 g& l6 M
3理解kmeans! C% A1 q. }0 W: g1 B! `
kmeans是聚类众多常见期望最大化中一个具体的例子。简单来说,算法处理的过程如下所示:
5 d. S9 f9 d- w- |8 U1.从一些随机的聚类中心开始
4 \" X0 Q- X8 K" @( Z+ g- ~1 H. p2.一种重复直到收敛
& L$ U. |. J8 [0 n
8 f$ b" \' x+ p/ M1 w9 y. Z* E期望步骤:把所有的数据点分配到离他们最近的聚类中心。3 G* G% f& d) @
最大化步骤:通过取出聚类中所有点的平均来更新聚类中心。 E9 f! ?$ [+ D' | U8 }8 f
- Z3 L3 O4 c4 V' D N. m7 O3 D' ?
它涉及到一个定义聚类中心位置的适应性函数最大化的过程。对于kmeans最大化是计算一个聚类中所有数据点的算数平均得到。( e2 `& N# z7 r1 l2 G
————————————————
$ q s) S# A6 @/ k9 H5 ~* {- b版权声明:本文为CSDN博主「紫钺-高山仰止」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。7 U: o% t6 N2 Q* t# U
原文链接:https://blog.csdn.net/qq_43158059/article/details/1267890003 B7 C8 ^ ^8 k# O
( O Q7 s" W7 k( |8 r# H- V9 w
W* e' l! C7 b& ^9 {5 h
|
zan
|