- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要使用我的模型在 python 中批量和并行地进行预测。如果我加载模型并在常规 for 循环中创建数据框并使用 predict 函数,它就没有问题。如果我在 python 中使用 multiprocessing 并行创建不相交的数据帧,然后使用 predict 函数 for 循环无限期卡住。为什么会出现这种行为?
这是我的代码片段:
with open('models/model_test.pkl', 'rb') as fin:
pkl_bst = pickle.load(fin)
def predict_generator(X):
df = X
print(df.head())
df = (df.groupby(['user_id']).recommender_items.apply(flat_map)
.reset_index().drop('level_1', axis=1))
df.columns = ['user_id', 'product_id']
print('Merge Data')
user_lookup = pd.read_csv('data/user_lookup.csv')
product_lookup = pd.read_csv('data/product_lookup.csv')
product_map = dict(zip(product_lookup.product_id, product_lookup.name))
print(user_lookup.head())
df = pd.merge(df, user_lookup, on=['user_id'])
df = pd.merge(df, product_lookup, on=['product_id'])
df = df.sort_values(['user_id', 'product_id'])
users = df.user_id.values
items = df.product_id.values
df.drop(['user_id', 'product_id'], axis=1, inplace=True)
print('Prediction Step')
prediction = pkl_bst.predict(df, num_iteration=pkl_bst.best_iteration)
print('Prediction Complete')
validation = pd.DataFrame(zip(users, items, prediction),
columns=['user', 'item', 'prediction'])
validation['name'] = (validation.item
.apply(lambda x: get_mapping(x, product_map)))
validation = pd.DataFrame(zip(validation.user,
zip(validation.name,
validation.prediction)),
columns=['user', 'prediction'])
print(validation.head())
def get_items(x):
sorted_list = sorted(list(x), key=lambda i: i[1], reverse=True)[:20]
sorted_list = random.sample(sorted_list, 10)
return [k for k, _ in sorted_list]
relevance = validation.groupby('user').prediction.apply(get_items)
return relevance.reset_index()
results = []
for d in df_list_sub:
r = predict_generator(d)
results.append(r)
from multiprocessing import Pool
import tqdm
pool = Pool(processes=8)
results = []
for x in tqdm.tqdm(pool.imap_unordered(predict_generator, df_list_sub), total=len(df_list_sub)):
results.append(x)
pass
pool.close()
pool.join()
最佳答案
我自己也偶然发现了这一点。这是因为 LightGBM 只允许从单个进程访问 predict 函数。开发人员明确添加了此逻辑,因为从多个进程调用预测函数没有意义,因为预测函数已经使用了所有可用的 CPU。除此之外,允许多进程预测可能会导致更差的性能。更多信息可以在 this GitHub issue 中找到。 .
关于python-2.7 - 加载 lightgbm 模型并使用 predict 与并行 for 循环卡住(Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46718509/
添加我自己的自定义损失函数时应该更改哪些文件?我知道我可以在 ObjectiveFunction 中添加我的目标和梯度/hessian 计算,只是想知道是否还有其他我需要做的事情,或者自定义损失函数是
我正在使用 LightGBM 并希望使用平均准确率召回作为指标。 我尝试定义 feval: cv_result = lgb.cv(params=params, train_set=lgb_train,
我正在使用交叉验证来训练模型,如下所示: classifier = lgb.Booster( params=params, train_set=lgb_train_set, ) res
我正在尝试在 Macbook 上训练一个简单的 LightGBM 模型,但即使将 verbose 参数设置为 1(甚至大于 1),它也不会打印任何日志 param = {'num_leaves':50
我在使用 Optuna 调整我的模型时遇到警告。请告诉我如何抑制这些警告? [LightGBM] [Warning] feature_fraction is set=0.2, colsample_by
LightGBM plot_tree 方法中的数字代表什么?例如,我使用了 Pima Indian Diabettes 数据集,然后使用 plot_tree 方法生成以下结果: 叶子节点上的数字代表什
我正在尝试使用 python 中的多进程池来训练完全独立的任务,其中 lightgbm 用于训练(我不确定这是否与问题相关)。这是代码 from sklearn.datasets import loa
在我的数据中,大约有 70 个类,我使用 lightGBM 来预测正确的类标签。 在 R 中,希望有一个自定义的“度量”函数,我可以在其中评估 lightgbm 的前 3 个预测是否涵盖真实标签。 链
我正在处理 LightGbm(Scikit-learn API)中的二进制分类问题,并且在理解如何包含样本权重时遇到问题。我的代码目前看起来像这样 classifier = LGBMClassifie
我使用多种算法训练了一个模型,包括来自 skicit-learn 的随机森林和 LightGBM。这些模型在准确性和其他统计数据方面表现相似。 问题在于这两种算法在特征重要性方面的行为不一致。我使用了
当我使用 lightgbm 进行网格搜索时,我遇到了麻烦。 lgb_classifer = lgb.LGBMRegressor(random_state=12) grid_lgb = { 'l
任何人都可以分享一个关于如何使用 lightgbm 训练排名模型的数据的最小示例吗?最好使用 Scikit-Lean api?我正在努力解决的是如何传递标签数据。我的数据是页面展示次数,如下所示: X
我正在使用 lightgbm 执行机器学习任务。 我想使用提前停止来找到给定多个超参数的最佳树数。然而,lgbm 停止种树,同时仍在改进我的评估指标。 下面我附上了我的规范: params = { '
我正在使用 lightgbm 执行机器学习任务。 我想使用提前停止来找到给定多个超参数的最佳树数。然而,lgbm 停止种树,同时仍在改进我的评估指标。 下面我附上了我的规范: params = { '
我有一个关于 lgb 的问题。当我写的时候 lgb.train(.......) 它在不到毫秒的时间内完成。 (对于 (10 000,25) )形状数据集。 当我编写预测时,所有输出变量都具有相同的值
LightGBM 支持分类变量。我想知道它是如何编码的。它似乎不是一种热编码,因为该算法非常快(我尝试使用花费大量时间进行一种热编码的数据)。 最佳答案 https://github.com/Micr
无法理解 LightGBM(Windows 平台)发生了什么。以前我的这个算法确实很强大,但是现在他的性能太差了。 为了比较(每个算法中的默认参数)LightGBM 根据简单的 DIFF-metric
我们应该如何使用 lightgbm.cv 的字典输出来改进我们的预测? 这是一个示例 - 我们使用以下代码训练我们的 cv 模型: cv_mod = lgb.cv(params,
我在寻找最佳 auc 的 lightgbm 建模中遇到错误。任何帮助将不胜感激。 import optuna from sklearn.model_selection import Stratifi
我使用训练 API 在 LightGBM 中运行二元分类,并希望停止在自定义指标上,同时仍跟踪一个或多个内置指标。不过,尚不清楚这是否可行。 在这里我们可以禁用默认的 binary_logloss 指
我是一名优秀的程序员,十分优秀!