Я работаю с данными 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
один горячий объект кодирования для повторного использования на невидимом наборе?Я новичок в машинном обучении и могу упустить что-то очень простое, но это проблема, которую мне нужно решить.