亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python?sklearn中的K-Means聚類如何使用

發布時間:2022-12-28 15:10:35 來源:億速云 閱讀:137 作者:iii 欄目:開發技術

這篇文章主要講解了“Python sklearn中的K-Means聚類如何使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Python sklearn中的K-Means聚類如何使用”吧!

初步認識

k-means翻譯過來就是K均值聚類算法,其目的是將樣本分割為k個簇,而這個k則是KMeans中最重要的參數:n_clusters,默認為8。

下面做一個最簡單的聚類

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
X, y = make_blobs(1500)
fig = plt.figure()
for i in range(2):
    ax = fig.add_subplot(1,2,i+1)
    y = KMeans(i+2).fit_predict(X)
    plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()

其中,y是聚類結果,其數值表示對應位置X所屬類號。

效果如圖所示,對于下面這組數據來說,顯然最好是分為兩類,但如果KMeansn_clusters設為3,那就會聚成3類。

Python?sklearn中的K-Means聚類如何使用

上面調用的KMeans是一個類,sklearn中同樣提供了函數形式的調用,其使用方法如下

from sklearn.cluster import k_means
cen, y, interia = k_means(X, 3)

其中,cen表示聚類后,每一類的質心;y為聚類后的標簽;interia表示均方誤差之和。

初值選取

KMeans最重要的概念是簇,也就是被分割后的數據種類;而每個簇都有一個非常重要的點,就是質心。在設定好簇的個數之后,也就相當于確定了質心的個數,而KMeans算法的基本流程是

  • 選擇k個點作為k個簇的初始質心

  • 計算樣本到這k個質心(簇)的距離,并將其劃入距離最近的簇中

  • 計算每個簇的均值,并使用該均值更新簇的質心

重復上述2-3的操作,直到質心區域穩定或者達到最大迭代次數。

從這個流程可以看出來,KMeans算法至少有兩個細節需要考慮,一個是初始化方案,另一個則是質心更新的方案。

KMeans類或者k_means函數中,提供了兩種初始化質心方案,通過參數init來控制

  • 'random':表示隨機生成k個質心

  • 'k-means++':此為默認值,通過kMeans++方法來初始化質心。

kMeans++初始化質心的流程如下

  • 隨機選擇1個點作為初始質心 x 0

  • 計算其他點到最近質心的距離

  • 假定現有 n n n個質心了,那么選擇距離當前質心較遠的點作為下一個質心 x n x_n xn

重復步驟2和3,直到質心個數達到 k k k個。

若希望直接調用kMeans++函數,則可使用kmeans_plusplus

小批

sklearn提供了KMeans的一個變種MiniBatchKMeans,可在每次訓練迭代中隨機抽樣,這種小批量的訓練過程大大減少了運算時間。

當樣本量非常巨大時,小批KMeans的優勢是非常明顯的

from sklearn.cluster import MiniBatchKMeans
import time
ys, xs = np.indices([4,4])*6
cens = list(zip(xs.reshape(-1), ys.reshape(-1)))
X, y = make_blobs(100000,centers=cens)
km = KMeans(16)
mbk = MiniBatchKMeans(16)
def test(func, value):
    t = time.time()
    func(value)
    print("耗時", time.time()-t)
test(km.fit_predict, X)
# 耗時 3.2028110027313232
test(mbk.fit_predict, X)
# 耗時 0.2590029239654541

可見效果非常明顯,其中fit_predictpredict相似,但并沒有返回值,km.fit_predict(X)運行之后,會更改km中的labels_屬性,此即分類結果

fig = plt.figure()
ax = fig.add_subplot(1,2,1)
ax.scatter(X[:,0], X[:,1], c=km.labels_, 
    marker='.', alpha=0.5)
ax = fig.add_subplot(1,2,2)
ax.scatter(X[:,0], X[:,1], c=mbk.labels_, 
    marker='.', alpha=0.5)
plt.show()

效果如圖所示,可見小批的KMeans算法和KMeans算法從結果上來看區別不大。

Python?sklearn中的K-Means聚類如何使用

感謝各位的閱讀,以上就是“Python sklearn中的K-Means聚類如何使用”的內容了,經過本文的學習后,相信大家對Python sklearn中的K-Means聚類如何使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

麻阳| 沂源县| 英山县| 常州市| 崇仁县| 根河市| 武冈市| 开鲁县| 合阳县| 四平市| 嘉义市| 余姚市| 大渡口区| 遂平县| 广河县| 化德县| 阳新县| 吴忠市| 江源县| 铜陵市| 珲春市| 宣汉县| 保康县| 望谟县| 从化市| 上栗县| 南宫市| 浪卡子县| 陆良县| 涟源市| 潜山县| 太保市| 黄平县| 海伦市| 景宁| 永兴县| 蚌埠市| 勐海县| 基隆市| 措美县| 大厂|