python - 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(我也尝试过)。
解决方案
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))
推荐阅读
- javascript - 经典 ASP:如何将下拉列表中的选定值传递给 onchange 事件的 SELECT 查询
- jenkins - Jenkins 的加速时间不会降低 tps
- python - 如何修复 class_names 中超出范围的列表索引以绘制分类树
- f# - 无法在 F# Dapper 中将相关表记录作为列表获取
- python - 如何在 Python 库函数中使用并行化?
- r - 在 R 中展开电子邮件数据集的标题
- sql-server - “distributor_admin”未定义为服务器上的远程登录,用户“distributor_admin”登录失败
- tempus-dominus-datetimepicker - 从一个日期时间选择器获取日期并在第二个日期时间选择器中显示并禁用
- javascript - 如何在函数块中获取用 var 语句声明的变量?
- android - 在屏幕共享时绘制框架以使用媒体投影(webrtc)显示捕获的内容高度宽度