Я работаю над учебником, посвященным OneHotEncoder. Я понимаю, что такое функции кодирования, но у меня возникла небольшая проблема с использованием кодировщика с конвейером для создания нового прогноза. Две характеристики - «Секс» и «Встал» - скорее категориальные, чем числовые. При создании нового массива numpy для прогнозирования вы используете начальные значения, скажем, «мужской» и «C», или, скажем, «1» и «2», чтобы сделать новый прогноз? Я получаю следующую ошибку: «ValueError: указание столбцов с использованием строк поддерживается только для pandas DataFrames», что странно, учитывая, что значения, которые я использую, являются числовыми. В любом случае, придется ли мне подогнать конвейер к X_new, чтобы сделать новый прогноз? Если да, то как я могу это сделать?
X_new = [[3, 1, 0]] OR X_new = [['3','male', 'C']]
pipe.predict(X_new)
Полный код:
import pandas as pd
import numpy as np
df = pd.read_csv("https://raw.githubusercontent.com/---/pandas-videos/master/data/titanic_train.csv")
from sklearn.linear_model import LogisticRegression
logreg = LogisticRegression(solver='lbfgs')
from sklearn.model_selection import cross_val_score
cross_val_score(logreg, X, y, cv=5, scoring='accuracy').mean()
from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder(sparse=False)
X = df.drop('Survived', axis='columns')
from sklearn.compose import make_column_transformer
column_trans = make_column_transformer(
(OneHotEncoder(), ['Sex', 'Embarked']),
remainder='passthrough')
column_trans.fit_transform(X)
from sklearn.pipeline import make_pipeline
pipe = make_pipeline(column_trans, logreg)
cross_val_score(pipe, X, y, cv=5, scoring='accuracy').mean()
X_new = [[3, 1, 0]]
pipe.predict(X_new)