python - Sklearn 使用自然语言处理数值数据

标签 python pandas scikit-learn nltk

我正在使用 sklearn 进行项目,并且有两列可用于预测。一列是text,它是一系列文章,另一列是equal_cnts,它是一个实数。我正在尝试创建一个使用 SVM 对文本和数字进行训练的模型,但我无法弄清楚如何使用这两个功能。

vect = CountVectorizer(ngram_range=(1, 2))
tfidf = TfidfTransformer()
svm = svm.SVC(kernel='linear', C = 100, gamma = 0.1)

text_clf = Pipeline([('vect', vect), ('tfidf', tfidf), ('svm', svm)])
scores = cross_val_score(text_clf, pd.concat([df['text'], df['equal_cnt']], axis = 1), df['empirical'], cv=10)

我目前正在尝试执行上述操作,其中管道旨在处理文本,并且正在根据 df["empirical"] 测试模型的准确性。

最佳答案

您可以将稀疏矩阵从 TFIDF 转换器转换为数据框,然后只需将数值列作为额外列分配给该数据框。让我通过一个例子向您展示这一点:

from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pd 
corpus = [
    'This is the first document.',
    'This document is the second document.',
    'And this is the third one.',
    'Is this the first document?',
]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
textMatDf = pd.DataFrame(X.toarray())
textMatDf['numCol'] = df['equal_cnt']

现在这个textMatDf可以用于训练和验证。

关于python - Sklearn 使用自然语言处理数值数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59889272/

相关文章:

python - 在unet架构中使用自定义权重图的正确方法

python - 如何使用 Homebrew 升级到特定的 Python 版本?

python - 将 NaN 添加到 pandas 系列时,保留 bool 和 float 之间的区别?

python - 如何读取多个数据集,并创建具有年份列的单个数据框

python - 比较在 scikit-learn 中调整超参数的方法

python - 使用FigureCanvasQTAgg时不同的DataFrame绘图行为

python - 无法在内部使用几何管理器网格。已经有由包管理的奴隶

python - 多处理池管理器命名空间 EOF 错误

Java 正则表达式不匹配 ascii 范围之外,行为不同于 python 正则表达式

scikit-learn - XGboost python - 分类器类权重选项?