【问题标题】:Correctly scaling features for machine learning [duplicate]正确缩放机器学习的特征[重复]
【发布时间】:2020-10-13 18:40:55
【问题描述】:

我的数据框包含三种特征:

  1. 观测值范围为 0 到 100 的特征
  2. 观测值编码为 0 或 1(0 表示否,1 表示是)的特征
  3. 观察范围从 1 到 5 的特征(一个人对一个问题的回答,1 表示非常不同意,5 表示非常同意)

我可以将StandardScaler 应用到我的数据框并且所有功能都会正确缩放吗?还是我的数据框中的每种不同类型的功能都需要特定的缩放方法?

【问题讨论】:

  • 嗯,这是一个观点;另一个是教一个人如何钓鱼,而不是今天只给他们一条鱼(并让他们保持可靠)......顺便说一句,我基本上已经为你提供了答案,以防你太忙于花言巧语而没有注意到.
  • 既然答案已经清楚地解决了您的问题,请接受它 - 见What should I do when someone answers my question?

标签: python machine-learning scikit-learn logistic-regression


【解决方案1】:

StandardScaler 缩放您的数据,使每列的 μ = 0 和 σ = 1。根据documentation

居中和缩放在每个特征上独立发生 计算训练集中样本的相关统计数据。

由于每个特征都独立于其他特征进行缩放,因此它们的相关幅度差异不会相互影响。值得注意的是,缩放很大程度上取决于每个特征的训练样本分布。标准的正态分布训练数据将导致完美的缩放。如需进一步了解,您可以浏览documentation,也可以查看this SO thread

示例数据在以下代码中进行了缩放:

from sklearn.preprocessing import StandardScaler
import numpy as np

data = np.array([[100, 0, 2], [66, 1, 5], [50, 0, 4], [33, 1, 1], [0, 0, 3], [25, 0, 2], [75, 1, 4], [50, 1, 3]])

scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)

print ("Scaled Array:")
print(scaled_data)

print('Mean :', scaled_data.mean(axis=0))
print('Standard Deviation :', scaled_data.std(axis=0))
print('Variance :', scaled_data.var(axis=0))

输出是:

Scaled Array:
[[ 1.71992157 -1.         -0.81649658]
 [ 0.55329148  1.          1.63299316]
 [ 0.00428908 -1.          0.81649658]
 [-0.57902597  1.         -1.63299316]
 [-1.71134341 -1.          0.        ]
 [-0.85352716 -1.         -0.81649658]
 [ 0.86210533  1.          0.81649658]
 [ 0.00428908  1.          0.        ]]
Mean : [3.46944695e-18 0.00000000e+00 0.00000000e+00]
Standard Deviation : [1. 1. 1.]
Variance : [1. 1. 1.]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-03
    • 2018-10-17
    • 2014-12-01
    • 2012-03-28
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    相关资源
    最近更新 更多