使用scikit红酒数据集绘制sns.pairplot报KeyError: 'target'如何解决?
问题原因
- 构造Pandas DataFrame时仅传入了wine数据集的特征字段,未将分类标签
target加入DataFrame,因此指定hue="target"时找不到对应列触发KeyError,这也是你替换为class仍然无效的核心原因 - 代码存在多处冗余的数据集加载、变量覆盖操作,且未导入seaborn库就直接使用
sns别名调用接口 - 之前的zip操作后续被新的赋值操作覆盖,不是触发本次报错的原因
修复方案
将分类标签列加入DataFrame即可,完整可运行代码如下:
%matplotlib inline import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from sklearn.datasets import load_wine # 加载数据集 data = load_wine() # 构造包含特征和target的DataFrame df = pd.DataFrame(data.data, columns=data.feature_names) df['target'] = data.target # 绘制pairplot,vars参数可按需调整特征范围 b = sns.pairplot(df, vars = df.columns[1:-1], hue = "target", height = 2.5) plt.show()
可选优化
如果需要在图例中展示分类名称而非数字编号,可以在构造完df后额外添加映射代码:
df['target'] = df['target'].map({i:name for i,name in enumerate(data.target_names)})
内容的提问来源于stack exchange,提问作者claire_123
相关产品推荐
相关产品推荐

