训练数据的gridCV.score方法与gridCV.best_score_之间的区别

我对之间的区别有疑问 一个randomsearch.score方法(得分1)和randomsearch.best_score_属性(得分2)。

尤其是将randomsearch.score应用于X_train和y_train时。

我认为randomsearchCV会自动寻找训练集上得分最高的参数?我会假设randomsearch.score(Xtrain,ytrain)与randomsearch.best_params_分数相同吗?

from sklearn.model_selection import RandomizedSearchCV

def evaluate_model(model,param_grid,n_iter=100):
    random_search = RandomizedSearchCV(model,cv=5,n_jobs=2,verbose=1,n_iter=n_iter)

    random_search.fit(X_train,y_train)

    print (random_search.score(X_train,y_train)) # Score 1
    print (random_search.best_score_) # Score 2
    print (random_search.score(X_test,y_test)) # Score 3

    return random_search

  rgr = GradientBoostingRegressor(n_estimators=50)
  param_grid = {"max_depth": range(1,10,1)}

  gradient_boosting = evaluate_model(rgr,param_grid)

相反返回

Score 1: 0.9585014239352219
Score 2: 0.7129331788310186
Score 3: 0.7530744077231204
ou562970340 回答:训练数据的gridCV.score方法与gridCV.best_score_之间的区别

使用random_search.score(X_train,y_train),您可以在用于训练的相同数据上进行测试,因此得分很高。这是(几乎)完全没有意义的信息**,因为它不能告诉您模型在看不见的数据中的表现如何。

cv=5表示针对每个超参数设置对您的数据进行了5次分区,其中20%的数据用于测试,而80%的数据用于每个分区中的训练。然后将这5个测试集的结果取平均值。然后,将所有可能的超参数设置中的最高平均值记录在random_search.best_score_中。因此,关键的区别是您没有在用于训练的相同数据上评估性能,因此得分相对较低。

random_search.score(X_test,y_test)best_score_的相同之处在于,您正在评估看不见的数据的模型,但是它是实际泛化性能的更好指示。但是,与score 2不同的是,您的模型已经使用100%的训练数据进行了训练(而不是80%)。这是关于score 3score 2更好的原因的一种可能解释。

**如果此值较低,则说明您的模型不适合,应该尝试增加模型的复杂度,例如向NN添加更多隐藏层,或增加决策树的max_depth

本文链接:https://www.f2er.com/3161410.html

大家都在问