Mit*_*esh 1 python machine-learning pandas scikit-learn imputation
我试图在名为age的单一列上使用Imputer来替换缺少的值。但是,我收到了以下错误:“期望的2D数组,而是获得了1D数组:”
以下是我的代码
import pandas as pd
import numpy as np
from sklearn.preprocessing import Imputer
dataset = pd.read_csv("titanic_train.csv")
dataset.drop('Cabin',axis = 1,inplace = True)
x = dataset.drop('Survived',axis = 1)
y = dataset['Survived']
imputer = Imputer(missing_values ="nan",strategy = "mean",axis = 1)
imputer=imputer.fit(x['Age'])
x['Age']=imputer.transform(x['Age'])
Run Code Online (Sandbox Code Playgroud)
Imputer期望将二维数组作为输入,即使其中一个维的长度为1。也可以使用np.reshape以下方法实现:
imputer = Imputer(missing_values='NaN', strategy='mean')
imputer.fit(x['Age'].values.reshape(-1, 1))
x['Age'] = imputer.transform(x['Age'].values.reshape(-1, 1))
Run Code Online (Sandbox Code Playgroud)
就是说,如果您没有做任何事情而不是用平均值来填充缺失值,那么您可能会发现完全跳过Imputer而是使用Pandas更容易fillna:
x['Age'].fillna(x['Age'].mean(), inplace=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1849 次 |
| 最近记录: |