摘要:指定最大迭代次數(shù)的整數(shù)要求的準(zhǔn)確性重復(fù)試驗(yàn)算法次數(shù),將會(huì)返回最好的一次結(jié)果該標(biāo)志用于指定初始中心的采用方式。第一列對(duì)應(yīng)于所有個(gè)人的高度,第二列對(duì)應(yīng)于它們的權(quán)重。類似地,剩余的行對(duì)應(yīng)于其他人的高度和重量。
K-Means Clustering in OpenCV
cv2.kmeans(data, K, bestLabels, criteria, attempts, flags[, centers]) -> retval, bestLabels, centers
data: np.float32數(shù)據(jù)類型,每個(gè)功能應(yīng)該放在一個(gè)列中
nclusters(K):集群數(shù)
bestLabels:預(yù)設(shè)的分類標(biāo)簽:沒(méi)有的話 None
criteria:它是迭代終止標(biāo)準(zhǔn),滿足此條件時(shí),算法迭代停止,實(shí)際上,它應(yīng)該是3個(gè)參數(shù)的元組。它們是(type,max_iter,epsilon)
type又有兩種選擇:
cv2.TERM_CRITERIA_EPS - 如果達(dá)到指定的精度epsilon,則停止算法迭代。
cv.TERM_CRITERIA_MAX_ITER - 在指定的迭代次數(shù)max_iter之后停止算法。
cv.TERM_CRITERIA_EPS+ cv.TERM_CRITERIA_MAX_ITER - 當(dāng)滿足上述任何條件時(shí)停止迭代。
max_iter - 指定最大迭代次數(shù)的整數(shù)
epsilon - 要求的準(zhǔn)確性
attempts:重復(fù)試驗(yàn)kmeans算法次數(shù),將會(huì)返回最好的一次結(jié)果
flags:該標(biāo)志用于指定初始中心的采用方式。通常會(huì)使用兩個(gè)標(biāo)志:cv2.KMEANS_PP_CENTERS和cv2.KMEANS_RANDOM_CENTERS
retval:它是從每個(gè)點(diǎn)到它們相應(yīng)中心的平方距離之和
bestLabels:這是標(biāo)簽數(shù)組
centers:這是一組聚類中心
Data with Only One Feature假設(shè)只有一個(gè)特征的數(shù)據(jù),即一維的,我們可以采用我們的T恤問(wèn)題,只使用人的高度來(lái)決定T恤的大小。
因此,我們首先創(chuàng)建數(shù)據(jù)并在Matplotlib中繪制它
import numpy as np import cv2 import matplotlib.pyplot as plt x = np.random.randint(25,100,25) y = np.random.randint(175,255,25) z = np.hstack((x,y)) z = z.reshape((50,1)) z = np.float32(z) plt.hist(z,256,[0,256]),plt.show()
現(xiàn)在我們應(yīng)用KMeans功能。我們的標(biāo)準(zhǔn)是,每當(dāng)運(yùn)行10次迭代算法或達(dá)到epsilon = 1.0的精度時(shí),停止算法并返回答案.
# Define criteria = ( type, max_iter = 10 , epsilon = 1.0 ) criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0) # Set flags (Just to avoid line break in the code) flags = cv2.KMEANS_RANDOM_CENTERS # Apply KMeans compactness,labels,centers = cv2.kmeans(z,2,None,criteria,10,flags) A = z[labels==0] B = z[labels==1] # Now plot "A" in red, "B" in blue, "centers" in yellow plt.hist(A,256,[0,256],color = "r") plt.hist(B,256,[0,256],color = "b") plt.hist(centers,32,[0,256],color = "y") plt.show()Data with Multiple Features
我們?cè)O(shè)置大小為50x2的測(cè)試數(shù)據(jù),其高度和權(quán)重為50人。 第一列對(duì)應(yīng)于所有50個(gè)人的高度,第二列對(duì)應(yīng)于它們的權(quán)重。 第一行包含兩個(gè)元素,其中第一行是第一人的高度,第二行是他的重量。 類似地,剩余的行對(duì)應(yīng)于其他人的高度和重量。
import numpy as np import cv2 import matplotlib.pyplot as plt X = np.random.randint(25,50,(25,2)) Y = np.random.randint(60,85,(25,2)) Z = np.vstack((X,Y)) # convert to np.float32 Z = np.float32(Z) # define criteria and apply kmeans() criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0) ret,label,center=cv2.kmeans(Z,2,None,criteria,10,cv2.KMEANS_RANDOM_CENTERS) # Now separate the data, Note the flatten() A = Z[label.ravel()==0] B = Z[label.ravel()==1] # Plot the data plt.scatter(A[:,0],A[:,1]) plt.scatter(B[:,0],B[:,1],c = "r") plt.scatter(center[:,0],center[:,1],s = 80,c = "y", marker = "s") plt.xlabel("Height"),plt.ylabel("Weight") plt.show()Color Quantization
顏色量化是減少圖像中顏色數(shù)量的過(guò)程,這樣做的一個(gè)原因是減少內(nèi)存,某些設(shè)備可能具有限制,使得它只能產(chǎn)生有限數(shù)量的顏色,在那些情況下,也執(zhí)行顏色量化,這里我們使用k均值聚類進(jìn)行顏色量化。
import numpy as np import cv2 import matplotlib.pyplot as plt img = cv2.imread("img.jpg") Z = img.reshape((-1,3)) # convert to np.float32 Z = np.float32(Z) # define criteria, number of clusters(K) and apply kmeans() criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0) K = 8 ret,label,center=cv2.kmeans(Z,K,None,criteria,10,cv2.KMEANS_RANDOM_CENTERS) # Now convert back into uint8, and make original image center = np.uint8(center) res = center[label.flatten()] res2 = res.reshape((img.shape)) cv2.imshow("res2",res2) cv2.waitKey(0) cv2.destroyAllWindows()
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/42224.html
摘要:算法的關(guān)鍵在于初始中心的選擇和距離公式。并行設(shè)置的實(shí)現(xiàn)算法,有其中表示用方式實(shí)現(xiàn)雖然有很多參數(shù),但是都已經(jīng)給出了默認(rèn)值。 K-means算法簡(jiǎn)介 K-means是機(jī)器學(xué)習(xí)中一個(gè)比較常用的算法,屬于無(wú)監(jiān)督學(xué)習(xí)算法,其常被用于數(shù)據(jù)的聚類,只需為它指定簇的數(shù)量即可自動(dòng)將數(shù)據(jù)聚合到多類中,相同簇中的數(shù)據(jù)相似度較高,不同簇中數(shù)據(jù)相似度較低。 K-menas的優(yōu)缺點(diǎn): 優(yōu)點(diǎn): 原理簡(jiǎn)單 速度快 ...
摘要:摘要前文數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)技術(shù)入門實(shí)戰(zhàn)與大家分享了分類算法,在本文中將為大家介紹聚類算法和關(guān)聯(lián)分析問(wèn)題。比如,聚類算法可以實(shí)現(xiàn)公司客戶價(jià)值自動(dòng)劃分,網(wǎng)頁(yè)自動(dòng)歸類等。 摘要:前文數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)技術(shù)入門實(shí)戰(zhàn)與大家分享了分類算法,在本文中將為大家介紹聚類算法和關(guān)聯(lián)分析問(wèn)題。分類算法與聚類到底有何區(qū)別?聚類方法應(yīng)在怎樣的場(chǎng)景下使用?如何使用關(guān)聯(lián)分析算法解決個(gè)性化推薦問(wèn)題?本文就為大家揭曉答...
閱讀 2515·2023-04-25 19:31
閱讀 2265·2021-11-04 16:11
閱讀 2819·2021-10-08 10:05
閱讀 1527·2021-09-30 09:48
閱讀 2326·2019-08-30 15:56
閱讀 2422·2019-08-30 15:56
閱讀 2183·2019-08-30 15:53
閱讀 2278·2019-08-30 15:44