首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >和XGBClassifier的得分完全相同。

和XGBClassifier的得分完全相同。
EN

Stack Overflow用户
提问于 2019-12-16 11:19:33
回答 1查看 99关注 0票数 0

问:你能帮我理解为什么RandomForestClassifier和XGBClassifier的分数完全相同吗?

背景:我正在研究卡格尔-泰坦尼克号的问题,在我的第一次尝试中,我想比较一些常见的模型。

代码:

代码语言:javascript
复制
pipeline = make_pipeline(SimpleImputer(strategy='most_frequent'), OneHotEncoder())
preprocessor = make_column_transformer(
    (pipeline, ['Embarked']),
    (OneHotEncoder(), ['Sex']),
    #(OrdinalEncoder(), ['Cabin'])
)

models = [
    RandomForestClassifier(n_estimators=1, random_state=42),
    XGBClassifier(random_state=42, n_estimators=100, max_depth=42),
    SGDClassifier()
]

my_pipelines = []
for model in models:
    my_pipelines.append(Pipeline(steps=[('preprocessor', preprocessor),
                              ('model', model)
                             ]))

for idx, pipeline in enumerate(my_pipelines):
    pipeline.fit(X_train, y_train)
    pred = pipeline.predict(X_valid)
    print(accuracy_score(y_valid, pred))

输出:

代码语言:javascript
复制
0.770949720670391
0.770949720670391
0.6312849162011173

非常感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-16 15:58:00

这是事实,这两种算法都是基于树的。但是,您可以看到在RandomForestClassifier中只有一棵树,所以在使用梯度增强算法时,您实际上是一个DecisionTreeClassifier。人们可以期望得到不同的结果。

因此,使性能相等的唯一东西实际上是您的数据。你只有两个特征,而且是分类特征。因此,使用这些数据,您无法学习复杂的模型。所有的树都应该是一样的。您可以检查树中的节点数(例如,my_pipelines[0][-1].estimators_[0].tree_.node_count;我只有11个节点)。

添加两个额外的数字特征(例如票价和年龄),您将看到树可以进一步找到更多的规则,然后性能将发生变化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59355590

复制
相关文章

相似问题

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