【问题标题】:sklearn error - I've filled the missing values of column but still facing the below errorsklearn 错误 - 我已经填写了列的缺失值,但仍然面临以下错误
【发布时间】:2019-06-30 01:38:59
【问题描述】:

我正在尝试将数据集拟合到逻辑回归模型,但遇到以下错误:

ValueError: Input contains NaN, infinity or a value too large for dtype('float64')

我已尝试填充 Age 列的缺失值并尝试运行模型拟合,但仍然无法正常工作。注意-使用 python 3.7.1

train = pd.read_csv('titanic_train.csv')

X = train.drop('Survived',axis=1)
y = train['Survived']

from sklearn.model_selection  import train_test_split

train['Age'].isnull().values.any()

train['Age'].fillna(train['Age'].mean())

X_train, X_test, y_train,y_test = train_test_split(train.drop('Survived',axis=1),train['Survived'],test_size=0.3,random_state=101)

from sklearn.linear_model import LogisticRegression
logmodel = LogisticRegression()
logmodel.fit(X_train,y_train)

模型应该合适,我们应该能够得到混淆矩阵

【问题讨论】:

  • 运行此命令时得到的输出是什么:train.isnull().sum()

标签: python scikit-learn


【解决方案1】:

原因是这一行:

train['Age'].fillna(train['Age'].mean())

pandas 方法创建副本;除非您明确告诉他们,否则他们不会修改他们被调用的对象。因此,您需要执行以下操作之一:

  1. 设置inplace=True:
train['Age'].fillna(train['Age'].mean(), inplace=True)
  1. 重新分配:
train['Age'] = train['Age'].fillna(train['Age'].mean())

请注意,两者都行不通。

【讨论】:

    猜你喜欢
    • 2023-01-10
    • 2022-12-31
    • 2022-06-20
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    相关资源
    最近更新 更多