Python 如何对sklearn中看不见的未来数据应用一个热编码

Python 如何对sklearn中看不见的未来数据应用一个热编码,python,scikit-learn,Python,Scikit Learn,我正在使用泰坦尼克号数据作为一个样本集,我遇到了一个用例,在这个用例中,我想在训练阶段进行一次热编码,然后应用我的模型。完成后,我计划存储该模型,以便可以加载该模型并score看不见的数据集。该计划有2个.py文件。一个是train.py,它将加载数据,进行特征工程,应用逻辑模型,然后将模型保存到磁盘。第二个文件是score.py。在score.py中,我想首先获取一个完整的看不见的数据集,从磁盘加载模型,然后对数据进行评分以生成预测。问题是在score.py中,在生成预测之前,我必须将原始的不

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

下面是一些
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(..)
加载经过训练的模型,但我面临的问题是,如何首先对我未看到的原始特征执行一次热编码?我还可以
保存
一个热编码对象,以便在看不见的集合上重复使用吗?我是机器学习新手,我可能缺少一些非常简单的东西,但这是我需要解决的问题。

如果您使用,您可以通过将handle\u unknown参数设置为“ignore”来处理未知类别。当此参数设置为“忽略”并且在转换过程中遇到未知类别时,此功能产生的一个热编码列将全部为零。在逆变换中,未知类别将表示为无

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

感谢您的回答,我认为部分问题在于如何在整个
未查看的数据集上执行oneHotEncoding。假设有两个文件-
train.py
保存logit模型,然后是
score.py
。我的问题更倾向于使用
score.py
将看不见的数据转换为特征,然后加载保存的模型,以便我可以在
看不见的数据集
上进行评分。为了更清楚地理解,我编辑了我的问题