我想预测在泰坦尼克号灾难中,给定的乘客是否幸存。未存活的给0,存活的给1。我使用python scikit学习库,实现了下面的神经网络分类。在预测时,所有乘客的概率都是0。有人能帮我解决这个问题吗?
from sklearn.neural_network import MLPClassifier
>>> clf = MLPClassifier(solver='lbgfs', alpha=1e-5,
... hidden_layer_sizes=(5, 2), random_state=1)
...
>>> clf.fit(train_data)
MLPClassifier(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='lbgfs', tol=0.0001, validation_fraction=0.1, verbose=False,
warm_start=False)
也许这与你的训练数据的格式有关,如果你使用2个输出层进行二进制分类,你需要为你的输出变量应用"一个热编码",你是否尝试过逻辑激活,看看它是否返回0到1之间的值?
这种类型的问题通常是在数据没有规范化/标准化时观察到的(至少我不能在你的代码中看到)。神经网络技术非常容易受到不同特征之间尺度差异的影响,因此对所有列的数据进行标准化[mean =0 std =1]是一种很好的做法。