Python 如何使用GridSearchCV通过列车测试分割策略调整参数?

Python 如何使用GridSearchCV通过列车测试分割策略调整参数?,python,scikit-learn,train-test-split,gridsearchcv,Python,Scikit Learn,Train Test Split,Gridsearchcv,我正在尝试使用train_test_split策略微调我的sklearn模型。我知道的能力,执行参数调整,但是,它是绑定到使用交叉验证策略,我想使用训练测试分割策略的参数搜索,因为训练的速度是重要的,我的情况下,我更喜欢简单的交叉验证 我可以尝试编写自己的for循环,但如果不利用GridSearchCV中使用的内置并行化,则效率低下 有人知道如何利用这个机会吗?或者提供一个不太慢的替代方案。是的,您可以使用它 ShuffleSplit是一种交叉验证策略,类似于KFold,但与必须训练K模型的KF

我正在尝试使用train_test_split策略微调我的sklearn模型。我知道的能力,执行参数调整,但是,它是绑定到使用交叉验证策略,我想使用训练测试分割策略的参数搜索,因为训练的速度是重要的,我的情况下,我更喜欢简单的交叉验证

我可以尝试编写自己的for循环,但如果不利用GridSearchCV中使用的内置并行化,则效率低下

有人知道如何利用这个机会吗?或者提供一个不太慢的替代方案。

是的,您可以使用它

ShuffleSplit是一种交叉验证策略,类似于
KFold
,但与必须训练
K
模型的
KFold
不同,在这里,您可以控制训练/测试拆分的次数,即使您愿意,也可以控制一次

shuffle_split = ShuffleSplit(n_splits=1,test_size=.25)
n_分割
定义重复此分割和训练例程的次数。 现在您可以这样使用它:

GridSearchCV(clf,param_grid={},cv=shuffle_split)
是的,你可以用这个

ShuffleSplit是一种交叉验证策略,类似于
KFold
,但与必须训练
K
模型的
KFold
不同,在这里,您可以控制训练/测试拆分的次数,即使您愿意,也可以控制一次

shuffle_split = ShuffleSplit(n_splits=1,test_size=.25)
n_分割
定义重复此分割和训练例程的次数。 现在您可以这样使用它:

GridSearchCV(clf,param_grid={},cv=shuffle_split)

我想通过提供一个代码示例来补充Shihab Shahriar的内容

import pandas as pd
from sklearn import datasets
from sklearn.model_selection import GridSearchCV, ShuffleSplit
from sklearn.ensemble import RandomForestClassifier

# Load iris dataset
iris = datasets.load_iris()

# Prepare X and y as dataframe
X = pd.DataFrame(data=iris.data, columns=iris.feature_names)
y = pd.DataFrame(data=iris.target, columns=['Species'])

# Train test split
shuffle_split = ShuffleSplit(n_splits=1, test_size=0.3)
# This is equivalent to: 
#   X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
# But, it is usable for GridSearchCV

# GridSearch without CV
params = { 'n_estimators': [16, 32] }
clf = RandomForestClassifier()
grid_search = GridSearchCV(clf, param_grid=params, cv=shuffle_split)
grid_search.fit(X, y)

这将帮助任何面临类似问题的人。

我想通过提供一个代码示例来补充Shihab Shahriar的内容

import pandas as pd
from sklearn import datasets
from sklearn.model_selection import GridSearchCV, ShuffleSplit
from sklearn.ensemble import RandomForestClassifier

# Load iris dataset
iris = datasets.load_iris()

# Prepare X and y as dataframe
X = pd.DataFrame(data=iris.data, columns=iris.feature_names)
y = pd.DataFrame(data=iris.target, columns=['Species'])

# Train test split
shuffle_split = ShuffleSplit(n_splits=1, test_size=0.3)
# This is equivalent to: 
#   X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
# But, it is usable for GridSearchCV

# GridSearch without CV
params = { 'n_estimators': [16, 32] }
clf = RandomForestClassifier()
grid_search = GridSearchCV(clf, param_grid=params, cv=shuffle_split)
grid_search.fit(X, y)
这将有助于任何面临类似问题的人