【发布时间】:2018-01-07 11:48:21
【问题描述】:
我正在尝试创建一个管道来帮助我处理一些数据,方法是:估算均值、缩放数据,然后拟合回归量。
我在使用 Imputer 时遇到了一些问题,可能是用错了。我知道我的数据包含 NaN;但是当我尝试将它们输入管道时,我得到一个 ValueError:
Traceback (most recent call last):
File "<ipython-input-124-8517b294cb64>", line 1, in <module>
modelBuild(df)
File "C:/Users/tmori/Google Drive/Projects/Product Dimension Accuracy/Qubert_PredictiveModel/qubert_predictive_model.py", line 81, in modelBuild
clf_x = pipeline.fit_transform(df[['OverallHeight-ToptoBottom', 'OverallDepth-FronttoBack']], df['OverallWidth-SidetoSide'])
File "C:\Program Files\Anaconda\lib\site-packages\sklearn\pipeline.py", line 303, in fit_transform
return last_step.fit_transform(Xt, y, **fit_params)
File "C:\Program Files\Anaconda\lib\site-packages\sklearn\base.py", line 497, in fit_transform
return self.fit(X, y, **fit_params).transform(X)
File "C:\Program Files\Anaconda\lib\site-packages\sklearn\ensemble\forest.py", line 248, in fit
y = check_array(y, accept_sparse='csc', ensure_2d=False, dtype=None)
File "C:\Program Files\Anaconda\lib\site-packages\sklearn\utils\validation.py", line 407, in check_array
_assert_all_finite(array)
File "C:\Program Files\Anaconda\lib\site-packages\sklearn\utils\validation.py", line 58, in _assert_all_finite
" or a value too large for %r." % X.dtype)
ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
到目前为止,我的代码如下所示:
def modelBuild(df):
imp = Imputer()
scl = StandardScaler()
clf = RandomForestRegressor()
pipeline = Pipeline([('imputer', imp),
('scaler', scl),
('clf', clf)])
clf_x = pipeline.fit_transform(df[['OverallHeight-ToptoBottom', 'OverallDepth-FronttoBack']], df['OverallWidth-SidetoSide'])
以及DataFrame数据的一个例子:
StagName OverallDepth-FronttoBack OverallHeight-ToptoBottom \
PtagPrSKU
AABP1004 NaN 48.0
AAI2179 28.0 32.0
AAI2180 28.0 32.0
AAI2181 36.0 32.0
AAI2182 36.0 32.0
StagName OverallWidth-SidetoSide
PtagPrSKU
AABP1004 64.0
AAI2179 55.0
AAI2180 55.0
AAI2181 71.0
AAI2182 71.0
我很确定我只是错误地使用了 Imputer,但我终其一生都无法确定在哪里。
提前感谢所有帮助!
最好, 汤姆
【问题讨论】:
标签: python scikit-learn pipelining