- 在线时间
- 1630 小时
- 最后登录
- 2024-1-29
- 注册时间
- 2017-5-16
- 听众数
- 82
- 收听数
- 1
- 能力
- 120 分
- 体力
- 563241 点
- 威望
- 12 点
- 阅读权限
- 255
- 积分
- 174195
- 相册
- 1
- 日志
- 0
- 记录
- 0
- 帖子
- 5313
- 主题
- 5273
- 精华
- 3
- 分享
- 0
- 好友
- 163
TA的每日心情 | 开心 2021-8-11 17:59 |
|---|
签到天数: 17 天 [LV.4]偶尔看看III 网络挑战赛参赛者 网络挑战赛参赛者 - 自我介绍
- 本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。
 群组: 2018美赛大象算法课程 群组: 2018美赛护航培训课程 群组: 2019年 数学中国站长建 群组: 2019年数据分析师课程 群组: 2018年大象老师国赛优 |
【机器学习】无监督学习的概念,使用无监督学习发现数据的特点* f1 l8 W g& B) n; |3 ]- u: a
2 O7 x. T' }6 l: Z- q2 o* N3 D
到目前位置,我们主要把注意力集中在监督学习的问题上,数据集中的每个数据点都有一个已知的标签或者目标值。然而如果面对没有已知的输出结果,或者没有人监督学习算法,我们要怎么做。4 H7 e5 S3 N8 E/ G; i* K9 ~6 \
2 ]1 [! b2 x% K& Q0 |5 b! i8 u
这就是无监督学习 。
- I! E$ Z' O) c+ F0 [: M! S( j8 o: }: g3 ?- o$ { {" |5 r1 D$ ?
在无监督、非监督学习中了,学习过程仅使用输入数据,没有更多的指导信息,要求从这些数据中提取知识。我们已经讨论了非监督学习众多形式的一种降维。另一个普及的领域就是聚类分析。他的目的是吧数据分为相似元素组成的不同区域中。8 B- E- i3 y+ z0 n" V- y" g
" v3 d% {$ T6 {# N% O ?
在本章中,我们想要理解不同的聚类算法如何从简单到,无标记的数据集中提取特征。这些结构特征,可以用于特征处理,图像处理,甚至是作为无监督学习任务的预处理步骤。
3 O, S& {* h& Z% l* g作为一个具体的例子,我们将对图像进行聚类,将色彩空间降到16位数。1 J! m2 ?3 y- F# B+ Z9 E
+ ?1 ^# H. s# U/ _2 C( ~
解决的问题
$ ?7 J! [9 [( ]( W1.K-means聚类和期望最大化是什么?如何在opencv中实现这些算法。$ Y2 N9 F3 d2 e0 H$ `3 q
2.如何在层次树中使用聚类算法。他带来的好处有哪些。, D- H2 }8 \1 |4 g
3.如何使用无监督学习,进行预处理,图像处理,分类。5 L7 J2 j' Z8 U0 a( Q5 o# C+ c" `
6 F/ r2 r1 O% ~8 Q1 理解无监督学习1 D8 o+ a7 r* }
无监督学习可能有很多形式,但是他们的目标总是把原始数据转化为更加丰富,更加有意义的表示,这么做可以让人们更容易理解,也可以更方便的使用机器学习算法进行解析。$ t$ V) e% d1 j" t
无监督学习的应用包括一下应用: Y" M' u! q, i$ U! U G1 s
1降维:他接受一个许多特征的高维度数据表示,尝试对这些数据进行压缩,以使其主要特征,可以使用少量的携带高信息量的数据来表示。1 t; d$ K! p. U" j U" S/ Z
2因子分析:用于找到导致被观察的到的数据的隐含因素或者未观察到的方面。
0 D/ N7 X2 y4 T! ~3聚类分析:
8 V9 [* F+ r, r+ R, u3 G0 R7 f; F+ _尝试把数据分成相似元素组成的不同组。
3 k8 R+ z; Q2 ]* f5 D/ d6 I) P! s2 a8 ? S# J7 Z; i
无监督学习主要的挑战就是,如何确定一个算法是否出色,或者学习到什么有用内容,通常评估一个无监督学习算法结果的唯一方式是手动检查,并确定结果是否有意义。
9 O. t( c S4 k! d' Y& _ a: E+ _' \2 ?3 c* s2 r1 s2 M
话虽然如此,但是非监督学习,可以非常有,比如作为预处理或者特征提取的步骤。* O2 v! }1 C7 {! n
+ a; H. x5 q# _. b% q# ?2理解K-means聚类& y; i. Z& R/ T6 E: Y
Opencv 提供最有用的聚类算法是k-means,因为它会从一个没有标记的多维度数据集中搜寻预设的K个聚类结果。
$ }; b# }& u5 A
7 {! W" |$ [$ c4 y! x6 [3 b它通过两个简单的假设来完成最佳聚类了。) M$ c* r. O, ~. Y1 T) \4 s# @" T
1 每个聚类中心都是属于该类别的所有数据点的算术平均值
) b* o* f6 O$ V3 u7 ]2 c! G4 u. I2 聚类中的每一个点相对其他聚类中心,更靠近本类别的中心。; x9 H6 I7 X! L( E; l# X4 @
* R# H& b; x. E5 T- G4 | M2.1 实现第一个kmeans例子
[( q0 |% E' A% n" x+ T3 F6 @首先,生成一个包含四个不同点集合的数据集。为了强调这是一个非监督的方法,我门在可视化将忽略哪些标签。使用matplotlib进行可视化。; U H$ N2 R, z$ k7 Z6 [
& [6 Q. j0 N: _( Fimport matplotlib.pyplot as plt
% r/ C7 V) x# p8 z* vimport pylab
. R* x6 j* F- F- Mfrom sklearn.datasets._samples_generator import make_blobs. @* |/ p: M0 w# Q# Q
& x0 O5 y2 j0 J+ k+ R! c( o; ?
plt.style.use('ggplot')
- y3 b; M* X. Kx,y=make_blobs(n_samples=300,centers=4,cluster_std=1.0,random_state=10)
* O# @0 E5 ~/ u9 L+ Fplt.scatter(x[:,0],x[:,1],s=100)! z& ~( [: M" _) u
pylab.show()
) _% B- G3 s h0 U
* `) G- W m3 O1 [) }5 X, u, c- S8 _3 X
1
' A: ?9 P6 ~0 w. p& V20 Y" H8 b; p. [7 Y- m2 \
3
. Z4 d D9 {8 P) P: y7 C/ C/ Z( l48 q g& ~9 x, b/ \! N
53 {1 L5 l8 b$ x! v" T
6- A! k Z) J' y- }4 @: F
77 S2 o ?) D; k. B
8 @1 j6 u% R, v* M+ P
9: }/ g1 L& E- n8 l+ Z- M
10, @' F0 b; s) ]1 ~% T0 d
" N( ^4 E% s$ D& G4 e" b我们创建一个四个不同区域的聚类,centers=4,一共300节点。
, R) r6 O% R$ K如上程序生成图像所示结果。4 ~/ z6 E+ } R' A( O* d$ y
尽管没有给数据分配目标标签,但直接使用肉眼还是可以看出来一共是四类。
6 T: q9 U2 K2 k( V- ekmeans就可以通过算法办到,无需任何关于目标的标签或者潜在的数据分布的信息。: x. S; q% v6 J9 E& p
当然尽管,kmeans在opencv中是一个统计模型,不能调用api中的train和predict。相反,使用cv2.kmeans可以直接使用这个算法。。为了使用这个模型,我们需要指定一些参数,比如终止条件,和初始化标志。
8 y. P. s1 S- @7 J! k
9 ~$ r: M' w, q5 m+ w我们让算法误差小于1.0(cv2.TERM_CRITERIA_EPS),或者已经 执行了十次迭代(cv2.TERM_CITTERIA_MAX_ITER)时候终止。* A' l0 S! P9 L1 `7 U7 E: [
* p& ` p4 ~, a
U2 B7 p; D1 x j0 E- A! j6 y2 y' C: X( C+ ?
import matplotlib.pyplot as plt- N' _$ g2 N$ Y4 |* Z+ d
import pylab
% r2 a! H' u+ W+ q5 A: jfrom sklearn.datasets._samples_generator import make_blobs
/ i* ^. R+ j; ~import cv2( E! x" x2 o+ W3 @* u+ m- U
import numpy as np$ }7 X6 P+ m0 f) q+ a
c) |, Z4 ~0 G3 P( W' c
plt.style.use('ggplot')
- H" x* D+ J) z9 {" r3 P! Qx,y=make_blobs(n_samples=300,centers=4,cluster_std=1.0,random_state=10)- ?- U8 k0 {. c1 {1 A* a. V
plt.scatter(x[:,0],x[:,1],s=100)$ t0 }' ]- X8 L6 q; G
8 l1 b1 Q; V/ `" ~; o7 l Y' V" T
0 n; Z1 a/ w9 o* xcriteria=(cv2.TERM_CRITERIA_EPS+cv2.TERM_CRITERIA_MAX_ITER,10,1.0)
$ a$ B2 v8 W4 }* ?) qflags=cv2.KMEANS_RANDOM_CENTERS+ u6 A/ p- P8 Z8 H
compactness,labels,centers=cv2.kmeans(x.astype(np.float32),4,None,criteria,10,flags)6 L, |2 L& p8 q! I! m7 b' |3 t. T
print(compactness)
+ d# C) }+ w/ `& k
' s" }9 L4 `9 W' Wplt.scatter(x[:,0],x[:,1],c=labels,s=50,cmap='viridis')
& x7 K- ^' R( ?: O9 q& P" l) ]plt.scatter(centers[:,0],centers[:,1],c='black',s=200,alpha=0.5)4 {2 `1 B; U9 s
) r/ Q( l- P$ W7 U4 H4 y
pylab.show()4 N. f$ J/ x$ A; Y) H
6 D4 C$ \ [2 K/ ~9 L6 L! y
: }* |1 f( X& |1 f3 e! ]7 G5 u
$ E; ^* \# j( |' F
! S5 r+ T% r+ e7 \% j5 i
. C+ Z, h* t& _. X* y. o6 N
) }: V3 X( ^. _& D7 u7 b" ~% s! e8 x) `+ A6 p2 i$ v, ~6 Y
12 A4 P# d( A6 J
2) ?# _0 r( }0 ]5 h% f K
3
- ^+ S# y! ~; T: L7 s( ]9 l( N5 T4
5 s8 ]2 Y" j( w; t! e: O1 F5
% S( o1 f4 |/ O( N0 G6
+ _6 c% s% T1 U+ }. V7/ I7 R% U; s9 w% ]
8. F$ ]$ \2 J2 Z+ f8 _5 a5 ]
9
1 `: Q) f: N0 t. ]7 u, c6 [3 p2 S10
+ T' E4 k" n9 F1 Q8 Y11$ i. n$ N3 j o2 i$ T
12
% A) K- _) q2 C. S$ D# d) b. L# ~7 Z9 h13/ ~3 X: }- i( B, v
147 K* T8 h0 Y$ q1 U7 S* f
15
3 v( v- z: N5 i; T& g) l166 ^6 f) J/ Y8 m- Y
17
: D" g+ s- F5 {* M2 C6 S% h# R2 A! c18* f& P! h* q* M# d4 K2 N% l. S
19' c% d# z8 }2 A$ T
206 w r3 L2 H! [4 K2 b7 ]2 c) `
217 s9 ]9 V7 D1 U& W5 P$ V- A
22
A. R% f' z9 i( V6 ^, m' c23
( R* d( e, M, l% @) ] @, `$ P240 l; @8 V) ~: N) m' `. m
25
* E& y* C+ H# g3 t5 L4 U26( p) t6 A" p1 X) R
上面程序结果可以产生图2的效果。
& r ^. A+ B4 L% [- ^+ J8 H
8 S6 H, z" u1 B9 Y: Q* Kprint(compactness)这个变量,表示每个点到它聚类中心的距离平方和。较高紧凑都表明所有的点更靠近他们的聚类中心,较低 的紧凑度表明不同的聚类可能无法的很好区分。
- Q& [; P- c, z& H5 n3 G" ~+ [" K0 m8 D) k! {# w& D& V
当然,这个是非常依赖于x中的真实值。如果点与点之间最初的距离比较大,那我们就很难得到一个非常小的紧凑度。因此,把数据画出来,并按照聚类标签分配不同颜色,可以显示更多信息。
1 Z0 k$ o& c$ [. j, @/ `- f) @$ Z: d$ a# d- A4 X
3理解kmeans* @6 E; W+ n3 o! @, c' j% Q. a9 u
kmeans是聚类众多常见期望最大化中一个具体的例子。简单来说,算法处理的过程如下所示:8 s$ x' G3 d& R ]- @2 u
1.从一些随机的聚类中心开始% i/ o( Y7 F# W+ {
2.一种重复直到收敛
3 B; O1 s% K3 A( ]1 Y( d) F
+ H R* q0 Z) L期望步骤:把所有的数据点分配到离他们最近的聚类中心。
; i5 K9 \! ~* k0 k) o最大化步骤:通过取出聚类中所有点的平均来更新聚类中心。 _' v4 C }/ _7 S/ G) g
2 r. T0 I% g2 y6 W( d它涉及到一个定义聚类中心位置的适应性函数最大化的过程。对于kmeans最大化是计算一个聚类中所有数据点的算数平均得到。4 u ~2 o2 L6 V1 M: F
————————————————4 W. z3 ~9 Q0 c7 C9 S
版权声明:本文为CSDN博主「紫钺-高山仰止」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。; G* m' Z+ x+ G5 m# ^6 m* j1 S
原文链接:https://blog.csdn.net/qq_43158059/article/details/1267890004 K& q$ C7 A8 U% d8 U
. S5 ~$ \6 |0 D5 i$ ^$ u
9 D3 w) z% x/ K& ?0 Q2 P, B |
zan
|