對多屬性進行聚類分析可以使用Python中的scikit-learn庫中的KMeans算法。
以下是一種對多屬性進行聚類分析的步驟:
導入所需的庫和數據集:
from sklearn.cluster import KMeans
import pandas as pd
# 導入數據集
dataset = pd.read_csv('dataset.csv')
數據預處理:
對于多屬性的聚類分析,需要將數據集中的每個屬性進行歸一化處理,確保各個屬性具有相同的重要性。
from sklearn.preprocessing import StandardScaler
# 標準化數據集
scaler = StandardScaler()
scaled_dataset = scaler.fit_transform(dataset)
使用KMeans算法進行聚類分析:
在進行聚類分析之前,需要確定聚類的數量。可以使用肘部法則(elbow method)來選擇最優的聚類數量。
# 尋找最優的聚類數量
wcss = []
for i in range(1, 11):
kmeans = KMeans(n_clusters=i, init='k-means++', random_state=42)
kmeans.fit(scaled_dataset)
wcss.append(kmeans.inertia_)
# 繪制肘部法則圖形
import matplotlib.pyplot as plt
plt.plot(range(1, 11), wcss)
plt.xlabel('Number of clusters')
plt.ylabel('WCSS')
plt.show()
根據肘部法則圖形,選擇使WCSS值變化趨于平緩的聚類數量。
進行聚類分析:
使用確定的聚類數量進行聚類分析。
# 使用最優的聚類數量進行聚類分析
kmeans = KMeans(n_clusters=3, init='k-means++', random_state=42)
kmeans.fit(scaled_dataset)
# 獲取聚類結果
clusters = kmeans.predict(scaled_dataset)
聚類結果將會保存在clusters
變量中,表示每個樣本所屬的聚類。
可視化聚類結果:
可以使用matplotlib庫將聚類結果可視化。
# 繪制聚類結果的散點圖
plt.scatter(dataset['屬性1'], dataset['屬性2'], c=clusters)
plt.xlabel('Attribute 1')
plt.ylabel('Attribute 2')
plt.show()
散點圖中不同顏色的點表示不同的聚類。
以上是一種基本的多屬性聚類分析的步驟,根據具體的需求和數據集的特點,還可以根據需要進行調整和擴展。