如何在数据集拆分后绘制带hue参数的seaborn pairplot成对图
解决方法
你遇到的问题本质是两个原因导致的:
StandardScaler执行标准化后的输出是Numpy数组,既没有保留原始特征的列名,也没有包含拆分出来的训练集类别标签y_trainsns.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
相关产品推荐
相关产品推荐

