如何使用 Sklearn 处理随机森林的字符列

How to deal with character columns for a random forest with Sklearn

我有一个包含 'title'、'content' 列的数据框。这是关于一些报纸文章。我想在其上做一个随机森林以预测一个变量:负数、正数或中性。

所以我的特征变量将是标题和内容,而我的探索变量将是例如“情绪”(否定、肯定或中性)。 问题是我只有字符列。我不能像 One Hot 编码那样做一些编码,因为所有的原始文件都是不同的,所以它会有许多不同的编码,因为有行。

我不知道如何进行...我可以自己手动指定训练集的探索变量吗?如果您有一些指示我可以继续我的项目,非常感谢!!!

df = pd.DataFrame(columns=["title", "content"], data=[["The Rise and Fall of Heidelberg Street","McDougall-Hunt a small neighborhood of single-..."]])
df.head()

title                                           content

The Rise and Fall of Heidelberg Street          McDougall-Hunt a small neighborhood of single-...

您可以使用

将它们转换为虚拟变量
import pandas as pd
dummies = pd.get_dummies(df)

如果您想创建基线,我建议您使用 TF-IDF TfidfTransformer 来对您的文本进行矢量化表示。

TF-IDF 基本上是一种统计度量,用于评估一个词与 collection 个文档中的一个文档的相关程度。

您可以简单地连接标题和内容,然后通过此管道传递它:

from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer
from sklearn.linear_model import SGDClassifier
from sklearn.pipeline import Pipeline

df['text'] = df['title']+' '+df['content']
X=df['text']
y=df['sentiment']
pipeline = Pipeline([
    ('vect', CountVectorizer()),
    ('tfidf', TfidfTransformer()),
    ('clf', SGDClassifier()),
])
pipeline.fit(X, y)

我建议您阅读那些特征提取文档,因为它们将帮助您了解它们的工作原理。