写一个python代码基于sklearn的多层感知机用网格搜索交叉验证调整参数
时间: 2024-03-30 09:36:57 浏览: 79
好的,以下是一个基于sklearn的多层感知机用网格搜索交叉验证调整参数的Python代码示例:
```python
from sklearn.neural_network import MLPClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import numpy as np
# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 定义参数范围
param_grid = {
'hidden_layer_sizes': [(10,), (50,), (100,)],
'activation': ['relu', 'tanh', 'logistic'],
'solver': ['sgd', 'adam'],
'learning_rate': ['constant', 'adaptive'],
}
# 定义模型
mlp = MLPClassifier(max_iter=1000)
# 定义网格搜索对象
grid = GridSearchCV(mlp, param_grid, cv=5, scoring='accuracy')
# 训练模型
grid.fit(X_train, y_train)
# 输出最佳参数和最佳得分
print("Best parameters: ", grid.best_params_)
print("Best cross-validation score: {:.2f}".format(grid.best_score_))
print("Test set score: {:.2f}".format(grid.score(X_test, y_test)))
```
在上述代码中,首先加载了一个经典的鸢尾花数据集,并将其划分为训练集和测试集。然后,定义了一个参数范围字典`param_grid`,其中包括了隐藏层大小、激活函数、优化器和学习率等参数的不同组合。接着,定义了一个多层感知机模型`mlp`,以及一个网格搜索对象`grid`。最后,通过调用`grid.fit(X_train, y_train)`训练模型并进行交叉验证和网格搜索,得到最佳参数和最佳得分,并输出到控制台中。
希望这个示例代码能够帮助您更好地理解基于sklearn的多层感知机用网格搜索交叉验证调整参数的方法。
阅读全文