首先:文中有废话,有缺失是必然的,大家听我bb几分钟,不如看看
- 官方文档
比如我们现在有一颗决策树了,我们看了看模型得分,嚯,太磕碜了
必须得作出一些改变了
这里的调参指调超参,
一般参数,是拟合出一个模型后,比如说用回归树,拟合出一条一次直线,有了几个斜率和一个截距,这是参数
超参是参数的参数,比如得出这条直线用到的:树的最大深度、节点拆分策略是随机拆分呀还是最佳拆分这些
dtm = DecisionTreeRegressor(max_depth=4,
min_samples_split=5,
max_leaf_nodes=10)
dtm.fit(X,y)
dtm.fit(X_test,y_test)
print("R-Squared on train dataset={}".format(dtm.score(X_test,y_test)))
print("R-Squaredon test dataset={}".format(dtm.score(X_test,y_test)))
怎么改变呢,如果动手能力强,可以写点for循环,让他慢慢跑
当然sklearn也有现成的包可以调
那就优雅地调包吧
from sklearn.metrics import make_scorer
from sklearn.model_selection import GridSearchCV
clf = DecisionTreeClassifier(random_state=42)
# TODO: Create the parameters list you wish to tune.
parameters = {'max_depth':[2,4,6,8,10],
'min_samples_leaf':[2,4,6,8,10],
'min_samples_split':[2,4,6,8,10]}
# TODO: Make an fbeta_score scoring object.
scorer = make_scorer(f1_score)
# TODO: Perform grid search on the classifier using 'scorer' as the scoring method.
grid_obj = GridSearchCV(clf, parameters, scoring=scorer)
# TODO: Fit the grid search object to the training data and find the optimal parameters.
best_clf= grid_obj.fit(X_train, y_train)
# Let's also explore what parameters ended up being used in the new model.
best_clf
>>> Best Hyperparameters::
{'criterion': 'mse', 'max_depth': 8, 'max_leaf_nodes': 100,
'min_samples_leaf': 20, 'min_samples_split': 10}



