官术网_书友最值得收藏!

Tuning hyperparameters

The simplest way to simplify the decision tree is to limit its depth. How deep is it now? You can see 20 splits, or 21 layers, in Figure 2.5. At the same time, we have only three features. There are six of them actually, if we are taking into account one-hot encoded categorical color. Let's limit the maximum depth of the tree aggressively to be comparable with the number of features. tree_model object has a max_depth property, and so we're setting it to be less than the number of features:

In []: 
tree_model.max_depth = 4 

After these manipulations, we can retrain our model and reevaluate its accuracy:

In []: 
tree_model = tree_model.fit(X_train, y_train) 
tree_model.score(X_train, y_train) 
Out[]: 
0.90571428571428569 

Note that accuracy on training is now set less by about 6%. How about test set?

In []: 
tree_model.score(X_test, y_test) 
Out[]: 
0.92000000000000004 

Accuracy on previously unseen data is now higher, by about 4%. This doesn't look like a great achievement, until you realize that it's an additional 40 correctly classified creatures from our initial set of 1,000. In modern machine learning contests, the final difference between 1st and 100th place can easily be about 1%.

Let's draw a tree structure after pruning. Code for this visualization is the same as before:

Figure 2.7: Tree structure after limiting its depth
主站蜘蛛池模板: 什邡市| 万全县| 宜昌市| 吕梁市| 二连浩特市| 贵州省| 虹口区| 延安市| 都匀市| 手机| 富民县| 鄂伦春自治旗| 信丰县| 江西省| 潍坊市| 宿松县| 集贤县| 洪江市| 龙门县| 鄯善县| 台北县| 白水县| 霍山县| 乡城县| 仪征市| 泽州县| 浮梁县| 肃北| 乌海市| 玉树县| 河池市| 阿拉尔市| 黎城县| 光泽县| 喀喇沁旗| 积石山| 临海市| 旌德县| 军事| 收藏| 安国市|