sklearn中的多输出神经网络

2024-05-20 19:54:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图建立一个神经网络来预测每个网球运动员在与对方比赛时赢得发球点的概率。对于输入,我将使用每个玩家玩过的最后一场比赛,计算对手的排名差异和他在比赛中赢得一分的实际概率。

例如,每个玩家只看两个匹配项,一个输入将是

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

前4个数字是第一名选手的(排名差异和他拥有的概率),其他4个数字是第二名。 输出将是

o=[0.65, 0.63]

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

我有几个新问题:

  1. 是否有必要规范整个数据集的输入(分别是秩和概率)?
  2. 当我试图用python运行它时,它说

ValueError: Multioutput target data is not supported with label binarization

我能让mlp密码器在两个输出下工作吗?

编辑:添加了一些代码

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)

该代码返回上述错误。这里的数据不是标准化的,但是现在我们忽略它。


Tags: 数据代码玩家数字神经网络差异概率clf
1条回答
网友
1楼 · 发布于 2024-05-20 19:54:21

你的第一个问题在这里得到了详细的回答:Why do we have to normalize the input for an artificial neural network? 简言之,是的,只要让价值观正常化,就能让生活更轻松。

第二个问题是here

MLPClassifier supports multi-class classification by applying Softmax as the output function.


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


编辑

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

您可能正在寻找一个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)

相关问题 更多 >