Hyperparameters={'max_depth':np.arange(1,100,1)}
dectree= tree.DecisionTreeClassifier()
cv_grid = GridSearchCV(estimator= dectree ,param_grid = Hyperparameters, scoring ='accuracy',cv = 10)
cv_grid= cv_grid.fit(X_train, y_train)
cv_grid.best_params_发布于 2020-05-14 11:45:10
这是因为决策树算法具有随机性。来自决策树文档
即使拆分器被设置为“最佳”,每次拆分时都会随机排列这些特性。但是,即使是
max_features=n_features,最佳发现的分割可能因不同的运行而有所不同。既然如此,如果标准的改进对于几个分裂是相同的,并且必须随机选择一个分裂。
所以,随机性是正常的。如果希望采用确定性方法,请设置random_state参数(即指定种子),每次都会得到相同的结果。下面是一个例子:
from sklearn.model_selection import GridSearchCV
import numpy as np
from sklearn import tree
X_train = np.random.rand(100, 10)
y_train = np.random.randint(0, 3, 100)
for i in range(10):
Hyperparameters={'max_depth':np.arange(1,100,1)}
dectree= tree.DecisionTreeClassifier(random_state=42)
cv_grid = GridSearchCV(estimator= dectree ,param_grid = Hyperparameters,
scoring ='accuracy',cv = 5)
cv_grid= cv_grid.fit(X_train, y_train)
print(cv_grid.best_params_){'max_depth': 4}
{'max_depth': 4}
{'max_depth': 4}
{'max_depth': 4}
{'max_depth': 4}当我使用参数在没有的情况下测试运行random_state时,我得到了以下内容:
{'max_depth': 5}
{'max_depth': 65}
{'max_depth': 59}
{'max_depth': 5}
{'max_depth': 93}https://stackoverflow.com/questions/61796181
复制相似问题