OpenCV官方文档 理解k - means聚类
理解k - means聚類
目標(biāo)
在這一章中,我們將了解k - means聚類的概念,它是如何工作等。
理論
我們將這個(gè)處理是常用的一個(gè)例子。
t恤尺寸問題
考慮一個(gè)公司要發(fā)布一個(gè)新模型的t恤。 顯然他們將不得不制造模型滿足人們各種尺寸的大小不同。 所以公司的數(shù)據(jù)甚至€?身高和體重,并把它們放到圖,如下:
公司無法為所有的尺寸制作衣服。 相反,他們把人分為小,中和大,只生產(chǎn)這3個(gè)模型來適合所有的人的只存。 這種分組方式將把人分為分成三組,而我們可以通過k - means聚類算法提供最好的3個(gè)尺寸,這將滿足所有的人的需求。 不過如果數(shù)據(jù)顯示三個(gè)尺寸并不合適,那么聚類算法也可以進(jìn)行更多更合適的分類,列如五類。 檢查下圖:
它是如何工作的呢?
這個(gè)算法是一個(gè)迭代的過程。 我們將解釋它一步一步的幫助下圖片。
考慮一組數(shù)據(jù)如下(你可以認(rèn)為這是T恤問題)。 我們需要集群數(shù)據(jù)分成兩組。
步驟:1——算法隨機(jī)選擇兩個(gè)重心,和(有時(shí),任意兩個(gè)數(shù)據(jù)作為重心)。
一步:2——它質(zhì)心計(jì)算每個(gè)點(diǎn)的距離。 如果一個(gè)測試數(shù)據(jù)更加接近,那么數(shù)據(jù)標(biāo)簽貼上 €?0。 如果它是更接近1,然后貼上 1€?€? (如果有更多的重心,貼上€?2€?,一個(gè)€?3€?等)。
在我們的例子中,我們將顏色€?0 a€?貼上了紅色,和一個(gè)€?1€?與藍(lán)色的標(biāo)簽。 以上操作后我們得到下面的圖像。
一步:3——接下來,我們計(jì)算所有藍(lán)色的平均分開點(diǎn),紅點(diǎn),這將是我們新的重心。 這是和轉(zhuǎn)移到新計(jì)算質(zhì)心。 (記住,顯示的圖片是不正確的值,而不是真實(shí)的身材尺寸,該數(shù)據(jù)僅供演示)。
再一次,執(zhí)行步驟2新重心和標(biāo)簽數(shù)據(jù)€?0 和 €?1€?。
所以我們得到結(jié)果如下:
現(xiàn)在- 2步和- 3步是迭代直到重心都是聚合不動點(diǎn)。(也可能停止根據(jù)我們提供的標(biāo)準(zhǔn),如最大迭代數(shù),或達(dá)到一個(gè)特定的準(zhǔn)確性等等)。 這些點(diǎn)是測試數(shù)據(jù)及其對應(yīng)的質(zhì)心之間的距離之和最小。 或者只是,之間的距離之和和是最低的。
最終結(jié)果幾乎看起來像下圖:
這是一個(gè)直觀的理解k - means聚類。 更多細(xì)節(jié)和數(shù)學(xué)解釋,請閱讀任何標(biāo)準(zhǔn)機(jī)器學(xué)習(xí)教科書或檢查的額外資源的鏈接。 它只是一個(gè)頂層的k - means聚類。 有很多修改算法,如何選擇初始質(zhì)心,如何加快迭代過程等。
額外的資源
總結(jié)
以上是生活随笔為你收集整理的OpenCV官方文档 理解k - means聚类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 盘点selenium phantomJS
- 下一篇: OpenCV的k - means聚类 -