如何从 CSV 文件训练和测试一个简单的二进制分类器?

Posted

技术标签:

【中文标题】如何从 CSV 文件训练和测试一个简单的二进制分类器?【英文标题】:How to train and test a simple binary classifier from CSV file? 【发布时间】:2021-02-09 21:00:55 【问题描述】:

我制作了一个带有推文双元组的以下 CSV 文件,我想训练一个模型来预测标签。我在网上找到的大多数示例都包含带有附加参数的数值特征,这使得它很难理解。在这里,我问了一个非常简单的示例,以了解使用 python(使用 scikit-learn 之类的库)究竟应该做什么来使用这个最简单的 CSV 数据集训练和测试分类模型(任何模型)。

bigram, label
I love, 0
love you, 0
I hate, 1
hate you, 1
...

我希望这篇文章也能对其他机器学习初学者有所帮助。

【问题讨论】:

这是一个相关的答案,但仍然有些复杂! ***.com/questions/64543626/… 【参考方案1】:

这里又是示例代码,但还有更多内容。

from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.svm import LinearSVC

# Naïve Bayes:
text_clf_nb = Pipeline([('tfidf', TfidfVectorizer()),
                     ('clf', MultinomialNB()),
])

text_clf_nb.fit(X_train, y_train)

predictions = text_clf_nb.predict(X_test)

【讨论】:

【参考方案2】:

您正在尝试解决 NLP 问题。典型的机器学习算法不适用于文本。您需要将此文本转换为数字。 Python Spacy 或 NLTK 库旨在解决这个问题。通常它会创建一个单词词汇表,每个单词都会被分配一个数字。这意味着输入将连接到一个数字列表,并且可以应用算法。

【讨论】:

感谢您的帮助。所以不需要将 ngram 转换为向量,对吧?能否请您也提供一个简短的示例? 通常通过将它们转换为向量来完成。如果您使用 spacy,它会自动为您执行此操作。它被转换为 Tfidf 矢量化。这是一个示例代码,我建议做一个关于 NLP 的课程。 from sklearn.pipeline import Pipeline from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.naive_bayes import MultinomialNB from sklearn.svm import LinearSVC # Naïve Bayes: text_clf_nb = Pipeline([('tfidf', TfidfVectorizer( )), ('clf', MultinomialNB()), ]) text_clf_nb.fit(X_train, y_train) 预测 = text_clf_nb.predict(X_test) 我认为最好添加一个答案,因为在 cmets 中会忽略换行符。

以上是关于如何从 CSV 文件训练和测试一个简单的二进制分类器?的主要内容,如果未能解决你的问题,请参考以下文章

使用 TF-IDF 测试和训练具有不同数量特征的集

直接从 mySQL 数据库训练分类器

如何从 google colab 的压缩文件夹中读取/导入训练和测试图像以进行多分类? gdrive 已安装到 gcolab

R中的J48树 - 训练和测试分类

如何将数据集 (csv) 拆分为训练和测试数据

如何从 TfidfVectorizer 计算余弦相似度?