用朴素贝叶斯训练模型,并用网格搜索寻找最优超参数,给出代码
时间: 2024-11-06 10:24:43 浏览: 30
Spark ml pipline交叉验证之朴素贝叶斯.docx
朴素贝叶斯是一种基于概率论的分类算法,它假设特征之间相互独立,这在实际应用中并不总是成立,但它通常在小型数据集上表现良好。以下是使用Python的sklearn库训练朴素贝叶斯模型并进行网格搜索找到最优超参数的一个简要示例:
```python
from sklearn.model_selection import GridSearchCV
from sklearn.naive_bayes import GaussianNB
from sklearn.datasets import load_iris
from sklearn.feature_extraction.text import CountVectorizer
# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target
# 将数据转换为适合朴素贝叶斯的文本格式,这里仅做演示,如果是数值型数据则不需要此步
vectorizer = CountVectorizer() # 对于文本数据
X_text = vectorizer.fit_transform(X.reshape(-1, 1)) # 转换为一维向量
# 定义朴素贝叶斯模型
gnb = GaussianNB()
# 定义超参数网格
param_grid = {'alpha': [0.01, 0.1, 1.0, 10.0]} # alpha是高斯朴素贝叶斯中的平滑参数
# 创建网格搜索对象
grid_search = GridSearchCV(gnb, param_grid, cv=5) # 使用交叉验证提高结果的稳健性
# 训练模型并找到最佳超参数
grid_search.fit(X_text, y)
# 获取最佳参数和模型
best_params = grid_search.best_params_
best_model = grid_search.best_estimator_
# 输出最优参数
print(f"最优参数: {best_params}")
# 打印评分指标(取决于所选的评价函数)
print(f"最优评分: {grid_search.best_score_}")
阅读全文