如何从 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 文件训练和测试一个简单的二进制分类器?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 google colab 的压缩文件夹中读取/导入训练和测试图像以进行多分类? gdrive 已安装到 gcolab