国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

opencv python K-Means聚類

superPershing / 471人閱讀

摘要:指定最大迭代次數的整數要求的準確性重復試驗算法次數,將會返回最好的一次結果該標志用于指定初始中心的采用方式。第一列對應于所有個人的高度,第二列對應于它們的權重。類似地,剩余的行對應于其他人的高度和重量。

K-Means Clustering in OpenCV

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

data: np.float32數據類型,每個功能應該放在一個列中

nclusters(K):集群數

bestLabels:預設的分類標簽:沒有的話 None

criteria:它是迭代終止標準,滿足此條件時,算法迭代停止,實際上,它應該是3個參數的元組。它們是(type,max_iter,epsilon)

type又有兩種選擇:

cv2.TERM_CRITERIA_EPS - 如果達到指定的精度epsilon,則停止算法迭代。

cv.TERM_CRITERIA_MAX_ITER - 在指定的迭代次數max_iter之后停止算法。

cv.TERM_CRITERIA_EPS+ cv.TERM_CRITERIA_MAX_ITER - 當滿足上述任何條件時停止迭代。

max_iter - 指定最大迭代次數的整數

epsilon - 要求的準確性

attempts:重復試驗kmeans算法次數,將會返回最好的一次結果

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

retval:它是從每個點到它們相應中心的平方距離之和

bestLabels:這是標簽數組

centers:這是一組聚類中心

Data with Only One Feature

假設只有一個特征的數據,即一維的,我們可以采用我們的T恤問題,只使用人的高度來決定T恤的大小。
因此,我們首先創建數據并在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()

現在我們應用KMeans功能。我們的標準是,每當運行10次迭代算法或達到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

我們設置大小為50x2的測試數據,其高度和權重為50人。 第一列對應于所有50個人的高度,第二列對應于它們的權重。 第一行包含兩個元素,其中第一行是第一人的高度,第二行是他的重量。 類似地,剩余的行對應于其他人的高度和重量。

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

顏色量化是減少圖像中顏色數量的過程,這樣做的一個原因是減少內存,某些設備可能具有限制,使得它只能產生有限數量的顏色,在那些情況下,也執行顏色量化,這里我們使用k均值聚類進行顏色量化。

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()


文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42224.html

相關文章

  • K-meansPython中的實現

    摘要:算法的關鍵在于初始中心的選擇和距離公式。并行設置的實現算法,有其中表示用方式實現雖然有很多參數,但是都已經給出了默認值。 K-means算法簡介 K-means是機器學習中一個比較常用的算法,屬于無監督學習算法,其常被用于數據的聚類,只需為它指定簇的數量即可自動將數據聚合到多類中,相同簇中的數據相似度較高,不同簇中數據相似度較低。 K-menas的優缺點: 優點: 原理簡單 速度快 ...

    nanfeiyan 評論0 收藏0
  • Python數據挖掘與機器學習,快速掌握聚類算法和關聯分析

    摘要:摘要前文數據挖掘與機器學習技術入門實戰與大家分享了分類算法,在本文中將為大家介紹聚類算法和關聯分析問題。比如,聚類算法可以實現公司客戶價值自動劃分,網頁自動歸類等。 摘要:前文數據挖掘與機器學習技術入門實戰與大家分享了分類算法,在本文中將為大家介紹聚類算法和關聯分析問題。分類算法與聚類到底有何區別?聚類方法應在怎樣的場景下使用?如何使用關聯分析算法解決個性化推薦問題?本文就為大家揭曉答...

    Anchorer 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<