首页 > 解决方案 > 在 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

标签: machine-learningpythondataset

解决方案


几件事,如果这仍然是一个问题?:

假设您使用重要的硬件,因为您使用的是 dask 和 n_jobs=20。

我的猜测是您的世代和人口规模太小而无法在这么多工人之间进行并行处理,因此太小的工作负载正在被拆分。

使用多个 n_jobs 时,您可能还需要一条用于多处理的行。请参阅此处的崩溃冻结标题。

本质上,进行开发测试很棘手,但 TPOT 建议从内存中至少使用 60 的人口规模进行测试。

如果这仍然是一个问题,请发布您的错误消息。


推荐阅读