Sejong-Kaggle-Challengers / MAIN

세종대 캐글러 모임 메인 레포
4 stars 1 forks source link

계층적 군집화 (scipy.clustering.hierarchy) 사용방법 #6

Open inh2613 opened 3 years ago

inh2613 commented 3 years ago

from scipy.cluster.hierarchy import linkage,dendrogram from scipy.cluster.hierarchy import fcluster

linkage 인스턴스생성 Z = linkage(x_data, method='ward')

method 종류

덴드로그램 확인 fig = plt.figure(figsize=(25, 10)) dn = dendrogram(Z) plt.show()

구한 계층적 군집화에서 끊기 k=3 predict=fcluster(Z, k, criterion='maxclust')

criterion 종류

fcluster의 반환 값(predict)은 군집화 된 결과가 담긴 1D vector

98hyun commented 3 years ago

행과행이 관련이 있는지 시각화하려면 위에 코드가 더 편할 것 같습니다.
대신 양이 많으니 colab에서도 잘 안먹히더라구요.

저는 k-means 로 해봤습니다.

from sklearn.cluster import KMeans
wcss=[]

for i in range(1,11):
    kmeans = KMeans(n_clusters= i, init='k-means++', random_state=71)
    kmeans.fit(train.drop('18~20_ride',axis=1).values)
    wcss.append(kmeans.inertia_)

plt.plot(range(1,11), wcss)
plt.title('The Elbow Method')
plt.xlabel('no of clusters')
plt.ylabel('wcss')
plt.show()

kmeansmodel = KMeans(n_clusters=3, init='k-means++', random_state=71)
train['cluster']=kmeansmodel.fit_predict(train.drop('18~20_ride',axis=1).values)
test['cluster']=kmeansmodel.predict(test.values)
display(train.head())
display(test.head())

다른거 안건들이고 저것만 건드려서 앙상블 똑같이 해봤는데 성능은 떨어졌습니다.
비지도학습을 위한것이라 그런지 shap도 유용한 변수는 아니라고 했습니다.
시간면에서 k-means가 계층적 clustering 보다 빠르더라구요.
옆의 링크는 참고 링크입니다. 참고