sklearn对好评和差评的训练集分别训练,实现贝叶斯分类,区分好评和差评,给出示例代码
时间: 2023-10-10 16:06:27 浏览: 42
好的,下面是一个简单的示例代码,用于训练一个基于朴素贝叶斯的情感分类器,用于区分好评和差评。
首先,我们需要导入所需的库:
```python
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer
```
然后,我们可以定义我们的训练数据。这里,我们将使用一个包含好评和差评的文本数据集,每个文本都有一个标签(1表示好评,0表示差评)。
```python
reviews = [
{'text': '这个产品真是太棒了!我非常喜欢它。', 'label': 1},
{'text': '这个产品真是太糟糕了!我非常讨厌它。', 'label': 0},
{'text': '这个产品还不错。我觉得它的性价比很高。', 'label': 1},
{'text': '这个产品质量太差了。我不会再买它了。', 'label': 0},
# 更多的评论...
]
```
接下来,我们需要将文本数据转换为数字特征,以便我们可以将其传递给朴素贝叶斯分类器。我们可以使用Scikit-learn的CountVectorizer来完成这项任务:
```python
vectorizer = CountVectorizer()
features = vectorizer.fit_transform([review['text'] for review in reviews])
labels = [review['label'] for review in reviews]
```
然后,我们可以将我们的数据集分成训练集和测试集:
```python
train_features = features[:3]
train_labels = labels[:3]
test_features = features[3:]
test_labels = labels[3:]
```
最后,我们可以训练我们的朴素贝叶斯分类器,并使用测试数据进行评估:
```python
clf = MultinomialNB()
clf.fit(train_features, train_labels)
accuracy = clf.score(test_features, test_labels)
print('Accuracy:', accuracy)
```
完整的代码:
```python
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer
reviews = [
{'text': '这个产品真是太棒了!我非常喜欢它。', 'label': 1},
{'text': '这个产品真是太糟糕了!我非常讨厌它。', 'label': 0},
{'text': '这个产品还不错。我觉得它的性价比很高。', 'label': 1},
{'text': '这个产品质量太差了。我不会再买它了。', 'label': 0},
# 更多的评论...
]
vectorizer = CountVectorizer()
features = vectorizer.fit_transform([review['text'] for review in reviews])
labels = [review['label'] for review in reviews]
train_features = features[:3]
train_labels = labels[:3]
test_features = features[3:]
test_labels = labels[3:]
clf = MultinomialNB()
clf.fit(train_features, train_labels)
accuracy = clf.score(test_features, test_labels)
print('Accuracy:', accuracy)
```