首页 > 解决方案 > TypeError: SparseDataFrame() 在使用 Light_FAMD 的主成分分析中不接受任何参数

问题描述

当尝试根据https://pypi.org/project/light-famd/#factor-analysis-of-mixed-data-famd上的说明执行 FAMD 时,我一遍又一遍地遇到相同的错误,即: TypeError: SparseDataFrame() takes no arguments.

如何解决这个问题?它不仅发生在我自己的数据集上,而且每当我在一个基本的随机生成的数据集上尝试它时,例如这样创建:

X_n = pd.DataFrame(data=np.random.randint(0,100,size=(10,2)),columns=list('AB'))
X_c = pd.DataFrame(np.random.choice(list('abcde'),size=(10,4),replace=True),columns =list('CDEF'))
X = pd.concat([X_n,X_c],axis=1)

代码如下:

import pandas as pd
import numpy as np
import light_famd
from light_famd import FAMD
famd = FAMD(n_components=2)
famd.fit(X)
print(famd.explained_variance_)
print(famd.column_correlation(X))

它已经给出了错误famd.fit(X)

它不仅适用于 Light_FAMD,而且适用于 sklearn 和 Prince(我也尝试过)。

标签: pythonpca

解决方案


pandas 中的稀疏数据框已过时。检查他们的git

SparseDataFrame 在第 25 行中由 DataFrame 更改 one_hot.py default_fill_value 已删除 one_hot.py 索引已删除 one_hot.py SparseData False one_hot.py to_dense 在第 105 行中删除 mfa.py

您可以尝试从 git 安装最新版本:

python -m pip install git+https://github.com/Cauchemare/Light_FAMD.git

应该运行良好:

import pandas as pd
import numpy as np
import light_famd
from light_famd import FAMD

X_n = pd.DataFrame(data=np.random.randint(0,100,size=(10,2)),columns=list('AB'))
X_c = pd.DataFrame(np.random.choice(list('abcde'),size=(10,4),replace=True),columns =list('CDEF'))
X = pd.concat([X_n,X_c],axis=1)

famd = FAMD(n_components=2)
famd.fit(X)
print(famd.explained_variance_)
[17.77604109  9.92849978]

最后一部分仍然会引发一些警告:

print(famd.column_correlation(X))

推荐阅读