在 scikit-learn 的 MLPClassifier 中设置输出节点的数量

Setting the number of output nodes in scikit-learn's MLPClassifier

我目前正在试验 scikit-learn 的神经网络功能。有没有办法在其 MLPClassifier 中设置输出节点的数量?我知道您可以通过将其作为参数传递来设置隐藏层的数量,例如:

clf = MLPClassifier(hidden_layer_sizes=(100,)

谢谢

输出节点的数量取决于标签的大小。

User Guide for Neural Networks的例子:

>>> from sklearn.neural_network import MLPClassifier
>>> X = [[0., 0.], [1., 1.]]
>>> y = [[0, 1], [1, 1]]
>>> clf = MLPClassifier(solver='lbfgs', alpha=1e-5,
...                     hidden_layer_sizes=(15,), random_state=1)
>>> clf.fit(X, y)                         
>>> clf.predict([[1., 2.]])
array([[1, 1]])

sklearn中输入层、隐藏层和输出层的架构和单元描述如下:

  • 输入单元的数量将是特征的数量(一般+1节点用于偏置)
  • 对于多类分类,输出单元的数量将是标签的数量
  • 先尝试单个隐藏层
  • 一个隐藏层的单元越多越好,尽量和输入特征的个数一样。

关于隐藏层的一些通用规则如下基于本文:Approximating Number of Hidden layer neurons in Multiple Hidden Layer BPNN Architecture by Saurabh Karsoliya.

总的来说:

  • 隐藏层神经元的数量是输入层大小的 2/3(或 70% 到 90%)。
  • 隐藏层神经元数应为输入层神经元数的less than twice
  • 隐藏层神经元的大小为between输入层大小和输出层大小。

请始终牢记,您需要探索和尝试许多不同的组合。此外,使用 GridSearch 您可以找到 "best model and parameters"。例如。您可以执行 GridSearch 以确定隐藏层的 "best" 大小。