【问题标题】:Applying encoding to train and test data separately将编码分别应用于训练和测试数据
【发布时间】:2021-12-23 16:40:49
【问题描述】:

我的数据集中有一个特征State,所以在拆分后我将编码应用于这样的训练集

ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(drop='first', handle_unknown='ignore'), ['State'])], remainder='passthrough')
encoded_X_train = ct.fit_transform(X_train)

像这样训练模型

regressor = LinearRegression()
regressor.fit(encoded_X_train, y_train)

然后像这样编码和预测

encoded_X_test = ct.fit_transform(X_test)
y_pred = regressor.predict(encoded_X_test)

这是正确的做法,还是我做错了什么?

【问题讨论】:

    标签: machine-learning scikit-learn one-hot-encoding exploratory-data-analysis


    【解决方案1】:

    没有。您应该只使用训练数据来训练编码模型。
    fit_transform 正在根据与数据拟合的模型转换数据。

    因此,您应该改用以下代码。

    ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(drop='first', handle_unknown='ignore'), ['State'])], remainder='passthrough')
    encoded_X_train = ct.fit_transform(X_train)
    encoded_X_test = ct.transform(X_test)
    

    【讨论】:

    • 谢谢,这澄清了我对过度拟合的怀疑。还有一个问题,我如何衡量我的模型的准确性。我在某些地方看到分数方法用于衡量准确性,任何链接将不胜感激。
    猜你喜欢
    • 2018-05-28
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    相关资源
    最近更新 更多