我目前正在将Tensorflow应用于Kaggle的泰坦尼克号机器学习问题:https://www.kaggle.com/c/titanic
我的训练数据是891乘8(891个数据点和8个特征)。目标是预测泰坦尼克号上的乘客是否幸存。所以这是一个二元分类问题。
我正在使用单层神经网络。这是我的成本函数:
cost = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits(prediction,y))
这是我的优化器:
optimizer = tf.train.MomentumOptimizer(learning_rate=learning_rate, momentum=momentum).minimize(cost)
这是我的问题/问题:
我尝试将神经网络的一些预测提交给Kaggle,到目前为止我的所有尝试都有0%的准确率。然而,当我将前10名乘客的预测替换为来自sk-learn的RandomForestClassifier()的预测时,准确率飙升至50%..
我对神经网络无能的猜测是它是由训练数据不足引起的。所以我在考虑为输入数据添加噪声,但我真的不知道如何。
我的训练数据的8个特征是:['Pclass','Sex','Age','Fare','Child','Fam_size','Title','Mother']。有些是绝对的,有些是连续的。
非常感谢任何想法/链接!非常感谢。
编辑:
我发现提交内容有什么问题。出于某种原因,我的预测都是浮点数而不是整数。所以我就这样做了:
result_df.astype(int)
感谢大家指出我的提交格式错误。
答案 0 :(得分:0)
尝试在本地交叉验证培训数据,看看您获得的准确度。 sklearn软件包有一个简单的k-fold交叉验证实用程序(here),用于在训练和测试折叠中划分样本。你获得了什么准确度?
请记住,二元分类的准确率为50%。如果k倍CV精度高于50%,则提交时可能会出现问题。