为什么 MinMaxScaler 不更改数据集的 sns.pairplot?

Why doesn't the MinMaxScaler change the sns.pairplot of the dataset?

我正在尝试创建我的数据集的配对图,其中的变量是截然不同的数字(有些在 0-1 范围内,有些,例如年龄和月收入,可以更高)并且我想要使用以下代码将那些高于 1 的变量缩放为 0-1:

scale_vars=['MonthlyIncome','age','NumberOfTime30-59DaysPastDueNotWorse','DebtRatio','NumberOfOpenCreditLinesAndLoans',
            'NumberOfTimes90DaysLate','NumberRealEstateLoansOrLines','NumberOfTime60-89DaysPastDueNotWorse',
            'NumberOfDependents']
scaler=MinMaxScaler(copy=False)
train2[scale_vars]=scaler.fit_transform(train2[scale_vars])

我的问题是,在缩放变量并再次创建 pairplot 之后,它根本没有改变。你知道这可能是什么原因吗?这是我用来创建配对图的代码:

g=sns.pairplot(train2, hue='SeriousDlqin2yrs', diag_kws={'bw':0.2})

其中 SeriousDlqin2yrs 是 Y 变量。

这些图应该看起来相同,但不完全相同 - 刻度标签应该不同。 scaler做的是线性变换,seaborn是根据值的范围来选择axis limits,所以散点图中点的排列没有变化。

由于我没有你的数据,下面是与 Ronald Fisher 的经典鸢尾花数据集相同的效果:

import pandas as pd
import seaborn as sns; sns.set()
from sklearn.datasets import load_iris
from sklearn.preprocessing import MinMaxScaler

iris_dict = load_iris(as_frame=True)
iris = iris_dict['data']
iris['species'] = iris_dict['target']

g = sns.pairplot(iris, hue='species', diag_kws={'bw_method':0.2})

scale_vars = ['sepal length (cm)', 'sepal width (cm)', 
              'petal length (cm)', 'petal width (cm)']
scaler = MinMaxScaler(copy=False)
iris[scale_vars] = scaler.fit_transform(iris[scale_vars])

g = sns.pairplot(iris, hue='species', diag_kws={'bw_method':0.2})

请注意,在完成缩放后,列名应该已更改,因为这些不再是厘米。