更新时间: 试题数量: 购买人数: 提供作者:

有效期: 个月

章节介绍: 共有个章节

收藏
搜索
题库预览
请编写代码,对比伯努利朴素贝叶斯和高斯朴素贝叶斯在make_blobs数据集上的性能。 (1) 构造数据集,并进行拆分 from sklearn.datasets import make_blobs from sklearn.model_selection import train_test_split X, y = make_blobs(n_samples=400, centers=4, random_state=8) X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8) (2) 输出二者模型的得分 (3) 可视化二者的分类结果。 如图所示: <此处为图片> 我的答案: import matplotlib.pyplot as plt from sklearn.datasets import make_blobs from sklearn.model_selection import train_test_split from sklearn.naive_bayes import BernoulliNB, GaussianNB # 生成数据集 X, y = make_blobs(n_samples=400, centers=4, random_state=8) X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=8) # 伯努利朴素贝叶斯 nb = BernoulliNB() nb.fit(X_train, y_train) print(f'伯努利朴素贝叶斯模型得分:{nb.score(X_test, y_test):.3f}') # 高斯朴素贝叶斯 gnb = GaussianNB() gnb.fit(X_train, y_train) print(f'高斯朴素贝叶斯模型得分:{gnb.score(X_test, y_test):.3f}') # 可视化伯努利分类结果 x_min, x_max = X[:, 0].min() - 0.5, X[:, 0].max() + 0.5 y_min, y_max = X[:, 1].min() - 0.5, X[:, 1].max() + 0.5 xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.2), np.arange(y_min, y_max, 0.2)) z = nb.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape) plt.figure(figsize=(15, 5)) plt.subplot(121) plt.pcolormesh(xx, yy, z, cmap=plt.cm.Pastel1) plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Pastel1, edgecolor='k') plt.title('BernoulliNB') # 可视化高斯分类结果 z_gnb = gnb.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape) plt.subplot(122) plt.pcolormesh(xx, yy, z_gnb, cmap=plt.cm.Pastel1) plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Pastel1, edgecolor='k') plt.title('GaussianNB') plt.show() (缺图)
1 2