【问题标题】:How to apply one hot encoding on unseen future data in sklearn如何在 sklearn 中对看不见的未来数据应用一种热编码
【发布时间】:2020-01-25 21:21:41
【问题描述】:

我正在使用 Titanic 数据作为样本集,我遇到了一个用例,我想在训练阶段进行一次热编码,然后应用我的模型。完成此操作后,我计划存储模型,以便我可以加载模型并score 未见过的数据集。该计划是有 2 个.py 文件。一个是train.py,它将加载数据、进行特征工程、应用逻辑模型,然后将save 模型写入磁盘。第二个文件是score.py。在score.py 中,我想首先获取一个完整的未见数据集,从磁盘加载模型,然后对该数据进行评分以生成预测。问题是,在score.py 中,我必须在生成预测之前将原始看不见的数据转换为one-hot encoded 列。

这是train.py的一些代码

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression


data_set = data[['Pclass','Sex','Age','Fare','SibSp','Cabin']]
one_hot_encoded_training_predictors = pd.get_dummies(data_set)
one_hot_encoded_training_predictors.head()
X = one_hot_encoded_training_predictors
y = data['Survived']

#Train Test split---75 25 ratio
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=1)
logreg = LogisticRegression() 
logreg.fit(X_train, y_train)


##predicting test accuracy
y_pred = logreg.predict(X_test) #predicting the values

# Save model code here

logreg.save(..)

我的score.py 看起来像

import statements
unseen_data = pd.read_csv(..) # this is raw unseen data

model.load(..)
model.predict(unseen_data)

现在想象我有一个模型从未见过的看不见的集合。我可以使用logreg.load(..) 加载经过训练的模型,但我面临的问题是,如何首先对我的原始看不见的特征执行一个热编码?我也可以save 在未见集上重复使用的一个热门编码对象吗?我是机器学习的新手,我可能会遗漏一些非常简单的东西,但这是我需要解决的问题。

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

    如果您使用OneHotEncoder,您可以通过将handle_unknown参数设置为“ignore”来处理未知类别。当此参数设置为“忽略”并且在转换过程中遇到未知类别时,此功能的生成的 one-hot 编码列将全为零。在逆变换中,未知类别将表示为无。

    from sklearn.preprocessing import OneHotEncoder
    enc = OneHotEncoder(handle_unknown='ignore')
    ...
    

    【讨论】:

    • 感谢您的回答,我认为部分问题是如何在整个 unseen dataset 上执行 oneHotEncoding。假设有 2 个文件 - train.py 保存 logit 模型,然后是 score.py。我的问题更多是使用score.py 将看不见的数据转换为特征,然后加载保存的模型,以便我可以在unseen dataset 上得分。
    • 我已经编辑了我的问题以便更清楚地理解
    猜你喜欢
    • 2023-01-03
    • 2017-06-04
    • 2017-11-05
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 2021-04-15
    • 2018-06-26
    相关资源
    最近更新 更多