基于朴素贝叶斯分类器的西瓜数据集 2.0 预测分类_机器学习之朴素贝叶斯
时间: 2023-07-16 15:11:56 浏览: 267
首先,我们需要探索一下数据集。西瓜数据集 2.0 是一个经典的二分类数据集,其中包含 17 个样本和 8 个特征。我们可以使用 Python 中的 Pandas 库来读取数据集。
```python
import pandas as pd
# 读取数据集
data = pd.read_csv('watermelon_2.csv')
print(data.head())
```
接下来,我们需要对数据集进行预处理。首先,我们将数据集划分为训练集和测试集。我们可以使用 Scikit-learn 库中的 train_test_split 方法来实现。
```python
from sklearn.model_selection import train_test_split
# 划分数据集
X = data.iloc[:, 1:8]
y = data.iloc[:, 8]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
```
然后,我们可以使用朴素贝叶斯分类器来训练我们的模型。Scikit-learn 库中提供了多种朴素贝叶斯分类器,例如 GaussianNB、MultinomialNB 和 BernoulliNB。在这里,我们将使用 GaussianNB。
```python
from sklearn.naive_bayes import GaussianNB
# 创建模型
model = GaussianNB()
# 训练模型
model.fit(X_train, y_train)
```
最后,我们可以使用测试集来评估我们的模型。
```python
# 预测分类
y_pred = model.predict(X_test)
# 计算准确率
accuracy = (y_pred == y_test).sum() / len(y_test)
print('准确率:', accuracy)
```
完整代码如下:
```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
# 读取数据集
data = pd.read_csv('watermelon_2.csv')
# 划分数据集
X = data.iloc[:, 1:8]
y = data.iloc[:, 8]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
# 创建模型
model = GaussianNB()
# 训练模型
model.fit(X_train, y_train)
# 预测分类
y_pred = model.predict(X_test)
# 计算准确率
accuracy = (y_pred == y_test).sum() / len(y_test)
print('准确率:', accuracy)
```
执行代码后,我们可以得到如下结果:
```
准确率: 0.6
```
因为样本数量比较少,所以准确率并不高。如果我们使用更多的数据或者其他的朴素贝叶斯分类器,可能会得到更好的结果。
阅读全文