Scikit中使用Grid_Search来获取模型的最佳参数

1. grid search是用来寻找模型的最佳参数

先导入一些依赖包

from sklearn.ensemble import GradientBoostingClassifier
from sklearn.grid_search import GridSearchCV
from sklearn import metrics
import numnpy as np
import pandas as pd

2. 设置要查找的参数

params={'learning_rate':np.linspace(0.05,0.25,5), 'max_depth':[x for x in range(1,8,1)], 'min_samples_leaf':[x for x in range(1,5,1)], 'n_estimators':[x for x in range(50,100,10)]}

3. 设置模型和评价指标,开始用不同的参数训练模型

clf = GradientBoostingClassifier()
grid = GridSearchCV(clf, params, cv=10, scoring="f1")
grid.fit(X, y)

scoring所有可能情况如下:

  • Classification
scoringfunctioncomment
accuracymetrics.accuracy_score
average_precisionmetrics.average_precision_score
f1metrics.f1_scorefor binary targets
f1_micrometrics.f1_scoremicro-averaged
f1_macrometrics.f1_scoremacro-averaged
f1_weightedmetrics.f1_scoreweighted average
f1_samplesmetrics.f1_scoreby multilabel sample
neg_log_lossmetrics.log_lossrequires predict_proba support
precision etc.metrics.precision_scoresuffixes apply as with “f1”
recall etc.metrics.recall_scoresuffixes apply as with “f1”
roc_aucmetrics.roc_auc_score
  • Clustering
scoringfunctioncomment
adjusted_rand_scoremetrics.adjusted_rand_score
  • Regression
scoringfunctioncomment
neg_mean_absolute_errormetrics.mean_absolute_error
neg_mean_squared_errormetrics.mean_squared_error
neg_median_absolute_errormetrics.median_absolute_error
r2metrics.r2_score

4. 查看最佳分数和最佳参数

grid.best_score_    #查看最佳分数(此处为f1_score)
grid.best_params_   #查看最佳参数

这里写图片描述

5. 获取最佳模型

grid.best_estimator_

这里写图片描述

6. 利用最佳模型来进行预测

best_model=grid.best_estimator_
predict_y=best_model.predict(Test_X)
metrics.f1_score(y, predict_y)
  • 14
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
scikit-learn,虽然它主要是用于传统机器学习算法,但也可以用于对深度学习模型的超参数进行网格搜索。 要使用scikit-learn进行深度学习模型的超参数网格搜索,你可以使用`KerasClassifier`或`KerasRegressor`,将深度学习模型包装成一个scikit-learn的估计器。然后,你可以使用`GridSearchCV`进行网格搜索。 下面是一个使用scikit-learn进行深度学习模型参数网格搜索的示例: ```python from sklearn.model_selection import GridSearchCV from sklearn.wrappers import KerasClassifier from keras.models import Sequential from keras.layers import Dense # 定义一个函数来构建深度学习模型 def create_model(optimizer='adam', activation='relu', hidden_units=64): model = Sequential() model.add(Dense(hidden_units, activation=activation, input_dim=X_train.shape[1])) model.add(Dense(1, activation='sigmoid')) model.compile(optimizer=optimizer, loss='binary_crossentropy', metrics=['accuracy']) return model # 创建KerasClassifier对象 model = KerasClassifier(build_fn=create_model, verbose=0) # 定义超参数的候选值 param_grid = { 'optimizer': ['adam', 'sgd'], 'activation': ['relu', 'sigmoid'], 'hidden_units': [32, 64, 128] } # 进行网格搜索 grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=3) grid_search.fit(X_train, y_train) # 输出最佳参数组合和对应的模型性能 print("Best parameters: ", grid_search.best_params_) print("Best accuracy: ", grid_search.best_score_) ``` 在这个示例,我们首先定义了一个函数`create_model()`来创建一个简单的深度学习模型。然后,我们使用`KerasClassifier`将这个函数包装成一个scikit-learn的估计器。 接下来,我们定义了超参数的候选值,包括优化器(optimizer)、激活函数(activation)和隐藏单元数(hidden_units)。 然后,我们使用`GridSearchCV`进行网格搜索,传入模型对象、超参数候选值和交叉验证的折数(此处为3折)。 最后,通过调用`fit()`方法来执行网格搜索,并使用`best_params_`和`best_score_`属性输出最佳参数组合和对应的模型性能。 你可以根据实际问题和模型的超参数进行修改和扩展。请注意,这只是一个基本示例,实际使用你可能需要更复杂的模型和更广泛的超参数搜索。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值