Python:Scikit Learn MLPClassifier 放入管道时出错

Posted

技术标签:

【中文标题】Python:Scikit Learn MLPClassifier 放入管道时出错【英文标题】:Python: Scikit Learn MLPClassifier error when putting in Pipeline 【发布时间】:2019-05-18 13:06:20 【问题描述】:

我在MLPClassifier 上使用OneVsRestClassifier。我用它来分类文本数据,其中Xpd.DataFrame 中的一组问题,Y 是多标签和多类字符串。请看下面的代码sn-ps

text_clf = Pipeline([('scale',StandardScaler(with_mean=False)),('clf',OneVsRestClassifier(MLPClassifier(learning_rate = 'adaptive', solver = 'lbfgs',random_state=9000)))])
parameters = 'clf__alpha':[10.0 ** ~ np.arange(1, 7).any()],'clf__hidden_layer_sizes': [(100,),(50,)],'clf__max_iter': [1000,500],'clf__activation':('relu','tanh')
grid = GridSearchCV(text_clf, parameters, cv=3, n_jobs=-1, scoring= 'accuracy') 
with parallel_backend('threading'):
    grid.fit(X,Y)

我收到以下错误

ValueError: Invalid parameter activation for estimator OneVsRestClassifier(estimator=MLPClassifier(activation='relu', alpha=0.0001, batch_size='auto', beta_1=0.9,
   beta_2=0.999, early_stopping=False, epsilon=1e-08,
   hidden_layer_sizes=(100,), learning_rate='adaptive',
   learning_rate_init=0.001, max_iter=200, momentum=0.9,
   n_iter_no_change=10, nesterovs_momentum=True, power_t=0.5,
   random_state=9000, shuffle=True, solver='lbfgs', tol=0.0001,
   validation_fraction=0.1, verbose=False, warm_start=False),
      n_jobs=None). Check the list of available parameters with `estimator.get_params().keys()`.

据我了解MLPClassifier 支持多标签分类。是不是说明parameters需要重新审核?如果是这样,那么任何机构都可以提供任何关于在parameters 中进行更改的线索吗?

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

您的 MLPClassifier 嵌套在 OneVsRestClassifier 作为其估算器。

换句话说,parameters 应指定所有 alphahidden_layer_sizes、... 用于嵌套估计器而不是 OneVsRestClassifier

像下面这样更改您的parameters 应该可以完成这项工作:

parameters = 'clf__estimator__alpha':[10.0 ** ~ np.arange(1,7).any()],
    'clf__estimator__hidden_layer_sizes': [(100,),(50,)],
    'clf__estimator__max_iter': [1000,500],
    'clf__estimator__activation':('relu','tanh')

【讨论】:

感谢 C.Kim。但是,它给用户一个警告UserWarning: Label not 42 is present in all training examples. str(classes[c]))。任何线索为什么会出现这样的警告? @pythondumb 从外观上看,grid.fitx 似乎有问题。也许***.com/questions/42821315/… 可以帮助你:) 非常感谢!!让我使用 Labelencoder 看看它是如何工作的

以上是关于Python:Scikit Learn MLPClassifier 放入管道时出错的主要内容,如果未能解决你的问题,请参考以下文章

树莓派上的 scikit-learn/python3

Python---scikit-learn(sklearn)模块

Python/Scikit-learn/regressions - 从 pandas Dataframes 到 Scikit 预测

scikit-learn( Macine Learning in Python )

python:pip命令更新库 例命令行更新scikit-learn

使用Python scikit-learn 库实现神经网络算法