仅获得两个具有一百多个功能的集群

问题描述

我使用以下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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...