python-3.x - 如何在多文本分类中添加更多特征?

标签 python-3.x scikit-learn text-classification supervised-learning

我有一个带有 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'\w{1,}', 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,但它们(几乎)得到了相同的结果。

最佳答案

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

  • 将您的附加功能准备为 NumPy 形状数组:示例数量 × 功能数量。
  • 使用 np.concatenate axis=1 .
  • 像之前一样拟合分类器。

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

    关于python-3.x - 如何在多文本分类中添加更多特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63337368/

    相关文章:

    python - 如何返回每个分类实例的概率?

    nlp - FastText 使用预训练词向量进行文本分类

    python - 使用对数概率的复杂性 - 朴素贝叶斯文本分类器

    python-3.x - 来自同一节点的 pygraphviz 多条边在 Mac OS X 上不起作用

    python - 创建没有深拷贝的列表子类

    python - 无法克隆对象 ' does not seem to be a scikit-learn estimator as it does not implement a ' get_params 的方法

    python - 使用 Sklearn 进行多标签文本分类

    python-3.x - 何时不使用张量

    python - 从 ssh 使用 python 时出现 UnicodeEncodeError

    python - 如何绘制混淆矩阵?