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

我正在尝试用 Python 解决 Kaggle 的泰坦尼克号。但是我在尝试拟合我的数据时出错。这是我的代码:


import pandas as pd

from sklearn import linear_model


def 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"] = 2


train = pd.read_csv("train.csv")


clean_data(train)


target = train["Survived"].values

features = train[["Pclass", "Age","Sex","SibSp", "Parch"]].values


classifier = 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').

你能帮我吗?


慕婉清6462132
浏览 203回答 3
3回答

暮色呼如

在使用特征和目标拟合模型之前,最佳做法是检查您要用于构建模型的所有特征中是否都存在空值。您可以了解以下内容以进行检查dataframe_name.isnull().any() 如果至少存在一个 Nan 值,这将给出列名和 Truedataframe_name.isnull().sum() 这将给出列名和存在多少 NaN 值的值通过了解列名称,您可以执行数据清理。这不会产生 NaN 的问题。

蛊毒传说

在运行任何 sklearn 代码之前,您应该重置数据帧的索引:df = df.reset_index()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python