首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当预测在一个循环中进行时,模型给出不同的分数,而当预测是从一个模型列表中作出时,模型给出不同的分数。

当预测在一个循环中进行时,模型给出不同的分数,而当预测是从一个模型列表中作出时,模型给出不同的分数。
EN

Stack Overflow用户
提问于 2020-08-31 02:55:26
回答 1查看 22关注 0票数 0

变量grid.best_estimator_包含从GridSearchCV中找到的决策树模型

代码语言:javascript
复制
for subset in range(len(smol_X_train)):
    temp_tree = grid.best_estimator_.fit(smol_X_train[subset], smol_y_train[subset])
    pred = temp_tree.predict(X_test)
    accuracy = accuracy_score(y_test, pred)
    print(accuracy)

产出-

代码语言:javascript
复制
0.827
0.7025 
0.782 
0.7205 
..
..
0.8365
0.8395 

有一份名单-

代码语言:javascript
复制
tree_list = []

for subset in range(len(smol_X_train)):
    temp_tree = grid.best_estimator_.fit(smol_X_train[subset], smol_y_train[subset])
    tree_list.append(temp_tree)

for one_tree in tree_list:
    pred = one_tree.predict(X_test)
    accuracy = accuracy_score(y_test, pred)
    print(accuracy)

产出-

代码语言:javascript
复制
0.8395
0.8395
0.8395
0.8395
..
..
0.8395
0.8395

列表中的模型返回相同的分数(最后一个模型的分数)。

  1. 为什么输出在这里不同?存储在列表中的模型不是都安装在不同的子集上,因此,也应该给出不同的预测吗?
  2. 是当它们被放入列表时失去的模型的适合度吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-31 11:29:19

克隆、拟合模型,然后将其添加到列表中,这就是其中的诀窍。而不是直接将模型附加到列表中。

代码语言:javascript
复制
from sklearn.base import clone

tree_list = []

for subset in range(len(smol_X_train)):
    temp_tree = grid.best_estimator_.fit(smol_X_train[subset], smol_y_train[subset])
    tree_list.append(clone(temp_tree))
    pred = temp_tree.predict(X_test)
    accuracy = accuracy_score(y_test, pred)
    print(accuracy)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63664173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档