machine-learning - 在 Ubuntu 18.04 中优化时 TPOT 冻结
问题描述
我已经开始使用 tpot 和 dask。但优化总是冻结在 0%。我已经尝试了几乎所有建议的解决方案。但仍然没有运气。这是我的代码 -
import numpy as np
import multiprocessing
import csv
import tpot
from dask.distributed import Client
from sklearn.model_selection import train_test_split
target = list(csv.reader(open('target.csv')))
target_n = []
for i in range(len(target)):
target_n.append(int(target[i][0]))
data = list(csv.reader(open('data.csv')))
data_n = []
for i in range(len(data)):
tmp=[]
for j in range(len(data[i])):
tmp.append(np.longdouble(data[i][j]))
data_n.append(tmp)
data_array = np.asarray(data_n)
data_array = np.where(data_array < np.finfo(np.float64).max , data_array,np.finfo(np.float64).max)
data_array = data_array.clip(min=0)
X_train, X_test, y_train, y_test = train_test_split(data_array, target_array, train_size=0.75, test_size=0.25)
tp = tpot.TPOTClassifier(generations=5, config_dict = 'TPOT light', population_size=10, cv = 5, random_state = 0, verbosity=3, use_dask=True, max_eval_time_mins=0.04, n_jobs = 20)
tp.fit(X_train, y_train)
print(tpot.score(X_test, y_test))
任何形式的建议将不胜感激。顺便说一下,我的数据大小约为 85MB
解决方案
几件事,如果这仍然是一个问题?:
假设您使用重要的硬件,因为您使用的是 dask 和 n_jobs=20。
我的猜测是您的世代和人口规模太小而无法在这么多工人之间进行并行处理,因此太小的工作负载正在被拆分。
使用多个 n_jobs 时,您可能还需要一条用于多处理的行。请参阅此处的崩溃冻结标题。
本质上,进行开发测试很棘手,但 TPOT 建议从内存中至少使用 60 的人口规模进行测试。
如果这仍然是一个问题,请发布您的错误消息。
推荐阅读
- ios - SwiftUI:更改弹出箭头颜色
- c# - 如何在 EntityFramework 中按相关实体排序
- gitlab - 我有一个 GitLab 自托管运行,但前端如何工作?
- python - 如何使用“conda list”输出 txt 安装 conda 包
- symfony4 - 如果在 Symfony 4 中被后台进程调用,Twig 在服务中渲染找不到 CSS
- javascript - 方法 zoomToMapObject(ev.target) 不会在 amCharts 中缩放到美国
- android - android上freetype2生成的位图,文字会重复,怎么解决
- python - 如何使用numpy在零之间形成一个交叉模式
- sql - 连接列并添加数字 postgresql
- r - R:如何在每个格子 xyplot 中设置两个标题(主标题和副标题)?