Как получить прогноз от обученной модели случайного леса? - PullRequest
0 голосов
/ 12 января 2019

у меня есть набор данных с двумя столбцами пользовательских сообщений (сообщений) и типа личности (типа), мне нужен тип личности в соответствии с сообщениями, использующими этот набор данных, поэтому я использовал случайную регрессию леса для прогнозирования вот мой код: -

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

count_vectorizer = CountVectorizer(decode_error='ignore')
X = count_vectorizer.fit_transform(df['posts'])
y = df['type'].values

Xtrain, Xtest, Ytrain, Ytest = train_test_split(X, y, test_size=0.33)

random_forest = RandomForestClassifier(n_estimators=100)
random_forest.fit(Xtrain, Ytrain)
Y_prediction = random_forest.predict(Xtest)

Точность:

random_forest.score(Xtrain, Ytrain)
acc_random_forest = round(random_forest.score(Xtrain, Ytrain) * 100, 2)
print(round(acc_random_forest,2,), "%")

100%

теперь я хочу получить прогноз из пользовательского текста, как мне этого добиться? как я могу получить индивидуальный тип сообщения отдельно, используя эту модель.

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Создайте новый столбец в том же наборе данных, который является df. Назовите его как custom_text или user_text или как-нибудь еще. Возьмите ввод, сохраните его в этом столбце, чтобы все строки этого столбца содержали одинаковые значения

custom_text = input("Enter Text")
custom_text = count_vectorizer.transform(df['custom_text'])
value_predicted = random_forest.predict(custom_text)
print(value_predicted[0])

, поскольку все значения value_predicted содержат одно и то же значение

0 голосов
/ 12 января 2019

Если есть df с пользовательским текстом в том же формате, что и posts, вы можете сделать следующее:

custom_text = count_vectorizer.transform(df['custom_text'])
value_predicted = random_forest.predict(custom_text)

value_predicted содержит результаты. Конечно, count_vectorizer и random_forest должны быть обученными моделями из вашего примера.

Кроме того, в вашем примере, вероятно, есть опечатка, вы должны проверять производительность на тесте, а не на поезде:

random_forest.score()
acc_random_forest = round(random_forest.score(Xtest, Ytest) * 100, 2)
print(round(acc_random_forest,2,), "%")
Out:
<Some score>
Точность

100% выглядит как переоснащение .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...