【问题标题】:neural network with multiple outputs in sklearnsklearn中具有多个输出的神经网络
【发布时间】:2017-11-16 20:19:18
【问题描述】:

我正在尝试构建一个神经网络来预测每个网球运动员在互相比赛时赢得发球点的概率。对于输入,我将使用每个玩家参加的最后一次N 比赛,计算与对手的排名差异以及他在比赛中赢得一分的实际概率。

例如,每个玩家只查看 2 场比赛,一个输入将是

i=[-61, 25, 0.62, 0.64, 2, -35, 0.7, 0.65]

前 4 个数字用于第 1 名玩家(排名差异和他的概率),其他 4 个用于第二名。 输出将是

o=[0.65, 0.63]

所以训练输入是X=[i1, i2, i3,...],输出是y=[o1, o2, o3,...]

我有几个新手问题:

  1. 是否有必要对整个数据集的输入(分别为等级和概率)进行归一化?
  2. 当我尝试在 python 中运行它时,它说

ValueError:标签二值化不支持多输出目标数据

我可以让 MLPClassifier 使用 2 个输出吗?

编辑:添加了一些代码

from sklearn.neural_network import MLPClassifier
clf = MLPClassifier(solver='lbfgs', alpha=1e-5,
                   hidden_layer_sizes=(5, 2), random_state=1)
X=[[-61, 25, 0.62, 0.64, 2, -35, 0.7, 0.65], [2,-5,0.58,0.7,-3,-15,0.65,0.52] ]
y=[ [0.63, 0.64], [0.58,0.61] ]
clf.fit(X,y)

该代码返回上述错误。数据在这里没有被规范化,但我们暂时忽略它。

【问题讨论】:

    标签: python scikit-learn neural-network


    【解决方案1】:

    您的第一个问题在这里详细回答:Why do we have to normalize the input for an artificial neural network? 简而言之,是的,只需将值标准化,它会让生活更轻松。

    第二个问题覆盖here

    MLPClassifier 通过应用 Softmax 支持多类分类 作为输出函数。


    如果您可以将一些代码添加到问题中,答案可能会更详细。


    编辑

    再次仔细阅读问题后,我意识到您正在尝试使用分类器功能,即您正在尝试将标签应用于输入数据。这意味着该函数需要二进制输出。

    您可能正在寻找一个Multi-layer Perceptron regressor,它将提供连续的输出值。

    from sklearn.neural_network import MLPRegressor
    clf = MLPRegressor(solver='lbfgs', alpha=1e-5,
                       hidden_layer_sizes=(5, 2), random_state=1)
    X=[[-61, 25, 0.62, 0.64, 2, -35, 0.7, 0.65], [2,-5,0.58,0.7,-3,-15,0.65,0.52] ]
    y=[ [0.63, 0.64], [0.58,0.61] ]
    clf.fit(X,y)
    
    MLPRegressor(activation='relu', alpha=1e-05, batch_size='auto', beta_1=0.9,
           beta_2=0.999, early_stopping=False, epsilon=1e-08,
           hidden_layer_sizes=(5, 2), learning_rate='constant',
           learning_rate_init=0.001, max_iter=200, momentum=0.9,
           nesterovs_momentum=True, power_t=0.5, random_state=1, shuffle=True,
           solver='lbfgs', tol=0.0001, validation_fraction=0.1, verbose=False,
           warm_start=False)
    

    【讨论】:

    • @DoctorEvil:谢谢,现在更清楚了,我更新了答案。
    猜你喜欢
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 2016-08-03
    • 2017-10-14
    • 2021-09-22
    相关资源
    最近更新 更多