Загрузите модель рассола для прогнозирования другого набора данных

#python #machine-learning #pickle #logistic-regression

Вопрос:

У меня есть два набора данных. Первый — тренировка , второй — испытание. Прежде всего , я использую LogisticRegression для обучения своей модели и сохраняю ее как ;

 df = pd.read_csv('train.csv')

X = df[['Age', 'Gender']]
y = df['Race']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 42)


ohe = OneHotEncoder(handle_unknown='ignore')
ohe.fit(X_train)
X_train_ohe = ohe.transform(X_train).toarray()
ohe_df = pd.DataFrame(X_train_ohe, columns=ohe.get_feature_names(X_train.columns))
clf= LogisticRegression(solver='liblinear')
clf.fit(X_train_ohe, y_train.values.ravel())
X_test_ohe = ohe.transform(X_test)
y_preds = clf.predict(X_test_ohe)


print(" Logistic Regression ")
print ("Logistic Regression : ",accuracy_score(y_test, y_preds))
print(classification_report(y_test, y_preds)) 



model = LogisticRegression(solver='liblinear')
model.fit(X_train, y_train)


pickle.dump(model,open('model.pkl','wb'))
 

На этом шаге я хочу создать новый файл python и прочитать файл test.csv. Однако файл test.csv содержит значения NaN в заголовке «Гонка». Я могу заполнить значения NaN 0 в файле test.csv, но что мне нужно сделать после этого шага? Я должен предсказать значения гонки, используя загруженную модель. Я попробовал кодовый блок, как :

 df = pd.read_csv('test.csv')
df['Race']=df['Race'].replace(['NaN'], '0')
X = df[['Age', 'Gender']]


model=pickle.load(open('model.pkl','rb'))
 

Комментарии:

1. Здравствуйте, ваша модель загружена, и вы должны прогнозировать ? или ваша модель еще не загружена ?

2. Привет @Харшпарех , моя модель загружена. Просто я должен предсказать заголовок test.csv «Гонка», который является NaN.

3. Привет, тогда просто используйте эту модель и передайте свой X (фрейм данных), как эти модели.предсказывайте(X) и не передавайте в нем свой Y-код.

4. Привет, ты закрыл свой файл?

5. @VibhavSurve еще нет, сэр.

Ответ №1:

 model=pickle.load(open('model.pkl','rb'))
df = pd.read_csv('test.csv')
predictions=model.predict(df.drop('Race',axis=1))
print(predictions)
 

Комментарии:

1. спасибо за ваш ответ. Однако существует некоторая проблема. Итак , моя переменная «Гонка» имеет значения 1 , 2 , 3 , 4 ,5 в файле data.csv, но в прогнозах отображаются только значения 0 и 1.