根据贝叶斯判别界面方程绘制判别界面的python代码
时间: 2024-09-22 14:09:06 浏览: 95
在Python中,我们可以使用scikit-learn库中的`make_blobs`函数生成一些示例数据,并利用贝叶斯分类器(如高斯朴素贝叶斯)来进行分类。然后通过绘制不同特征之间的决策边界来展示贝叶斯判别面。以下是使用matplotlib进行绘图的一个简单例子:
```python
from sklearn.datasets import make_blobs
from sklearn.naive_bayes import GaussianNB
import matplotlib.pyplot as plt
import numpy as np
# 生成二维数据集
X, y = make_blobs(n_samples=100, centers=2, random_state=42)
# 创建高斯朴素贝叶斯模型
gnb = GaussianNB()
# 训练模型
gnb.fit(X, y)
# 预测每个点属于哪一类
y_pred = gnb.predict(X)
# 获取每个点的概率估计
probs = gnb.predict_proba(X)[:, 1]
# 绘制原始数据点和决策边界
plt.scatter(X[y == 0, 0], X[y == 0, 1], label='Class 0', color='red')
plt.scatter(X[y == 1, 0], X[y == 1, 1], label='Class 1', color='blue')
# 设置概率阈值,画出决策边界
decision_boundary = (-gnb.theta_[0] - gnb.sigma_[0, 0] * x) / gnb.sigma_[0, 1]
x_values = np.linspace(min(X[:, 0]), max(X[:, 0]))
y_values = decision_boundary + gnb.sigma_[0, 1] * np.sqrt(-2 * np.log(probs))
plt.plot(x_values, y_values, 'k-', linewidth=2)
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.legend()
plt.title("Bayesian Discriminant Analysis Decision Boundary")
plt.show()
阅读全文