问题描述
我使用以下KMeans聚类函数来确定我的功能进入的聚类数量:
def clusterKMeansBase(corr0,maxNumClusters=10,n_init=10):
"""
Initial clustering step using KMeans.
:param corr_mat: (pd.DataFrame) correlation matrix
:param max_num_clusters: maximum number of cluster to search for.
:param repeat: number of clustering algorithm repetitions.
:return: 3 tuple (ordered correlation matrix,clusters,silh scores)
"""
# Distance matrix
x,silh=((1-corr0.fillna(0))/2.)**.5,pd.Series()# observations matrix
# Get optimal num clusters
for init in range(10):
for i in range(2,10+1):
kmeans_=KMeans(n_clusters=i,n_jobs=1,n_init=1)
kmeans_=kmeans_.fit(x)
silh_=silhouette_samples(x,kmeans_.labels_)
stat=(silh_.mean()/silh_.std(),silh.mean()/silh.std())
if np.isnan(stat[1]) or stat[0]>stat[1]:
silh,kmeans=silh_,kmeans_
# Number of clusters equals to length(kmeans labels)
newIdx=np.argsort(kmeans.labels_)
corr1=corr0.iloc[newIdx] # reorder rows
corr1=corr1.iloc[:,newIdx] # reorder columns
clstrs={i:corr0.columns[np.where(kmeans.labels_==i)[0]].tolist() \
for i in np.unique(kmeans.labels_) } # cluster members
silh=pd.Series(silh,index=x.index)
return corr1,clstrs,silh
我有大约200个功能,运行我的功能后,我仅得到2个群集。我正在使用财务比率数据,宏观经济数据等。
关于为什么会发生这种情况的任何想法?我认为应该做什么的所有指针都应该不仅仅是两个簇,并且要使用样本中使用的功能数量。干杯:)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)