gpt4 book ai didi

python - 管道输入错误 "Input Contains NaN"

转载 作者:行者123 更新时间:2023-12-05 08:08:53 24 4
gpt4 key购买 nike

我正在尝试创建一个管道来帮助我处理一些数据,方法是:估算均值、缩放数据,然后拟合回归量。

我在使用 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,但我终究无法确定错误的位置。

在此先感谢您的所有帮助!

最好的,汤姆

最佳答案

尝试删除 PtagPrSKU 行。

所以在列名之后你应该只有它们的值。执行此操作的简单方法是使用 pandas 并在加载数据时定义 skiprows。

以下对我来说效果很好。

问题

PtagPrSKU 行为每一列插入一个空单元格(这就是问题所在)。

我在这个例子中使用的文件可以在这里找到 link

from sklearn.preprocessing import Imputer
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestRegressor
from sklearn.pipeline import Pipeline
import pandas as pd



def buildit(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'])

return clf_x



df = pd.read_excel('t.xlsx',skiprows=[1])
print(df)
buildit(df)

关于python - 管道输入错误 "Input Contains NaN",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45423783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com