朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理的简单概率分类器,它假设特征之间相互独立。在实际应用中,朴素贝叶斯分类器对于不平衡数据集(即某一类别的样本数量远大于其他类别)的分类效果可能会受到影响。为了解决这个问题,可以设置class_weight='balanced'
参数。
class_weight='balanced'
可以使模型更加关注少数类别的样本,从而提高在不平衡数据集上的分类性能。为什么在不平衡数据集上,朴素贝叶斯分类器的性能会受到影响?
class_weight='balanced'
:这会使模型根据每个类别的样本数量自动调整权重,使得少数类别的样本在训练过程中得到更多的关注。from sklearn.naive_bayes import GaussianNB
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
# 生成不平衡数据集
X, y = make_classification(n_samples=1000, n_features=20, n_informative=2,
n_redundant=10, n_classes=2, weights=[0.9, 0.1], random_state=42)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 创建朴素贝叶斯分类器并设置class_weight='balanced'
clf = GaussianNB(class_weight='balanced')
# 训练模型
clf.fit(X_train, y_train)
# 评估模型
accuracy = clf.score(X_test, y_test)
print(f'Accuracy: {accuracy}')
通过设置class_weight='balanced'
,可以有效地改善朴素贝叶斯分类器在不平衡数据集上的性能,提高模型的泛化能力和准确性。