瓦克鲁希
这是一个python模块,用于执行具有层次结构的变量集群(varclus)。varclus是一种很好的降维算法。这里有一个简短的描述:选择要拆分的群集。
通过查找前两个主分量,执行正交旋转,并将每个变量分配给与之具有更高平方相关性的旋转分量,将所选簇分成两个簇。变量被迭代地重新分配到集群,以最大化由群集组件所占的方差。
缩进观众:那些熟悉varclus算法在其他分析软件(如sas)中的使用,但在试图找到合适的python模块时总是感到苦恼的人。
对varclus算法不熟悉的Python。源代码可以帮助您深入理解该算法背后的数学原理。
见解和亮点:(这是纯粹的理论部分,忽略这一点并不影响这个包的使用)。现有文献总是提到我们需要主成分(参照步骤2-3)。实际上,实现该算法不需要计算主成分,相关矩阵及其特征向量足以得到成分与变量的平方相关(这可以通过数学证明)。如果我们的数据集有数百万个观测值和数百个变量,不使用主成分将节省时间和内存。
如果我们使用sas varclus过程作为基准,python包varclusi可以产生非常相似的结果。这保证代码的正确性。:)
示例
有关详细信息,请参见demo.ipynb。importpandasaspdfromvarclushiimportVarClusHi
创建varclushi对象并将要分析的数据帧(df)作为参数传递,您还可以指定功能列表(feat_list,默认为df的所有列)
最大第二特征值(maxeigval2,默认值1)
最大群集数(最大群集数,默认为无)
然后调用方法varclus(),它执行分层变量聚类算法demo1_df=pd