成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

opencv python K-Means聚類

superPershing / 478人閱讀

摘要:指定最大迭代次數(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_CENTERScv2.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)文章

  • K-meansPython中的實(shí)現(xiàn)

    摘要:算法的關(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)單 速度快 ...

    nanfeiyan 評(píng)論0 收藏0
  • Python數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí),快速掌握聚類算法和關(guān)聯(liá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)題?本文就為大家揭曉答...

    Anchorer 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<