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

如何在数据集拆分后绘制带hue参数的seaborn pairplot成对图

解决方法

你遇到的问题本质是两个原因导致的:

  1. StandardScaler执行标准化后的输出是Numpy数组,既没有保留原始特征的列名,也没有包含拆分出来的训练集类别标签y_train
  2. sns.pairplot的hue参数需要指定数据集内已有的类别列名,因此需要先把标准化后的特征和训练集标签合并为带列名的DataFrame。

修改后的代码如下:

import pandas as pd
import seaborn as sns
from matplotlib import pyplot as plt

X = DATA.drop(['class'], axis = 'columns')
y = DATA['class'].values

X_train, X_test, y_train, y_test=train_test_split(X,y, test_size=0.20,random_state =42)

gbl_pl=[]
gbl_pl.append(('standard_scaler_gb', StandardScaler()))
gblpq=Pipeline((gbl_pl))

scaled_arr = gblpq.fit_transform(X_train,y_train)
# 1. 将标准化后的数组转为带原始特征名的DataFrame
scaled_train_df = pd.DataFrame(scaled_arr, columns=X_train.columns)
# 2. 合并训练集的类别标签作为hue参数要用的列
scaled_train_df['species'] = y_train
# 3. 调用pairplot时指定hue参数即可
sns.pairplot(data=scaled_train_df, hue='species')
plt.show()

如果你的类别标签y已经被编码为0/1/2的数值,想要在图上显示鸢尾花的类别名称,可以在合并列后增加一步映射:

scaled_train_df['species'] = scaled_train_df['species'].map({
    0: 'setosa',
    1: 'versicolor',
    2: 'virginica'
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:15:00