我正在尝试建立一个神经网络,以预测每个网球运动员在互相比赛时赢得服务点的概率。对于输入,我将使用每个玩家所玩的最后N
个匹配,取得与对手的排名差异以及赢得他在比赛中获得的点的实际概率。
例如,仅查看每个玩家的2个匹配项,一个输入将是
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,...]
我有几个新手问题:
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)
该代码返回上述错误。数据在这里没有标准化,但是现在让我们忽略它。
答案 0 :(得分:7)
您的第一个问题在此详细解答: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)