2017-08-28 92 views
0

我想運行具有超過3個功能的kmeans聚類。我嘗試了兩個功能,並想知道如何爲sklearn.cluster KMeans提供超過3個功能。kmeans聚類與數據框(scipy)

這裏是我的代碼和數據框,我想選擇要運行的功能。我有多個數據框作爲輸入,我必須提供它們作爲功能。

# currently two features are selected 
# I'd like to combine more than 3 features and provide them to dataset 
df_features = pd.merge(df_max[['id', 'max']], 
df_var[['id', 'variance']], on='id', how='left') 

cols = list(df_features.loc[:,'max':'variance']) 
X = df_features.as_matrix(columns=cols) 

kmeans = KMeans(n_clusters=3) 
kmeans.fit(X) 

centroid = kmeans.cluster_centers_ 
labels = kmeans.labels_ 

colors = ["g.","r.","c."] 

for i in range(len(X)): 
    print ("coordinate:" , X[i], "label:", labels[i]) 
    plt.plot(X[i][0],X[i][1],colors[labels[i]],markersize=10) 

plt.scatter(centroid[:,0],centroid[:,1], marker = "x", s=150, linewidths = 5, zorder =10) 

plt.show() 

回答

0
  1. 一般來說,你不會想id成爲一個功能,因爲,除非你有充分的理由相信,否則,它們不與任何關聯。

  2. 只要你在一個有效的矩陣Xkmeans.fit(X)飼料,它會不管的功能數量在X運行KMean算法爲您服務。但是,如果您擁有大量功能,則可能需要更長時間才能完成。如何構建X。如您在示例中所示,您可以簡單地合併數據幀,選擇想要的列,然後使用.as_matrix()調用來提取功能矩陣。如果你有更多的數據框和列,我想你只是合併更多,並選擇更多。

  3. 只要數據集中的特徵足夠多,特徵選擇和尺寸縮小就可以派上用場。有空的時候多瞭解一下他們。

P.S.爲什麼scipy的標題?