我正在尝试创建数据集的配对图,其中变量的数字截然不同(有些在 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])
我的问题是,在缩放变量并再次创建配对图后,它根本没有改变。你知道这可能是什么原因造成的吗?这是我用来创建配对图的代码:
g=sns.pairplot(train2, hue='SeriousDlqin2yrs', diag_kws={'bw':0.2})
其中 SeriousDlqin2yrs 是 Y 变量。
最佳答案
这些图预计看起来相同,但不完全相同 - 刻度标签应该不同。缩放器进行线性变换,seaborn根据值的范围选择轴限制,因此散点图中点的排列不会改变。
由于我没有您的数据,因此与 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})
关于python - 为什么 MinMaxScaler 不更改数据集的 sns.pairplot?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72394447/