分类:如何处理具有所有其他数字特征的特征集中的评论/长英文单词

数据挖掘 机器学习 Python 分类 nltk
2022-03-07 11:58:55

我目前正在研究一个用例,其中功能集包含诸如数量之类的数值,以及包含冗长英文文本的评论功能。训练数据和测试数据之间的英文文本会有很大差异。例如'我见过它很好'、'nto ok'、'timepass'等

我如何将文本特征集与数值数据结合起来,并将其提供给机器学习模型?

我将无法使用编码,这些文本变量不是分类值。它们各不相同。

import pandas as panda
from sklearn.feature_extraction.text import TfidfVectorizer

words = ['i hv paid','i dont like','its good','yum yum']

a = panda.DataFrame({'amount':[10,20,30,40],'word':words})

tf = TfidfVectorizer()

csr = tf.fit_transform(words)

#how do i now use my csr to feed both amount and word to my machine learning model
3个回答

解决您的用例的一种方法可能是创建 2 个单独的模型,一个模型使用您的文本数据特征,另一个模型使用您的数字特征,并使用集成组合它们的结果。

另一种方法是从您的文本特征(例如 tf-idf、word2vec)中创建数字特征,并将它们与您的数字特征结合起来,并将它们提供给您的模型。

示例代码-

from sklearn.feature_extraction.text import TfidfVectorizer
import numpy as np
import pandas as pd

words = ['i hv paid','i dont like','its good','yum yum']
tf = TfidfVectorizer()
vector = tf.fit_transform(words)
df = pd.DataFrame([10,20,30,40])
df2 = pd.DataFrame(vector.toarray())
pd.concat([df,df2], axis=1)

样本输出- 在此处输入图像描述

您从向量空间模型开始,例如Bag of Words这里可以使用词袋的不同变体,例如Count Vectorizer 或 TF-IDF近年来流行的另一种方法是 Word Embeddings,例如Word2vec

由于您的问题非常基本,因此我停在这里。如果您需要更多帮助,请提供更多详细信息,我可以为您提供一个简单的分类模型。

重要的是不要改变 csr 的主要类型

from scipy.sparse import csr_matrix, hstack
csr = hstack([csr, csr_matrix(a.amount).T], 'csr')