Kaggle Titanic 提交分数高于本地准确率分数

数据挖掘 机器学习 卡格尔
2022-02-22 23:17:41

这是首发挑战,泰坦尼克号。我在 Kaggle 上发布的原始问题在这里然而,没有人真正给出任何有见地的建议,所以我转向强大的 Stackoverflow 社区。

基于这个笔记本,我们可以下载这个挑战的ground truth并获得满分。

我对其进行了测试,它确实给了我 100% 的 LB,以确认它是它声称的基本事实。这里的附带问题:我如何删除这个完美的提交,因为现在它显示我在这个挑战中有 100%,但我想展示我的真实分数,大约是 80%,我会继续改进)

有时在 Kaggle 上提交需要几分钟才能取回分数,所以我在本地使用 ground truth 来测试我的不同模型以节省时间。然而,他们总是给我不同的结果。请参阅以下内容:

在此处输入图像描述

这些是我使用的代码,有什么问题?您可以使用我的代码来尝试您的提交,您是否也有同样的问题?

def mark(pred):
    solution = os.path.join(dirname, './output/solution.csv')
    submission = os.path.join(dirname, './output/'+pred)
    solution = pd.read_csv(solution)
    submission = pd.read_csv(submission)

    solution.columns = ['PassengerId', 'Sol']
    submission.columns = ['PassengerId', 'Pred']

    df = pd.concat([solution[['Sol']], submission[['Pred']]], axis=1)
    num_row = df.shape[0]
    print(pred[:-4], '==', (df[(df['Sol'] == df['Pred'])]).shape[0] / num_row)

if __name__== "__main__":
    mark('achieve_99_dtree_rfe.csv')
    mark('advanced_feature_with_stacking_5_fold.csv')

1个回答

第一个问题:在 kaggle 上的某些比赛中,您可以在进入提交窗口时选择提交。在那里,您可能无法使用泰坦尼克号,因此您会被 100% 困住。

关于你的第二个问题以及为什么你在本地有不同的结果,有几个解释,首先是你设置了所有种子的随机化,其次你在本地拥有的所有模块/库版本都与 kaggle 上的相同?第三个不同的硬件也可能是原因