我目前正在研究一个问题,该问题比较了同一数据集上三种不同的机器学习算法性能.我将数据集划分为70/30个训练/测试集,然后使用GridSearchCV和网格搜索每个算法的最佳参数X_train, y_train
.
第一个问题,我想在训练集上进行网格搜索还是假设在整个数据集上?
第二个问题,我知道GridSearchCV在其实现中使用了K-fold,这是否意味着如果我X_train, y_train
在GridSearchCV中比较的所有三种算法都使用了相同的交叉验证?
任何答案都将不胜感激,谢谢.
python machine-learning scikit-learn cross-validation grid-search
我正在关注Kaggle的一个内核,主要是,我正在关注信用卡欺诈检测的内核.
我到达了需要执行KFold的步骤,以便找到Logistic回归的最佳参数.
以下代码显示在内核本身,但由于某种原因(可能是旧版本的scikit-learn,给我一些错误).
def printing_Kfold_scores(x_train_data,y_train_data):
fold = KFold(len(y_train_data),5,shuffle=False)
# Different C parameters
c_param_range = [0.01,0.1,1,10,100]
results_table = pd.DataFrame(index = range(len(c_param_range),2), columns = ['C_parameter','Mean recall score'])
results_table['C_parameter'] = c_param_range
# the k-fold will give 2 lists: train_indices = indices[0], test_indices = indices[1]
j = 0
for c_param in c_param_range:
print('-------------------------------------------')
print('C parameter: ', c_param)
print('-------------------------------------------')
print('')
recall_accs = []
for iteration, indices in enumerate(fold,start=1):
# Call the logistic regression model with a certain C parameter
lr = …
Run Code Online (Sandbox Code Playgroud)