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 之间的列值的主要内容,如果未能解决你的问题,请参考以下文章