I get the following error when running on windows 10 with python and trying to use the callbacks to change the number of leaves:
Traceback (most recent call last):
File "", line 53, in
callbacks=[lgb.reset_parameter(num_leaves=lambda iter: np.random.choice([10,20,30]))])
File "C:\Users\User\Anaconda3\lib\site-packages\lightgbm-0.1-py3.6.egg\lightgbm\engine.py", line 180, in train
booster.update(fobj=fobj)
File "C:\Users\User\Anaconda3\lib\site-packages\lightgbm-0.1-py3.6.egg\lightgbm\basic.py", line 1355, in update
ctypes.byref(is_finished)))
OSError: exception: access violation writing 0x000002B697046EA8
Here is code to repro the bug:
import lightgbm as lgb
import pandas as pd
import numpy as np
from sklearn.metrics import mean_squared_error
try:
import cPickle as pickle
except:
import pickle
load or create your dataset
print('Load data...')
df_train = pd.read_csv('binary.train', header=None, sep='\t')
df_test = pd.read_csv('binary.test', header=None, sep='\t')
y_train = df_train[0].values
y_test = df_test[0].values
X_train = df_train.drop(0, axis=1).values
X_test = df_test.drop(0, axis=1).values
num_train, num_feature = X_train.shape
create dataset for lightgbm
if you want to re-use data, remember to set free_raw_data=False
lgb_train = lgb.Dataset(X_train, y_train,
free_raw_data=False)
lgb_eval = lgb.Dataset(X_test, y_test, reference=lgb_train,
free_raw_data=False)
specify your configurations as a dict
params = {
'boosting_type': 'gbdt',
'objective': 'binary',
'metric': 'binary_logloss',
'num_leaves': 31,
'learning_rate': 0.05,
'feature_fraction': 0.9,
'bagging_fraction': 0.8,
'bagging_freq': 5,
'verbose': 0
}
feature_name = ['feature_' + str(col) for col in range(num_feature)]
print('Start training...')
feature_name and categorical_feature
gbm = lgb.train(params,
lgb_train,
num_boost_round=10,
valid_sets=lgb_train, # eval training data
feature_name=feature_name,
categorical_feature=[21],
callbacks=[lgb.reset_parameter(num_leaves=lambda iter: np.random.choice([10,20,30]))])
I get the following error when running on windows 10 with python and trying to use the callbacks to change the number of leaves:
Traceback (most recent call last):
File "", line 53, in
callbacks=[lgb.reset_parameter(num_leaves=lambda iter: np.random.choice([10,20,30]))])
File "C:\Users\User\Anaconda3\lib\site-packages\lightgbm-0.1-py3.6.egg\lightgbm\engine.py", line 180, in train
booster.update(fobj=fobj)
File "C:\Users\User\Anaconda3\lib\site-packages\lightgbm-0.1-py3.6.egg\lightgbm\basic.py", line 1355, in update
ctypes.byref(is_finished)))
OSError: exception: access violation writing 0x000002B697046EA8
Here is code to repro the bug:
import lightgbm as lgb
import pandas as pd
import numpy as np
from sklearn.metrics import mean_squared_error
try:
import cPickle as pickle
except:
import pickle
load or create your dataset
print('Load data...')
df_train = pd.read_csv('binary.train', header=None, sep='\t')
df_test = pd.read_csv('binary.test', header=None, sep='\t')
y_train = df_train[0].values
y_test = df_test[0].values
X_train = df_train.drop(0, axis=1).values
X_test = df_test.drop(0, axis=1).values
num_train, num_feature = X_train.shape
create dataset for lightgbm
if you want to re-use data, remember to set free_raw_data=False
lgb_train = lgb.Dataset(X_train, y_train,
free_raw_data=False)
lgb_eval = lgb.Dataset(X_test, y_test, reference=lgb_train,
free_raw_data=False)
specify your configurations as a dict
params = {
'boosting_type': 'gbdt',
'objective': 'binary',
'metric': 'binary_logloss',
'num_leaves': 31,
'learning_rate': 0.05,
'feature_fraction': 0.9,
'bagging_fraction': 0.8,
'bagging_freq': 5,
'verbose': 0
}
feature_name = ['feature_' + str(col) for col in range(num_feature)]
print('Start training...')
feature_name and categorical_feature
gbm = lgb.train(params,
lgb_train,
num_boost_round=10,
valid_sets=lgb_train, # eval training data
feature_name=feature_name,
categorical_feature=[21],
callbacks=[lgb.reset_parameter(num_leaves=lambda iter: np.random.choice([10,20,30]))])