为了账号安全,请及时绑定邮箱和手机立即绑定

解决 Kaggle 的泰坦尼克号机器学习

解决 Kaggle 的泰坦尼克号机器学习

慕婉清6462132 2021-06-30 10:01:23
我正在尝试用 Python 解决 Kaggle 的泰坦尼克号。但是我在尝试拟合我的数据时出错。这是我的代码:import pandas as pdfrom sklearn import linear_modeldef clean_data(data):    data["Fare"] = data["Fare"].fillna(data["Fare"].dropna().median())    data["Age"] = data["Age"].fillna(data["Age"].dropna().median())    data.loc[data["Sex"] == "male", "Sex"] = 0    data.loc[data["Sex"] == "female", "Sex"] = 1    data.loc["Embarked"] = data["Embarked"].fillna("S")    data.loc[data["Embarked"] == "S", "Embarked"] = 0    data.loc[data["Embarked"] == "C", "Embarked"] = 1    data.loc[data["Embarked"] == "Q", "Embarked"] = 2train = pd.read_csv("train.csv")clean_data(train)target = train["Survived"].valuesfeatures = train[["Pclass", "Age","Sex","SibSp", "Parch"]].valuesclassifier = linear_model.LogisticRegression()classifier_ = classifier.fit(features, target) # Here is where error comes from错误是这样的:ValueError: Input contains NaN, infinity or a value too large for dtype('float64').你能帮我吗?
查看完整描述

3 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

在使用特征和目标拟合模型之前,最佳做法是检查您要用于构建模型的所有特征中是否都存在空值。您可以了解以下内容以进行检查

dataframe_name.isnull().any() 如果至少存在一个 Nan 值,这将给出列名和 True

dataframe_name.isnull().sum() 这将给出列名和存在多少 NaN 值的值

通过了解列名称,您可以执行数据清理。这不会产生 NaN 的问题。


查看完整回答
反对 回复 2021-07-06
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

在运行任何 sklearn 代码之前,您应该重置数据帧的索引:

df = df.reset_index()


查看完整回答
反对 回复 2021-07-06
  • 3 回答
  • 0 关注
  • 202 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信