GaussianNaiveBayes算法的调参优化
简介
Gaussian Naive Bayes (GaussianNB) 是一种朴素贝叶斯分类器,它假设特征遵循高斯(正态)分布。在 sklearn 的实现中,GaussianNB 类提供了几个可调参数,虽然相对较少,但是仍然有一些选项可以帮助你微调模型的行为。以下是 GaussianNB 的主要参数:
-
priors: 类别先验概率的数组,形状为 [n_classes]。如果未设置(默认为 None),则类别先验概率将根据训练数据中的类频率自动计算。你可以设置这个参数来指定先验概率,这在某些情况下可能会有所帮助,例如当你的训练数据不是完全平衡的时候。
-
var_smoothing: (版本 0.20 引入)添加到每个特征的方差的拉普拉斯平滑(Laplace smoothing)的值。这是为了防止在计算过程中出现零方差的情况,导致数值不稳定。默认值是 1e-9,但你可以根据需要调整这个值来影响模型的稳定性和平滑程度。
代码
使用 GaussianNB ,对数据集load_digits做分类分析 ,调整 priors 和 var_smoothing 参数:
import numpy as np
import time
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
def evaluate_model(model, X_train, y_train, X_test, y_test):
# 记录训练时间
start_time = time.time()
model.fit(X_train, y_train)
train_time = time.time() - start_time
# 记录预测时间
start_time = time.time()
y_pred = model.predict(X_test)
predict_time = time.time() - start_time
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
# 打印结果
print(f"Accuracy: {
accuracy