gpt4 book ai didi

python - GridSearchCV 在任何 n_jobs 的窗口上卡住

转载 作者:可可西里 更新时间:2023-11-01 10:41:35 59 4
gpt4 key购买 nike

我目前在使用 scikit 学习库中的 GridSearchCV 方法时遇到问题。我已经为此苦苦挣扎了一个星期,而且似乎还无法解决。当调用它来优化 C 参数上的线性 SVM 时,它会一直卡住。奇怪的是,它不仅在分配 n_jobs=-1 时发生,而且在分配 1 个 n_jobs 时也会发生,所以我不认为多处理是特别的问题。此外,当我给它一个 X 形状数组 (2448, 1024) 时它工作正常,但当我给它一个形状数组 (5202, 1024) 时它完全卡住。

我提供给它的数据: float64 numpy 形状数组,从 (2448, 1024) 到 (7956, 1024) 都可以正常工作

我已经尝试过的事情:

我无法按照 https://github.com/dmlc/xgboost/issues/2163#issuecomment-314524070 中的建议运行以下代码因为我在 Windows 上运行我的代码。

from multiprocessing import pool, get_context
forkserver = get_context('forkserver')
p = forkserver.Pool()

注意事项:我用 f1 函数拟合它,而不是默认精度函数,这可能是一个问题,如这些线程所示:

下面是一些代码片段:

 from sklearn.externals.joblib import parallel_backend

scaler = StandardScaler()
X = scaler.fit_transform(fv_train.data) #traininig samples
y = fv_train.axes[0] #class labels
X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size = 0.1, train_size = 0.9)


clf = SVC(kernel = 'linear', probability=True)
scoring = ['f1']
C_range = np.linspace(start=1000, stop=10000, num=4, endpoint = True)
param_grid = dict(C = C_range)
grid = GridSearchCV(clf, param_grid = param_grid, scoring = scoring, cv = 3,
refit = 'f1', verbose = 42, n_jobs=-1, pre_dispatch=3)
with parallel_backend('threading'):
grid.fit(X_train, y_train)

最佳答案

尝试在 __name__ == '__main__' 中指定您的代码,从 Windows 命令行运行它,但不要使用 parallel_backend 语句。使用 n_jobs 指定 GridSearhCV 应该自行处理多处理。

clf = SVC(kernel = 'linear', probability=True)
scoring = ['f1']
param_grid = {'C': np.linspace(start=1000, stop=10000, num=4, endpoint = True)}
grid = GridSearchCV(clf, param_grid = param_grid, scoring = scoring, cv = 3,
refit = 'f1', verbose = 42, n_jobs=-1, pre_dispatch=3)
grid.fit(X_train, y_train)

打开您的 Windows 任务管理器,看看运行时发生了什么。查看您的 CPU 百分比、RAM 并查看 Windows 进程。通常你想看到的是你的 CPU 变得非常高,你应该在进程列表中看到几个名为 Python 的进程。它可能会卡住,因为您使用了完整的 CPU。

另一种可能性是 n_jobs 还没有为 f1 评分实现。您可以尝试在没有 n_jobs 语句的情况下运行您的代码,如下所示:

clf = SVC(kernel = 'linear', probability=True)
scoring = ['f1']
param_grid = {'C': np.linspace(start=1000, stop=10000, num=4, endpoint = True)}
grid = GridSearchCV(clf, param_grid = param_grid, scoring = scoring, cv = 3,
refit = 'f1', verbose = 42, pre_dispatch=3)
grid.fit(X_train, y_train)

关于python - GridSearchCV 在任何 n_jobs 的窗口上卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52684331/

59 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com