如何在多文本分类中添加更多特征?

Posted

技术标签:

【中文标题】如何在多文本分类中添加更多特征?【英文标题】:How to add more features in multi text classification? 【发布时间】:2020-11-29 21:23:05 【问题描述】:

我有一个以product_description, price, supplier, category 为列的零售数据集。 我使用product_description 作为特征:

from sklearn import model_selection, preprocessing, naive_bayes

# split the dataset into training and validation datasets 
train_x, valid_x, train_y, valid_y = model_selection.train_test_split(df['product_description'], df['category'])

# label encode the target variable 
encoder = preprocessing.LabelEncoder()
train_y = encoder.fit_transform(train_y)
valid_y = encoder.fit_transform(valid_y)

tfidf_vect = TfidfVectorizer(analyzer='word', token_pattern=r'\w1,', max_features=5000)
tfidf_vect.fit(df['product_description'])
xtrain_tfidf =  tfidf_vect.transform(train_x)
xvalid_tfidf =  tfidf_vect.transform(valid_x)

classifier = naive_bayes.MultinomialNB().fit(xtrain_tfidf, train_y)

# predict the labels on validation dataset
predictions = classifier.predict(xvalid_tfidf)
metrics.accuracy_score(predictions, valid_y) # ~20%, very low

由于准确性非常低,我也想将供应商和价格添加为特征。如何将其合并到代码中?

我尝试过其他分类器,例如 LR、SVM 和 Random Forrest,但它们的结果(几乎)相同。

【问题讨论】:

【参考方案1】:

TF-IDF 矢量化器返回一个矩阵:每个示例一行带有分数。在将其输入分类器之前,您可以根据需要修改此矩阵。

将您的附加特征准备为 NumPy 形状数组:示例数 × 特征数

np.concatenateaxis=1 一起使用。

像以前一样拟合分类器。

标准化实值特征通常是一个好主意。此外,您可以尝试不同的分类器:逻辑回归或 SVM 可能比朴素贝叶斯更适合实值特征。

【讨论】:

我会试试的,谢谢。我确实尝试过其他分类器,例如 LR、SVM 和 Random Forrest,但它们的结果(几乎)相同

以上是关于如何在多文本分类中添加更多特征?的主要内容,如果未能解决你的问题,请参考以下文章

如何在当前的词袋分类中添加另一个文本特征?在 Scikit-learn 中

Python:如何在多标签类的 SVM 文本分类器算法中找到准确度结果

使用 Weka 进行文本分类

文本分类特征工程概述

如何从文本中提取 COMPLAINT 特征,以便对非投诉文本中的投诉进行分类

多模态特征融合:图像语音文本如何转为特征向量并进行分类