Scikit learn RandomizedSearchCV最佳参数每次运行此程序时都会更改
我想使用Scikit learn RandomizedSearchCV最佳参数每次运行此程序时都会更改,scikit-learn,Scikit Learn,我想使用LogisticRegression进行分类。因此,我使用RandomizedSearchCV在logisticsregression中选择最佳的C参数 我的问题是:为什么每次我运行这个程序时,best\u params\u都会改变?我假设最佳参数应该始终保持不变 代码如下: data = load_iris().data target = load_iris().target # DATA Split TrainData , TestData ,TrainTarget , Test
LogisticRegression
进行分类。因此,我使用RandomizedSearchCV
在logisticsregression
中选择最佳的C参数
我的问题是:为什么每次我运行这个程序时,best\u params\u
都会改变?我假设最佳参数
应该始终保持不变
代码如下:
data = load_iris().data
target = load_iris().target
# DATA Split
TrainData , TestData ,TrainTarget , TestTarget = train_test_split(data,target,test_size=0.25,random_state=0)
assert len(TrainData)==len(TrainTarget)
Skf = StratifiedKFold(n_splits=5)
#Model
LR = LogisticRegression(C=10,multi_class='multinomial',penalty='l2',solver='sag',max_iter=10000,random_state=0)
#Params selection with Cross Validation
params = {'C':np.random.randint(1,10,10)}
RS = RandomizedSearchCV(LR,params,return_train_score=True,error_score=0,random_state=0)
RS.fit(TrainData,TrainTarget)
Result = pd.DataFrame(RS.cv_results_)
print RS.best_params_
您正确地将random_状态设置为LogisticRegression和RandomizedSearchCV。但是还有一个来源可以改变列车测试数据,那就是使用
np.random
生成params
。这在每次运行时都会更改
要控制此行为,可以将numpy.random.seed()
设置为您选择的整数。在您的代码上有类似的内容:
np.random.seed(0)
注意:这样做还将为所有scikit模块设置种子,因为scikit内部使用此选项。因此,在这种情况下,您可能不需要到处设置随机_状态,但不建议这样做
看到这个答案了吗
您可能还需要检查这些资源:
np.random
生成params
。这在每次运行时都会更改
要控制此行为,可以将numpy.random.seed()
设置为您选择的整数。在您的代码上有类似的内容:
np.random.seed(0)
注意:这样做还将为所有scikit模块设置种子,因为scikit内部使用此选项。因此,在这种情况下,您可能不需要到处设置随机_状态,但不建议这样做
看到这个答案了吗
您可能还需要检查这些资源: