ValueError: Input contains NaN, even when Using SimpleImputer
ValueError: Input contains NaN, even when Using SimpleImputer
我正在尝试将 Titanic 数据集作为我的第一个 Kaggle 项目,但我 运行 遇到了这个错误。我一直在 Stack 上寻找解决方案,但我仍然无法弄清楚。
我制作了两个管道来预处理数值和分类特征:
num_pipeline = Pipeline([
('imputer', SimpleImputer( strategy='median')),
('scaler', StandardScaler())])
cat_pipeline = Pipeline([
('imputer', SimpleImputer(strategy='constant', fill_value='missing')),
('onehot', OneHotEncoder()) ])
然后我将它们加入了 ColumnT运行sformer
preprocessor = ColumnTransformer(
transformers = [
('num', num_pipeline, numeric_features),
('cat', cat_pipeline, categorical_features) ])
numeric_features 和 categorical_features 是数字和分类特征的列表:
numeric_features = ['Age', 'SibSp', 'Parch', 'Fare']
categorical_features = ['Pclass', 'Sex', 'Embarked']
最后,在我的最终流水线中添加了一个分类器:
knn = Pipeline([
('Preprocessor' , preprocessor),
('Classifier', KNeighborsClassifier())
])
knn.fit(X_train, y_train)
这是我收到“ValueError:输入包含 NaN”的时间
train = pd.read_csv('train.csv')
train.isna().sum()
输出:
PassengerId 0
Survived 0
Pclass 0
Name 0
Sex 0
Age 177
SibSp 0
Parch 0
Ticket 0
Fare 0
Cabin 687
Embarked 2
dtype: int64
列 Age
、Cabin
和 Embarked
包含 NaN 值。但是,您没有在 numeric_features
或 categorical_features
中包含 Cabin
列,因此不会估算它的值。这就是您收到错误的原因。
我正在尝试将 Titanic 数据集作为我的第一个 Kaggle 项目,但我 运行 遇到了这个错误。我一直在 Stack 上寻找解决方案,但我仍然无法弄清楚。
我制作了两个管道来预处理数值和分类特征:
num_pipeline = Pipeline([
('imputer', SimpleImputer( strategy='median')),
('scaler', StandardScaler())])
cat_pipeline = Pipeline([
('imputer', SimpleImputer(strategy='constant', fill_value='missing')),
('onehot', OneHotEncoder()) ])
然后我将它们加入了 ColumnT运行sformer
preprocessor = ColumnTransformer(
transformers = [
('num', num_pipeline, numeric_features),
('cat', cat_pipeline, categorical_features) ])
numeric_features 和 categorical_features 是数字和分类特征的列表:
numeric_features = ['Age', 'SibSp', 'Parch', 'Fare']
categorical_features = ['Pclass', 'Sex', 'Embarked']
最后,在我的最终流水线中添加了一个分类器:
knn = Pipeline([
('Preprocessor' , preprocessor),
('Classifier', KNeighborsClassifier())
])
knn.fit(X_train, y_train)
这是我收到“ValueError:输入包含 NaN”的时间
train = pd.read_csv('train.csv')
train.isna().sum()
输出:
PassengerId 0
Survived 0
Pclass 0
Name 0
Sex 0
Age 177
SibSp 0
Parch 0
Ticket 0
Fare 0
Cabin 687
Embarked 2
dtype: int64
列 Age
、Cabin
和 Embarked
包含 NaN 值。但是,您没有在 numeric_features
或 categorical_features
中包含 Cabin
列,因此不会估算它的值。这就是您收到错误的原因。