【问题标题】:Scaling before or after splitting the data in Python Keras [duplicate]在 Python Keras 中拆分数据之前或之后缩放 [重复]
【发布时间】:2020-07-12 13:47:17
【问题描述】:

我不清楚我应该在什么时候对我的数据应用缩放,以及我应该如何做。另外,有监督和无监督学习的过程是否相同,回归、分类和神经网络是否相同?

第一种方式:

df = pd.read_csv("mydata.csv")
features = df.iloc[:,:-1]
results = df.iloc[:,-1]

scaler = StandardScaler()

features = scaler.fit_transform(features)

x_train, x_test, y_train, y_test = train_test_split(features, results, test_size=0.3, random_state=0)

第二种方式:

df = pd.read_csv("mydata.csv")
features = df.iloc[:,:-1]
results = df.iloc[:,-1]

scaler = StandardScaler()

x_train, x_test, y_train, y_test = train_test_split(features, results, test_size=0.3, random_state=0)

x_train = scaler.fit_transform(x_train)
x_test = scaler.fit_transform(x_test)

第三种方式:

df = pd.read_csv("mydata.csv")
features = df.iloc[:,:-1]
results = df.iloc[:,-1]

scaler = StandardScaler()

x_train, x_test, y_train, y_test = train_test_split(features, results, test_size=0.3, random_state=0)

x_train = scaler.fit_transform(x_train)
x_test = scaler.transform(x_test)

或者也许是第四个?

另外,我有一些样本要用于预测,这些样本不在df 中,我应该如何处理这些数据,我应该怎么做:

samples = scaler.fit_transform(samples)

或:

samples = scaler.transform(samples)

【问题讨论】:

    标签: python machine-learning keras scikit-learn


    【解决方案1】:
    1. 将数据拆分为训练/测试。
    2. 使用训练数据集的均值和标准差对训练数据进行归一化。
    3. 使用AGAIN 的均值和TRAINING DATA 的标准差对测试数据进行归一化。

    在现实世界中,您无法知道测试集的分布。因此,您需要处理训练集的分布。

    【讨论】:

    • 所以我应该 '.fit_transform' 我的训练特征,而只有 '.transflorm' 我的测试特征,对吗?另外,我应该只对我的验证数据执行“.transform”吗?
    • 是的,在训练集上你应该使用 fit_transform 而对于你的测试集你应该只使用你的变换方法。在您的验证集中,您也只需要使用转换方法。
    • 谢谢,你能帮我解决这个问题吗:stackoverflow.com/questions/60931790/…
    • 不客气,让我检查一下那个问题。
    猜你喜欢
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 2020-10-21
    • 2020-11-01
    • 1970-01-01
    • 2020-01-01
    • 2015-05-14
    • 1970-01-01
    相关资源
    最近更新 更多