scikit learn如何实现输出层

  1. 在scikit learn中,输出层有多少个神经元?根据这里的说明,你只能指定隐藏层的尺寸和其中的神经元数量,而没有关于输出层的任何信息,因此我不知道scikit learn是如何实现输出层的。
  2. 对于只有一个神经元的输出层,使用softmax激活函数是否合理?

回答:

测试:

设置:

In [227]: %pasteclf = MLPClassifier()m = 10**3n = 64df = pd.DataFrame(np.random.randint(100, size=(m, n))).add_prefix('x') \       .assign(y=np.random.choice([-1,1], m))X_train, X_test, y_train, y_test = \    train_test_split(df.drop('y',1), df['y'], test_size=0.2, random_state=33)clf.fit(X_train, y_train)## -- End pasted text --Out[227]: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='constant',       learning_rate_init=0.001, max_iter=200, momentum=0.9,       nesterovs_momentum=True, power_t=0.5, random_state=None,       shuffle=True, solver='adam', tol=0.0001, validation_fraction=0.1,       verbose=False, warm_start=False)

输出数量:

In [229]: clf.n_outputs_Out[229]: 1

层数:

In [228]: clf.n_layers_Out[228]: 3

求解器运行的迭代次数:

In [230]: clf.n_iter_Out[230]: 60

以下是源代码的摘录,展示了如何为输出层选择激活函数:

    # 回归的输出    if not is_classifier(self):        self.out_activation_ = 'identity'    # 多类别的输出    elif self._label_binarizer.y_type_ == 'multiclass':        self.out_activation_ = 'softmax'    # 二分类和多标签的输出    else:        self.out_activation_ = 'logistic'

更新: MLPClassifier会以一对多的方式内部二值化标签,因此逻辑回归也适用于不同于[0,1]的标签:

    if not incremental:        self._label_binarizer = LabelBinarizer()        self._label_binarizer.fit(y)        self.classes_ = self._label_binarizer.classes_

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注