我正在研究 Kaggle Titanic 数据集。我正在尝试使用 LightGBM 的 LGBMClassifier 来确定给定乘客是否幸存。我已经创建了一个用于填充和处理所有数据的管道,并且正在尝试使用 BayesSearchCV 来优化我的 LightGBM 超参数。我在使用 BayesSearchCV 时收到以下错误:
“TypeError:'版本'和'元组'的实例之间不支持'<'”
我不知道为什么会出现这个错误,因为我可以将我创建的管道拟合到数据中,并且它可以与 Sklearn 的 GridSearchCV 一起使用,所以我不知道这是 BayesSearchCV 的问题还是只是我的问题。我已经将我的管道和运行错误的代码放在下面,并在错误发生的位置标记。
target = 'survived'
categorical_features = ['sex',
#'ticket',
#'cabin',
'embarked']
numeric_features = ['pclass',
'age',
'sibsp',
'parch',
'fare']
train, test = train_test_split(df,test_size=0.20)
numerical_pipe = Pipeline([('imputer', SimpleImputer(strategy = 'mean'))])
categorical_pipe = Pipeline([('imputer', SimpleImputer(strategy = 'constant', fill_value = 'missing')),
('onehot', OneHotEncoder(handle_unknown = 'ignore'))])
preprocessing = ColumnTransformer(transformers = [
('cat', categorical_pipe, categorical_features),
('num', numerical_pipe, numeric_features)])
lgb_pipe = Pipeline([
('preprocess', preprocessing),
('classifier', LGBMClassifier())])
search_space_lgb = {'num_leaves': Integer(1, 500),
'max_depth': Integer(1, 500)}
bayes_search_lgb = BayesSearchCV(lgb_pipe,
search_space_lgb)
bs_lgb = bayes_search_lgb.fit(train[numeric_features + categorical_features],
train[target]) #ERROR HERE
print(bs_lgb.best_params_)
这是错误的一个额外部分,我认为这有助于确定究竟是什么错误。
/Applications/anaconda3/lib/python3.7/site-packages/skopt/space/space.py in rvs(self, n_samples, random_state)
762
763 for dim in self.dimensions:
--> 764 if sp_version < (0, 16):
765 columns.append(dim.rvs(n_samples=n_samples))
766 else:
发现另一个与我有相同错误的stackoverflow(`scikit-optimize`包中的TypeError)但没有一个解决方案适合我。