写一个找好瓜的朴素贝叶斯代码
时间: 2024-05-10 15:17:43 浏览: 162
朴素贝叶斯代码
3星 · 编辑精心推荐
好的,以下是一个简单的找好瓜的朴素贝叶斯代码示例。
假设我们有一个数据集,其中包含一些瓜的属性和它们是好瓜还是坏瓜。瓜的属性包括色泽、根蒂、敲声等等。我们将使用这些属性来预测新瓜是否是好瓜。
首先,我们需要将数据集分为训练集和测试集。我们将使用80%的数据作为训练集,20%的数据作为测试集。
```python
import pandas as pd
from sklearn.model_selection import train_test_split
# 读入数据
data = pd.read_csv('watermelon.csv')
# 划分训练集和测试集
train, test = train_test_split(data, test_size=0.2)
```
接下来,我们需要计算每个属性和它们的取值对于好瓜和坏瓜的条件概率。我们可以使用pandas的groupby函数来计算这些概率。
```python
# 计算每个属性和它们的取值对于好瓜和坏瓜的条件概率
probabilities = {}
for column in train.columns[:-1]:
probabilities[column] = train.groupby([column, 'label']).size() / len(train)
```
最后,我们可以使用这些条件概率来预测新瓜的分类。我们将计算新瓜属于好瓜和坏瓜的概率,并选择概率最大的分类作为预测结果。
```python
# 预测测试集分类
predictions = []
for _, row in test.iterrows():
good_prob = 1
bad_prob = 1
for column in train.columns[:-1]:
good_prob *= probabilities[column].get((row[column], '是'), 0)
bad_prob *= probabilities[column].get((row[column], '否'), 0)
good_prob *= probabilities['label'].get('是', 0)
bad_prob *= probabilities['label'].get('否', 0)
if good_prob > bad_prob:
predictions.append('是')
else:
predictions.append('否')
# 计算分类准确率
accuracy = (predictions == test['label']).mean()
print('分类准确率:', accuracy)
```
完整代码如下:
```python
import pandas as pd
from sklearn.model_selection import train_test_split
# 读入数据
data = pd.read_csv('watermelon.csv')
# 划分训练集和测试集
train, test = train_test_split(data, test_size=0.2)
# 计算每个属性和它们的取值对于好瓜和坏瓜的条件概率
probabilities = {}
for column in train.columns[:-1]:
probabilities[column] = train.groupby([column, 'label']).size() / len(train)
# 预测测试集分类
predictions = []
for _, row in test.iterrows():
good_prob = 1
bad_prob = 1
for column in train.columns[:-1]:
good_prob *= probabilities[column].get((row[column], '是'), 0)
bad_prob *= probabilities[column].get((row[column], '否'), 0)
good_prob *= probabilities['label'].get('是', 0)
bad_prob *= probabilities['label'].get('否', 0)
if good_prob > bad_prob:
predictions.append('是')
else:
predictions.append('否')
# 计算分类准确率
accuracy = (predictions == test['label']).mean()
print('分类准确率:', accuracy)
```
阅读全文