ageron / ageron/handson-ml2

Chapter 2 Analyze the Best Models and Their Errors

未关闭
#247 3 条评论 1 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Jupyter Notebook
星标
30k
派生
13.1k
PR 合并指标
30 天内没有已合并 PR

描述

To analyze the relative importance of each attribute for making accurate predictions, the book use the next code (with its output):

```pycon
>>> feature_importances = grid_search.best_estimator_.feature_importances_
>>> feature_importances
array([7.33442355e-02, 6.29090705e-02, 4.11437985e-02, 1.46726854e-02,
1.41064835e-02, 1.48742809e-02, 1.42575993e-02, 3.66158981e-01,
5.64191792e-02, 1.08792957e-01, 5.33510773e-02, 1.03114883e-02,
1.64780994e-01, 6.02803867e-05, 1.96041560e-03, 2.85647464e-03])
```

And to add their corresponding attribute names:

```pycon
>>> extra_attribs = ["rooms_per_hhold", "pop_per_hhold", "bedrooms_per_room"]
>>> cat_encoder = full_pipeline.named_transformers_["cat"]
>>> cat_one_hot_attribs = list(cat_encoder.categories_[0])_

>>> attributes = num_attribs + extra_attribs + cat_one_hot_attribs
>>> sorted(zip(feature_importances, attributes), reverse=True)
[(0.3661589806181342, 'median_income'),
(0.1647809935615905, 'INLAND'),
(0.10879295677551573, 'pop_per_hhold'),
(0.07334423551601242, 'longitude'),
(0.0629090704826203, 'latitude'),
(0.05641917918195401, 'rooms_per_hhold'),
(0.05335107734767581, 'bedrooms_per_room'),
(0.041143798478729635, 'housing_median_age'),
(0.014874280890402767, 'population'),
(0.014672685420543237, 'total_rooms'),
(0.014257599323407807, 'households'),
(0.014106483453584102, 'total_bedrooms'),
(0.010311488326303787, '<1H OCEAN'),
(0.002856474637320158, 'NEAR OCEAN'),
(0.00196041559947807, 'NEAR BAY'),
(6.028038672736599e-05, 'ISLAND')]
```

My question is: Why do I have to add `extra_attribs`? or How do I know that I must add this attributes?

I add the output without add `extra_attribs`

```pycon
>>> feature_importances=grid_search.best_estimator_.feature_importances_

>>> #extra_attribs = ["rooms_per_hhold", "pop_per_hhold", "bedrooms_per_room"]
>>> cat_encoder = full_pipeline.named_transformers_["cat"]
>>> cat_one_hot_attribs = list(cat_encoder.categories_[0])

>>> attributes = num_attribs + cat_one_hot_attribs #+ extra_attribs
>>> sorted(zip(feature_importances, attributes), reverse=True)

[(0.303268232301214, 'median_income'),
(0.1730639450304893, 'NEAR OCEAN'),
(0.10895862174634888, 'INLAND'),
(0.0844196144263057, 'ISLAND'),
(0.07557206707255014, 'longitude'),
(0.06398786252477989, 'latitude'),
(0.06315655490931624, '<1H OCEAN'),
(0.04240720593117474, 'housing_median_age'),
(0.01829282732311651, 'total_rooms'),
(0.017560189966804522, 'population'),
(0.01689244166020893, 'total_bedrooms'),
(0.01668817806453196, 'households'),
(0.008535150622100876, 'NEAR BAY')]
```

How do I know that is wrong? Because without `extra_attribs` I can not say _apparently only one `ocean_proximity` category is really useful, so you could try dropping the others_

Thanks for your time.

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。