sklearn错误-我已经填写了列的缺失值,但仍然面临以下错误

时间:2019-02-06 06:35:59

标签: python scikit-learn

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

  

ValueError:输入包含NaN,无穷大或对于dtype('float64')而言太大的值

我尝试填充Age列的缺失值,并尝试运行模型拟合,但仍然无法正常工作。 note-使用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)

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

1 个答案:

答案 0 :(得分:4)

原因是这一行:

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())

请注意,两者都行不通。