python如何獲取最優輪廓係數

post200發表於2021-09-11

python如何獲取最優輪廓係數

如果想要最好的點,應該選擇最高的點。

1、透過設定不同的k值來測試和計算輪廓係數,可以獲得最佳k值對應的最佳輪廓係數,

2、也可以繪圖觀察和選擇最高。但為了防止擬合現象,也可以透過手肘選擇最佳k值。

例項

from sklearn.cluster import KMeans
from sklearn.preprocessing import MaxAbsScaler  # 小數定標標準化
from sklearn.preprocessing import MinMaxScaler  # 離差標準化
from sklearn.preprocessing import StandardScaler  # 標準差標準化
# 評估指標-----輪廓係數
from sklearn.metrics import silhouetee_score
 
# 由於是聚類演算法,資料可能存在量綱,需要標準化,在使用演算法之前
# 例項化
sca = MaxAbsScaler()
sca = MinMaxScaler()
sca = StandardScaler()
# 擬合
sca.fit( 訓練集特徵 )
# 處理資料
X_train = sca.transform( 訓練集特徵 )
 
 
# 例項化
km = KMeans()
# 引數:
# n_clusters=3,表示k=3,也就是隨機三個聚類中心,最小值是2
# init,聚類中心初始化方法,預設k-means++
# max_iter,最大迭代次數,預設300,如果後期無法收斂可以嘗試增加迭代次數
# random_state=1,隨機種子,預設是None
 
# 擬合
km.fit( 訓練集特徵 )
 
# 檢視聚類中心
print('聚類中心:', km.cluster_centers_)
 
# 檢視預測結果
# 可以直接傳入訓練集,也可以傳入自定義二維陣列
y_pred = km.predict( 訓練集特徵 )
print('整個資料的類別:', y_pred)
 
# 檢視SSE---誤差平方和
# 預設是取反操作,大多數情況得出來的是負值【-inf, 0】
# 絕對值越小越好
score = km.score(X_train, y_pred)
print('SSE', score)
 
# 評估指標----輪廓係數(-1, 1),越大越好
print('輪廓係數:', silhouetee_score(X_train, y_pred))

以上就是python獲取最優輪廓係數的方法,希望對大家有所幫助。更多Python學習指路:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2249/viewspace-2827978/,如需轉載,請註明出處,否則將追究法律責任。

相關文章