我有一个由1和0组成的dataframe,它作为元数据来描述主数据集的一些特征的属性。作为数据探索的一部分,我在dataframe上运行了以下代码,以将这些特征标记表示为2D图。
mca = prince.MCA() mca_mtx = mca.fit(tags_df).transform(tags_df)
但是我在fit期间得到以下错误:数组不能包含inf或nans在检查了数据框之后,我发现整个数据集中没有infs或nans。所以问题一定是别的什么。有人知道怎么解决吗?
fit
1qczuiv01#
显然它是一个known bug。问题在于 Dataframe tags_df的值,因为1.0和0.0在mca算法中产生inf或nan。我尝试将1.0和0.0改为True和False(bool类型),但没有成功。然而,字符串版本做到了这一点,即"True"和"False"。所以下面的行解决了我的问题:
tags_df
1.0
0.0
mca
inf
nan
True
False
"True"
"False"
tags_df.replace({0: "False", 1: "True"}, inplace = True)
wj8zmpe12#
我花了很多时间在这个错误上,幸运的是找到了解决方案。我已经将dtype从“category”更改为“object”,使用“.astype('object')”。我还使用了以下代码:
mca = prince.MCA( n_components=3, n_iter=3, copy=True, check_input=True, engine='sklearn', random_state=42 ) mca = mca.fit(df_final_2) mca.plot( df_final_2, x_component=0, y_component=1 )
希望有帮助!
2条答案
按热度按时间1qczuiv01#
显然它是一个known bug。问题在于 Dataframe
tags_df
的值,因为1.0
和0.0
在mca
算法中产生inf
或nan
。我尝试将
1.0
和0.0
改为True
和False
(bool类型),但没有成功。然而,字符串版本做到了这一点,即"True"
和"False"
。所以下面的行解决了我的问题:wj8zmpe12#
我花了很多时间在这个错误上,幸运的是找到了解决方案。我已经将dtype从“category”更改为“object”,使用“.astype('object')”。我还使用了以下代码:
希望有帮助!