Python 管道输入错误“;输入包含“NaN”;
我试图创建一个管道来帮助我处理一些数据:输入平均值,缩放数据,然后拟合回归 我对插补器有一些问题,可能是用错了。我知道我的数据包含NaN的;但当我试图将它们输入管道中时,我得到一个值错误:Python 管道输入错误“;输入包含“NaN”;,python,scikit-learn,pipelining,Python,Scikit Learn,Pipelining,我试图创建一个管道来帮助我处理一些数据:输入平均值,缩放数据,然后拟合回归 我对插补器有一些问题,可能是用错了。我知道我的数据包含NaN的;但当我试图将它们输入管道中时,我得到一个值错误: Traceback (most recent call last): File "<ipython-input-124-8517b294cb64>", line 1, in <module> modelBuild(df) File "C:/Users/tmori/Google Dr
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').
以及数据帧数据的示例:
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
我很确定我只是错误地使用了插补器,但我不能用我的生命来精确地指出哪里
提前感谢所有的帮助
最好的,
Tom尝试删除PtagPrSKU行 因此,在列名之后,应该只包含它们的值。实现这一点的简单方法是在加载数据时使用pandas并定义skiprow 以下内容对我来说很好 问题 PtagPrSKU行为每列插入一个空单元格(这就是问题所在) 我在这个例子中使用的文件可以在这里找到
将缺少的值标识符从“np.nan”更改为其他值(可能是0或非常大的数字)。我也有同样的问题,这对我来说很有效
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
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)