sklearn 中的 MinMax Scaler 不会标准化 0 到 1 之间的列值

Posted

技术标签:

【中文标题】sklearn 中的 MinMax Scaler 不会标准化 0 到 1 之间的列值【英文标题】:MinMax Scaler in sklearn does not normalize values of column between 0 and 1 【发布时间】:2017-04-10 09:35:15 【问题描述】:

我正在 python 中研究 KNN 算法,并尝试使用 MinMaxScaler 标准化我的数据帧,以将数据转换为 0 到 1 之间的范围内的数据。

但是,当我返回输出时,我观察到某些列的 min/max 输出超过了 1。我用错了吗?

下面是我返回的最小/最大值的 sn-p:

使用的代码是:

kdd_data_10percent = pandas.read_csv("data/kdd_10pc", header=None, names = col_names)
features = kdd_data_10percent[num_features].astype(float)#num_features contain the specific column labels i wish to extract    
features.apply(lambda x: MinMaxScaler().fit_transform(x))

Features 包含包含列的数据框(例如 wrong_fragment、urgent ...)。

如果我理解正确,在执行 MinMaxScaler 之后,返回的结果将确保每列值将被规范化为仅从 0 -1 的范围。我说的对吗?

【问题讨论】:

***.com/a/21765852/356729 正是您要找的东西 【参考方案1】:

您是对的,MinMaxScaler 会将您的数据从 0 缩放到 1。0 将是您的列的最小值,1 是最大值。

Apply 函数实际上不会转换您的特征,它只会返回一个包含转换后的列的数据框。 因此,您需要影响对功能的转换:

features = features.apply(lambda x: MinMaxScaler().fit_transform(x))

【讨论】:

此代码不起作用,如果您参考我的代码 sn-p 这正是我使用的代码。

以上是关于sklearn 中的 MinMax Scaler 不会标准化 0 到 1 之间的列值的主要内容,如果未能解决你的问题,请参考以下文章

文本分类:使用 MinMax-Scaler 的词袋

在 sklearn 模型中丢失随机性

sklearn StandardScaler 返回全零

加载和预测新数据 sklearn

tensorflow实现多元线性回归时预测出的参数为nan

sklearn 数据预处理