You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python绘制MCA坐标图时遇AttributeError问题求助

解决MCA对象无plot_coordinates属性的报错

报错原因

你使用的prince库版本存在兼容性问题,旧版prince的MCA类未内置plot_coordinates方法,导致触发AttributeError。另外原代码中import pandas as pd被注释,运行时还会引发NameError,需先解开注释。

解决方案

方案1:升级prince到最新版本

执行以下命令升级库,新版prince的MCA类已支持plot_coordinates方法:

pip install --upgrade prince

升级后调整原代码的两处细节:

  • 解开import pandas as pd的注释
  • 修正代码缩进(原代码中变量X的定义有多余缩进)
    修正后的完整代码:
import pandas as pd
import prince

X = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/balloons/adult+stretch.data')
X.columns = ['Color', 'Size', 'Action', 'Age', 'Inflated']

print(X.head())

mca = prince.MCA()
mca = mca.fit(X)
mca1 = mca.transform(X)
print(mca1)

ax = mca.plot_coordinates(
     X=X,
     ax=None,
     figsize=(6, 6),
     show_row_points=True,
     row_points_size=10,
     show_row_labels=False,
     show_column_points=True,
     column_points_size=30,
     show_column_labels=False,
     legend_n_cols=1
     )

ax.get_figure().savefig('./mca_coordinates.svg')

方案2:手动提取坐标绘图(无需升级库)

如果不想升级prince,可从拟合后的MCA对象中提取行、列坐标,用matplotlib手动绘制:

import pandas as pd
import prince
import matplotlib.pyplot as plt

X = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/balloons/adult+stretch.data')
X.columns = ['Color', 'Size', 'Action', 'Age', 'Inflated']

mca = prince.MCA()
mca.fit(X)

# 提取行、列的MCA坐标
row_coords = mca.row_coordinates(X)
col_coords = mca.column_coordinates(X)

# 创建画布并绘图
fig, ax = plt.subplots(figsize=(6, 6))
ax.scatter(row_coords[0], row_coords[1], s=10, label='样本点')
ax.scatter(col_coords[0], col_coords[1], s=30, label='变量类别点')

# 设置图例与保存
ax.legend(ncol=1)
plt.savefig('./mca_coordinates.svg')
plt.show()

内容的提问来源于stack exchange,提问作者Emy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 20:08:15