欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報(bào)邀請(qǐng)碼778899分享:聚類算法-Kmeans聚類

柚子快報(bào)邀請(qǐng)碼778899分享:聚類算法-Kmeans聚類

http://yzkb.51969.com/

一、K-means 聚類介紹

1.含義

K-means 聚類是一種非常流行的基于距離的無監(jiān)督學(xué)習(xí)算法,用于將數(shù)據(jù)點(diǎn)劃分為預(yù)定義的 K 個(gè)簇(或組),其中每個(gè)簇由其質(zhì)心(即簇中所有點(diǎn)的均值)定義。K-means 算法的目標(biāo)是使簇內(nèi)的點(diǎn)盡可能緊密地聚集在一起,同時(shí)使不同簇之間的點(diǎn)盡可能遠(yuǎn)離。

2.基本步驟:

選擇 K 值:首先,你需要決定將數(shù)據(jù)分成多少個(gè)簇,即 K 的值。K 的選擇通常是基于問題的上下文或通過一些啟發(fā)式方法(如肘部法則)來確定。初始化質(zhì)心:隨機(jī)選擇 K 個(gè)數(shù)據(jù)點(diǎn)作為初始的簇質(zhì)心。質(zhì)心可以是數(shù)據(jù)集中的任意點(diǎn),但通常選擇相距較遠(yuǎn)的點(diǎn)作為起始點(diǎn),以避免局部最優(yōu)解。分配簇:對(duì)于數(shù)據(jù)集中的每個(gè)點(diǎn),將其分配到最近的質(zhì)心所在的簇。通常使用歐幾里得距離來測(cè)量點(diǎn)與質(zhì)心之間的距離。更新質(zhì)心:對(duì)于每個(gè)簇,重新計(jì)算其質(zhì)心(即簇內(nèi)所有點(diǎn)的均值)。重復(fù)迭代:重復(fù)步驟 3 和 4,直到質(zhì)心的位置不再顯著變化或達(dá)到預(yù)設(shè)的迭代次數(shù)。輸出結(jié)果:最終,算法會(huì)輸出 K 個(gè)簇和它們的質(zhì)心。

二、代碼實(shí)現(xiàn)

1.數(shù)據(jù)預(yù)處理

import pandas as pd

import numpy as np

from sklearn.cluster import KMeans

from sklearn import metrics

# 讀取文件

beer = pd.read_table('data.txt', sep=' ', encoding='utf8', engine='python')

# 傳入變量

X = beer.drop(columns=beer.columns[0])

使用pandas的read_table函數(shù)讀取名為data.txt的文本文件,該文件中的數(shù)據(jù)通過空格分隔,并指定編碼為utf8。通過drop(columns=beer.columns[0])刪除數(shù)據(jù)框beer的第一列,因?yàn)檫@一列不包含用于聚類的特征。剩下的列(特征)被存儲(chǔ)在X中。

2.交叉驗(yàn)證

# 交叉驗(yàn)證

scores = []

max_range = np.arange(2,10)

for k in max_range:

labels = KMeans(n_clusters=k).fit(X).labels_

score = metrics.silhouette_score(X, labels) # 輪廓系數(shù)

scores.append(score)

K = max_range[np.argmax(scores)]

print(K)

print(scores)

使用一個(gè)循環(huán)來嘗試不同的K值(從2到9),對(duì)于每個(gè)K值,使用KMeans類進(jìn)行聚類,并計(jì)算聚類結(jié)果的輪廓系數(shù)得分。輪廓系數(shù)得分范圍從-1到1,得分越高表示聚類效果越好。將每個(gè)K值對(duì)應(yīng)的輪廓系數(shù)得分存儲(chǔ)在scores列表中。使用np.argmax(scores)找到scores列表中的最大值索引,該索引對(duì)應(yīng)的K值即為最優(yōu)的聚類數(shù)。打印出最優(yōu)的K值和對(duì)應(yīng)的輪廓系數(shù)得分列表。

3.繪制得分結(jié)果

import matplotlib.pyplot as plt

plt.plot(list(range(2, 10)), scores)

plt.xlabel('x')

plt.ylabel('y')

plt.show()

使用matplotlib庫繪制輪廓系數(shù)得分隨K值變化的折線圖,以便直觀地觀察不同K值下的聚類效果。

4.最終聚類

# 聚類

km = KMeans(n_clusters=K).fit(X)

beer['cluster'] = km.labels_

score = metrics.silhouette_score(X, beer.cluster)

print(score)

使用選定的最優(yōu)K值對(duì)原始數(shù)據(jù)進(jìn)行K-means聚類。將聚類標(biāo)簽添加到原始數(shù)據(jù)框beer中,作為新列cluster。再次計(jì)算并打印使用最優(yōu)K值聚類后的輪廓系數(shù)得分,以驗(yàn)證聚類效果。

5.全部代碼

這段代碼主要執(zhí)行了以下幾個(gè)步驟,用于對(duì)啤酒數(shù)據(jù)集(存儲(chǔ)在data.txt文件中)進(jìn)行K-means聚類,并通過輪廓系數(shù)(Silhouette Score)來評(píng)估不同聚類數(shù)(K值)下的聚類效果,最終選擇最優(yōu)的K值進(jìn)行聚類,并展示聚類結(jié)果和對(duì)應(yīng)的輪廓系數(shù)得分。

import pandas as pd

import numpy as np

from sklearn.cluster import KMeans

from sklearn import metrics

# 讀取文件

beer = pd.read_table('data.txt', sep=' ', encoding='utf8', engine='python')

# 傳入變量

X = beer.drop(columns=beer.columns[0])

"""

根據(jù)分成不同的族,自動(dòng)計(jì)算輪廓系數(shù)得分

"""

# 交叉驗(yàn)證

scores = []

max_range = np.arange(2,10)

for k in max_range:

labels = KMeans(n_clusters=k).fit(X).labels_

score = metrics.silhouette_score(X, labels) # 輪廓系數(shù)

scores.append(score)

K = max_range[np.argmax(scores)]

print(K)

print(scores)

# 繪制得分結(jié)果

import matplotlib.pyplot as plt

plt.plot(list(range(2, 10)), scores)

plt.xlabel('x')

plt.ylabel('y')

plt.show()

# 聚類

km = KMeans(n_clusters=K).fit(X)

beer['cluster'] = km.labels_

score = metrics.silhouette_score(X, beer.cluster)

print(score)

三、總結(jié)

K-means 聚類廣泛應(yīng)用于市場(chǎng)細(xì)分、圖像分割、文檔聚類等領(lǐng)域。例如,在市場(chǎng)營(yíng)銷中,可以將客戶劃分為不同的群體,以便進(jìn)行更針對(duì)性的推廣策略;在圖像處理中,可以將圖像分割成多個(gè)區(qū)域,以便進(jìn)一步分析或壓縮。但同時(shí)也擁有自己的優(yōu)缺點(diǎn)。

優(yōu)點(diǎn):

簡(jiǎn)單易實(shí)現(xiàn)。對(duì)大數(shù)據(jù)集具有較好的可擴(kuò)展性。當(dāng)簇的密度大致相同且簇間分離良好時(shí),效果非常好。 缺點(diǎn):

需要預(yù)先指定 K 值,而 K 的選擇通常不直觀。結(jié)果可能受到初始質(zhì)心選擇的影響,可能導(dǎo)致局部最優(yōu)解。對(duì)異常值(噪聲)和簇的形狀(非球形)敏感。

柚子快報(bào)邀請(qǐng)碼778899分享:聚類算法-Kmeans聚類

http://yzkb.51969.com/

相關(guān)閱讀

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19578259.html

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

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄