【发布时间】:2022-01-15 02:31:17
【问题描述】:
我想使用 RandomForestClassifier 进行情绪分类。 x 包含字符串文本中的数据,所以我使用 LabelEncoder 来转换字符串。 Y 包含数字数据。我的代码是这样的:
import pandas as pd
import numpy as np
from sklearn.model_selection import *
from sklearn.ensemble import *
from sklearn import *
from sklearn.preprocessing.label import LabelEncoder
data = pd.read_csv('data.csv')
x = data['Reviews']
y = data['Ratings']
le = LabelEncoder()
x_encoded = le.fit_transform(x)
x_train, x_test, y_train, y_test = train_test_split(x_encoded,y, test_size = 0.2)
x_train = x_train.reshape(-1,1)
x_test = x_test.reshape(-1,1)
clf = RandomForestClassifier(n_estimators=100)
clf.fit(x_train, y_train)
y_pred = clf.predict(x_test)
然后我打印出如下精度:
print("Accuracy:", metrics.accuracy_score(y_test, y_pred))
这是输出:
Accuracy: 0.5975
我读到随机森林具有很高的准确性,因为参与该过程的决策树的数量。但我认为准确度远低于应有的水平。我在 Stack Overflow 上寻找了一些类似的问题,但我找不到我的问题的解决方案。
我的代码使用随机森林库有什么问题吗?或者在使用随机森林时是否有任何例外情况?
【问题讨论】:
-
你应该专注于预处理
reviews列 -
sklearn doc for
LabelEncoder提到:“这个转换器应该用于编码目标值,即 y,而不是输入 X”。如果您想为文本数据训练体面的模型,您应该熟悉文本表示方法。顺便说一句,如果您在编码后查看功能,您就会明白问题所在。
标签: python scikit-learn random-forest text-classification