Python 为randomforest分类器运行任何BayesSearchCV函数时出错
我尝试使用RF分类器,但每次尝试运行bayessearchCV函数时,都会返回一个错误。附件是我的具体例子和一个例子,你可以运行和复制。 我怀疑这可能是由于train_test_split函数造成的,但我不完全确定如何对其进行分类。请让我知道,如果我的代码中有任何明显错误 我目前正在使用最新版本的sklearn/skopt/numpy等Python 为randomforest分类器运行任何BayesSearchCV函数时出错,python,numpy,machine-learning,scikit-learn,scikit-optimize,Python,Numpy,Machine Learning,Scikit Learn,Scikit Optimize,我尝试使用RF分类器,但每次尝试运行bayessearchCV函数时,都会返回一个错误。附件是我的具体例子和一个例子,你可以运行和复制。 我怀疑这可能是由于train_test_split函数造成的,但我不完全确定如何对其进行分类。请让我知道,如果我的代码中有任何明显错误 我目前正在使用最新版本的sklearn/skopt/numpy等 import numpy as np import pandas as pd from sklearn import preprocessing from ma
import numpy as np
import pandas as pd
from sklearn import preprocessing
from matplotlib import pyplot as plt
import xgboost as xgb
import sklearn
from sklearn.linear_model import LogisticRegression
from sklearn.linear_model import ElasticNet
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.metrics import roc_auc_score
from skopt import BayesSearchCV
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
opt = BayesSearchCV(
RandomForestClassifier(random_state=42),
{
'n_estimators': (5,5000),
'max_features': ['auto','sqrt'],
'max_depth': (2,90),
'min_samples_split': (2,10),
'min_samples_leaf': (1,7),
'bootstrap': ["True","False"]
},
n_iter=32,
cv=3,
scoring='roc_auc'
)
opt.fit(full_train, full_y_train)
print("val. score: %s" % opt.best_score_)
print("test score: %s" % opt.score(X_test_red, y_test))
错误
这与我机器上的第一个示例产生的错误相同。事实证明,目前只有使用sklearn 0.23.0中的解决方法才能解决此问题
from numpy.ma import MaskedArray
import sklearn.utils.fixes
sklearn.utils.fixes.MaskedArray = MaskedArray
import skopt
然后从那里运行代码。在我的情况下,我无法使用conda安装较旧版本的scikit learn,因此在其中一个更新软件包之前,我运气不佳。sklearn>=0.23.0的问题已在skopt版本0.8.1中修复。
您能编辑您的问题以打印scikit learn、skopt和numpy版本吗?@MiguelTrejo结果是:sklearn:0.23.1和numpy:1.19.1
from skopt import BayesSearchCV
from sklearn.datasets import load_digits
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
X, y = load_digits(10, True)
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.75, test_size=.25, random_state=0)
# log-uniform: understand as search over p = exp(x) by varying x
opt = BayesSearchCV(
SVC(),
{
'C': (1e-6, 1e+6, 'log-uniform'),
'gamma': (1e-6, 1e+1, 'log-uniform'),
'degree': (1, 8), # integer valued parameter
'kernel': ['linear', 'poly', 'rbf'], # categorical parameter
},
n_iter=32,
cv=3
)
opt.fit(X_train, y_train)
print("val. score: %s" % opt.best_score_)
print("test score: %s" % opt.score(X_test, y_test))
from numpy.ma import MaskedArray
import sklearn.utils.fixes
sklearn.utils.fixes.MaskedArray = MaskedArray
import skopt