Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为randomforest分类器运行任何BayesSearchCV函数时出错_Python_Numpy_Machine Learning_Scikit Learn_Scikit Optimize - Fatal编程技术网

Python 为randomforest分类器运行任何BayesSearchCV函数时出错

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

我尝试使用RF分类器,但每次尝试运行bayessearchCV函数时,都会返回一个错误。附件是我的具体例子和一个例子,你可以运行和复制。 我怀疑这可能是由于train_test_split函数造成的,但我不完全确定如何对其进行分类。请让我知道,如果我的代码中有任何明显错误

我目前正在使用最新版本的sklearn/skopt/numpy等

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