调用FAMD对象plot_row_coordinates方法报错:对象无该属性
FAMD调用plot_row_coordinates报错的解决办法
问题核心
你使用的FAMD类没有内置plot_row_coordinates方法,只有prince库实现的FAMD才提供这个绘图接口。
解决步骤
确认并安装prince库
先检查是否安装了prince,没安装的话执行:pip install prince然后确保代码中导入的是prince的FAMD:
from prince import FAMD修正绘图代码参数
原代码中color_labels对应的是全量df['Target'],但绘图只用了前200行数据,需要对应截取标签,避免长度不匹配:#FAMD from prince import FAMD famd = FAMD(n_components = 10, n_iter = 3, random_state = 101) famd.fit(df.drop('Target', axis=1)) #剔除响应变量'Target' print(famd.eigenvalues_summary) #绘制成分图 famd.plot_row_coordinates( df.head(200), figsize = (15,10), color_labels=['Completion status: {}'.format(t) for t in df['Target'].head(200)] )替代方案:手动绘图(无需prince)
如果不想依赖prince库,可以提取FAMD转换后的主成分,用matplotlib/seaborn手动绘制:import matplotlib.pyplot as plt import seaborn as sns # 获取转换后的主成分 transformed_data = famd.transform(df.drop('Target', axis=1)) # 取前200行数据与对应标签 subset_data = transformed_data.head(200) subset_target = df['Target'].head(200) # 绘制散点图 plt.figure(figsize=(15,10)) sns.scatterplot(x=subset_data.iloc[:,0], y=subset_data.iloc[:,1], hue=subset_target) plt.title('FAMD行坐标分布(成分1 vs 成分2)') plt.xlabel('主成分1') plt.ylabel('主成分2') plt.legend(title='完成状态') plt.show()
内容的提问来源于stack exchange,提问作者mbluck
相关产品推荐
相关产品推荐

