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

标签 python scale pairplot

我正在尝试创建数据集的配对图,其中变量的数字截然不同(有些在 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})

plot with unscaled data

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})

plot with scaled data 请注意,缩放完成后,列名称应该已更改,因为它们不再是厘米。

关于python - 为什么 MinMaxScaler 不更改数据集的 sns.pairplot?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72394447/

相关文章:

python不会创建线程?

python - 电子竞技比赛预测器(机器学习)

php - 哪些 PHP 框架可以处理大型应用程序?

python - 如何在 PairGrid 或 pairplot 中获得堆叠直方图

python - 如何将 django 中的 InMemoryUploadedFile 转换为 flickr API 的格式?

python - 对内部包含列表的列表进行二值化

java - Hibernate 错误地映射 BigDecimal

android - setPivotX 在缩放 View 上工作很奇怪

python - Seaborn Pairplot 具有和不具有相互叠加的色调