创建提交 csv 时出现 ValueError

ValueError in creating submission csv

我正在学习数据科学并阅读其他人的脚本。有一个巨大的算法(kaggle)有这段代码来应用逻辑回归,然后按照代码中的建议导出到 .csv 文件。但是,它总是在我 运行 代码之后生成一条错误消息。原始脚本已找到here, and the .csv data that's being read into the code is here: train.csv test.csv

从 Input[24] 到 Input[28] 用于设置 LogisticRegression。直到 Input[27],代码仍然 运行s 没有错误。当运行ning 输入[28]:

    acc_log = predict_model(X_data, Y_data, logreg, X_test_kaggle, 'submission_Logistic.csv')

我收到一条错误消息:

    ValueError: could not convert string to float: 'Q'

我尝试添加 "try/except" 来绕过错误消息,以便代码可以继续。

    try:
        acc_log = predict_model(X_data, Y_data, logreg, X_test_kaggle, 'submission_Logistic.csv')
    except ValueError:
        pass

这段代码有点太复杂了,我无法调试以查看哪一步出错以及文件中的哪个位置用字符串代替了所需的浮点数输入。所以我想在这里寻求帮助,以更好地理解这一点并寻求适当的解决方案。谢谢

您提供的笔记本 link 中似乎没有 运行 单元格 16,其中 Embarked 值被转换为整数(包括字符串值 Q,这是抛出你看到的错误):

单元格 16

# fill the missing values of Embarked feature with the most common occurance
freq_port = train_df.Embarked.dropna().mode()[0]
for dataset in combine:
    dataset['Embarked'] = dataset['Embarked'].fillna(freq_port)
train_df[['Embarked', 'Survived']].groupby(['Embarked'], as_index=False).mean().sort_values(by='Survived', ascending=False)

for dataset in combine:
    dataset['Embarked'] = dataset['Embarked'].map( {'S': 0, 'C': 1, 'Q': 2} ).astype(int)

train_df.head()

我只是 运行 所有单元格的顺序,LogisticRegression 部分对我来说工作得很好。尝试关闭您的笔记本并重新运行按照它们出现的顺序排列所有单元格。

一般数据科学提示:
当您已经训练了一个模型但您的 predict() 函数抛出错误时,查看您正在输入的测试数据并尝试找出问题所在会很有帮助。
在这种情况下,在 X_test_kaggle 中搜索字符串 Q 的值可能会发现问题出在 Embarked 字段上,并且它可以作为追溯问题的第一个面包屑到它的来源。