Как показать одно предсказание с использованием Случайного леса?

#python #machine-learning #dataset #random-forest

#питон #машинное обучение #набор данных #случайный лес

Вопрос:

Мой образец набора данных выглядит следующим образом — введите описание изображения здесь

Мои X_train функции 'Gender', 'Age', 'Leisure', 'Married', 'Division' amp; y_train это 'Online Shopping'

Моя последняя часть кода выглядит так —

 from sklearn.ensemble import RandomForestClassifier #rfc_100 = RandomForestClassifier(n_estimators=100, random_state=0)  rfc = RandomForestClassifier(random_state=0)  # fit the model  rfc.fit(X_train, y_train)  # Predict the Test set results  y_pred = rfc.predict(X_test)  # Check accuracy score   from sklearn.metrics import accuracy_score  print('Model accuracy score with 10 decision-trees : {0:0.4f}'. format(accuracy_score(y_test, y_pred)))  

Теперь мой вопрос в том, как мне использовать эту уже построенную модель и проверить прогноз? Например, я хочу внести такой вклад 'Son 19-30 Games Yes C' , и я хочу посмотреть, каков прогноз интереса к онлайн-покупкам.Вывод должен быть » Да » или «Нет».

Процесс кодирования-

 #Labeling import category_encoders as ce encoder1 = ce.OrdinalEncoder(cols=['Gender', 'Age', 'Leisure', 'Married', 'Division'])   X_train = encoder1.fit_transform(X)  X_test = encoder1.transform(X)  encoder2= ce.OrdinalEncoder(cols=['Online Shopping'])  #y_test is True Online Shopping labels #y_pred is predicted Online Shopping label in test set  y_train = encoder2.fit_transform(y)  y_test = encoder2.transform(y)  

Вывод маркировки- введите описание изображения здесь

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

1. Вы пробовали использовать rfc.predict ?

2. Нет. Возвращает ли он вывод для индивидуального ввода?

3. Кроме того, мне нужно преобразовать «Сын 19-30 игр Да С» в ярлык сначала здесь

4. Да, он возвращает вывод для индивидуального ввода. Вы должны структурировать «Сын 19-30 игр Да С» так же , как вы структурируете X_test , за исключением только одной точки данных

5. Я использовал кодировщик категорий для структурирования x_test. Поэтому, если я снова использую кодер категорий здесь для нового фрейма данных, то маркировка не будет такой же, как раньше.

Ответ №1:

Попробуйте это:

 d = {'Gender': ['Son'], 'Age': ['19-30'], 'Leisure': ['Games'], 'Married': ['Yes'], 'Division': ['C']} df_dp = pd.DataFrame(data=d) x_dp = encoder1.transform(df_dp) print(encoder2.inverse_transform(rfc.predict(x_dp)))  

где df_dp-это фрейм данных pandas для одной точки данных, и мы кодируем его, а затем показываем прогноз с помощью rfc.predict()

Я также заметил из вашего кода, что X_train и X_test взяты из одного и того же набора данных. Это не должно быть так: обучающие данные используются для обучения модели, в то время как данные тестирования используются для проверки того, насколько хорошо модель обобщается на невидимые данные. Вот почему ваши данные обучения и данные тестирования должны отличаться.

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

1. На самом деле я разделил набор данных раньше так: X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0,33, random_state = 42)

2. Похоже, вы переопределяете их этими строками кода X_train = кодировщик 1.fit_transform(X) X_test = кодировщик 1.преобразование(X)

3. Я изменил свой код на этот кодер1 = ce.Обычный кодер(cols=[«Пол», «Возраст», «Досуг», «Женат», «Подразделение»]) X_train = кодировщик 1.fit_transform(X_train) X_test = кодировщик 1.преобразование(X_test) кодировщик 2= ce.Обычный кодировщик(cols=[‘Интернет-магазины’]) #y_test-это истинные ярлыки онлайн-покупок #y_pred-прогнозируемая метка онлайн-покупок в наборе тестов y_train = кодировщик 2.fit_transform(y_train) y_test = кодировщик 2.преобразование(y_test)

4. Это решает проблему разделения теста на поезд! Удалось ли мне ответить на ваш вопрос?