- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我目前在使用 scikit 学习库中的 GridSearchCV 方法时遇到问题。我已经为此苦苦挣扎了一个星期,而且似乎还无法解决。当调用它来优化 C 参数上的线性 SVM 时,它会一直卡住。奇怪的是,它不仅在分配 n_jobs=-1 时发生,而且在分配 1 个 n_jobs 时也会发生,所以我不认为多处理是特别的问题。此外,当我给它一个 X 形状数组 (2448, 1024) 时它工作正常,但当我给它一个形状数组 (5202, 1024) 时它完全卡住。
我提供给它的数据: float64 numpy 形状数组,从 (2448, 1024) 到 (7956, 1024) 都可以正常工作
我已经尝试过的事情:
__name__ == '__main__'
block ,如 https://github.com/scikit-learn/scikit-learn/issues/2889#issuecomment-37311446 中的建议我无法按照 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/
当我在cross_val_score()中使用参数n_jobs时。 当我的数据规模较小时,它效果很好,但当我扩大数据规模时,多处理似乎不起作用。 怎么会这样? 附注:我使用 IPython 最佳答案
我正在运行一个代码来进行二进制分类并在之后预测标签。该代码与一个大小为 257673 行和 47 列的特定数据库完美运行。当我尝试使用 91690 行和 10 列之一(当然更小)时,我收到错误调用:
当我将 n_jobs 变量传递给 sklearn 中的 LinearRegression 时,我收到一个错误。 根据documentation它应该支持 n_jobs 变量。 我做错了吗? >>> s
这不是一个真正的问题,但我想了解: 在 Win7 4 核 8 GB 系统上从 Anaconda distrib 运行 sklearn 在 200.000 个样本*200 个值表上拟合 KMeans 模
我经常用 GridSearchCV 用于超参数调整。例如,用于调整正则化参数 C在 Logistic Regression .每当我使用的估算器有自己的 n_jobs参数我很困惑在哪里设置它,在估计器
我开发了一个 Python 脚本,它基本上读取 excel 文件并使用 sklearns GridSearchCV 训练模型,使用 n_jobs 语句: def create_table():
尝试通过 n_jobs 参数将 gridsearch CV 与多个作业一起使用,我可以使用 htop 看到它们都已启动并运行,但它们都卡在/分配在同一个核心上,每个使用 25%(我使用的是4核机)。我
def test_n_jobs_parallel(): # Test to check the functioning of n_jobs parameter. for kernel in k
我想知道,哪个更好地与 GridSearchCV( ..., n_jobs = ... ) 一起使用来为模型选择最佳参数集, n_jobs = -1 或 n_jobs 较大的数字, 如 n_jobs
有人使用 sklearn 类的“n_jobs”吗?我在 Anaconda 3.4 64 位中使用 sklearn。 Spyder 版本是 2.3.8。将某些 sklearn 类的“n_jobs”参数设
我目前在使用 scikit 学习库中的 GridSearchCV 方法时遇到问题。我已经为此苦苦挣扎了一个星期,而且似乎还无法解决。当调用它来优化 C 参数上的线性 SVM 时,它会一直卡住。奇怪的是
我一直在使用带有 4 个 NVIDIA GPU 的 Keras 框架来训练 NN 模型。 (数据行数:~160,000,列数:5)。现在我想通过使用 GridSearchCV 来优化它的参数。 但是,
感谢Philip Cloud的伟大answer to a previous question ,我深入研究了 scikit 中 pairwise_distances 的源代码。 相关部分是: def
我在 scikit learn 中编写了自定义转换器并构建了管道。现在我正在尝试使用 GridSearchCV 调整此管道。一切工作正常,直到我尝试设置 n_jobs=-1 来加速该过程。 GUI J
我设置了一个简单的实验来检查多核 CPU 在运行 sklearn GridSearchCV 和 KNeighborsClassifier 时的重要性。我得到的结果让我感到惊讶,我想知道我是否误解了多核
我正在尝试使用 GridSearchCV 来评估具有不同参数集的不同模型。逻辑回归和 k-NN 不会导致问题,但当 n_jobs=-1 时,决策树、随机森林和一些其他类型的分类器不起作用。 for c
我正在运行 GridSearchCV,其中基本估计器是 RandomForestRegressor。我发现在估计器和网格搜索之间拆分处理器会更有效,因此在机器的 24 个可用处理器中,我将 n_job
我陷入了“困境”。这是我的代码的结构: 行为类似于抽象类的基类 可以实例化的子类 一种设置参数并使用 n_jobs=-1 调用 RandomizedSearchCV 或 GridSearchCV 的方
我正在尝试使用 sklearn 的逻辑回归训练一个巨大的数据集。我已经设置了参数n_jobs=-1(也尝试过n_jobs = 5, 10, ...),但是当我打开htop时,我可以看到它仍然只使用一个
在 sklearn.model_selection.cross_val_score 中使用 n_jobs = -1 作为参数时出现错误。我是深度学习和 ANN 的初学者,根据 this 中的讲师在 k
我是一名优秀的程序员,十分优秀!