如何从经过训练的随机森林模型中获得预测?

时间:2019-01-12 09:40:58

标签: python machine-learning scikit-learn random-forest

我有一个包含两列用户帖子(帖子)和性格类型(类型)的数据集,我需要根据使用此数据集的帖子的性格类型,因此我使用随机森林回归进行预测 这是我的代码:-

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 :(得分:0)

如果有一个df带有与posts相同格式的自定义文本,则可以执行以下操作:

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

value_predicted包含结果。当然,count_vectorizerrandom_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%的准确度得分看起来像overfitting

答案 1 :(得分:0)

在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的所有值都包含相同的值