成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

opencv python K-Means聚類

superPershing / 520人閱讀

摘要:指定最大迭代次數(shù)的整數(shù)要求的準(zhǔn)確性重復(fù)試驗(yàn)算法次數(shù),將會返回最好的一次結(jié)果該標(biāo)志用于指定初始中心的采用方式。第一列對應(yīng)于所有個人的高度,第二列對應(yīng)于它們的權(quán)重。類似地,剩余的行對應(yīng)于其他人的高度和重量。

K-Means Clustering in OpenCV

cv2.kmeans(data, K, bestLabels, criteria, attempts, flags[, centers]) -> retval, bestLabels, centers

data: np.float32數(shù)據(jù)類型,每個功能應(yīng)該放在一個列中

nclusters(K):集群數(shù)

bestLabels:預(yù)設(shè)的分類標(biāo)簽:沒有的話 None

criteria:它是迭代終止標(biāo)準(zhǔn),滿足此條件時,算法迭代停止,實(shí)際上,它應(yīng)該是3個參數(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)滿足上述任何條件時停止迭代。

max_iter - 指定最大迭代次數(shù)的整數(shù)

epsilon - 要求的準(zhǔn)確性

attempts:重復(fù)試驗(yàn)kmeans算法次數(shù),將會返回最好的一次結(jié)果

flags:該標(biāo)志用于指定初始中心的采用方式。通常會使用兩個標(biāo)志:cv2.KMEANS_PP_CENTERScv2.KMEANS_RANDOM_CENTERS

retval:它是從每個點(diǎn)到它們相應(yīng)中心的平方距離之和

bestLabels:這是標(biāo)簽數(shù)組

centers:這是一組聚類中心

Data with Only One Feature

假設(shè)只有一個特征的數(shù)據(jù),即一維的,我們可以采用我們的T恤問題,只使用人的高度來決定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的精度時,停止算法并返回答案.

# 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

我們設(shè)置大小為50x2的測試數(shù)據(jù),其高度和權(quán)重為50人。 第一列對應(yīng)于所有50個人的高度,第二列對應(yīng)于它們的權(quán)重。 第一行包含兩個元素,其中第一行是第一人的高度,第二行是他的重量。 類似地,剩余的行對應(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ù)量的過程,這樣做的一個原因是減少內(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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/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算法簡介 K-means是機(jī)器學(xué)習(xí)中一個比較常用的算法,屬于無監(jiān)督學(xué)習(xí)算法,其常被用于數(shù)據(jù)的聚類,只需為它指定簇的數(shù)量即可自動將數(shù)據(jù)聚合到多類中,相同簇中的數(shù)據(jù)相似度較高,不同簇中數(shù)據(jù)相似度較低。 K-menas的優(yōu)缺點(diǎn): 優(yōu)點(diǎn): 原理簡單 速度快 ...

    nanfeiyan 評論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)分析問題。比如,聚類算法可以實(shí)現(xiàn)公司客戶價值自動劃分,網(wǎng)頁自動歸類等。 摘要:前文數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)技術(shù)入門實(shí)戰(zhàn)與大家分享了分類算法,在本文中將為大家介紹聚類算法和關(guān)聯(lián)分析問題。分類算法與聚類到底有何區(qū)別?聚類方法應(yīng)在怎樣的場景下使用?如何使用關(guān)聯(lián)分析算法解決個性化推薦問題?本文就為大家揭曉答...

    Anchorer 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<