2017-07-31 14 views
0

データを処理するのに役立つパイプラインを作成しようとしています:平均値の代入、データのスケーリング、回帰式のフィッティング。パイプラインインポータエラー "入力にNaNが含まれています"

Imputerに何らかの問題があり、間違っている可能性があります。私のデータにはNaNが含まれていることがわかっています。しかし、私はパイプラインの内側にそれらを入力プログラムしようとすると、私はValueErrorを取得:

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']) 

とデータフレームのデータの例:

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 

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'). 

を私のコードは、これまでのところ、このようになります。

私はImputerを間違って使用していますが、私の人生はどこにあるのか分かりません。

ご協力いただきありがとうございます!

ベスト、 トム

+0

コード内の問題は、データフレームにある行PtagPrSKUです。私の答えを見てください。 – sera

答えて

0

はラインPtagPrSKUを削除するようにしてください。

したがって、列名の後に値を設定するだけです。これを行う簡単な方法は、パンダを使用し、データをロードするときにスキップを定義することです。

以下は私にとってうまくいきます。

問題

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) 
0
見つけることができる何か他のもの(おそらく0または非常に大きな数)に「np.nan」からご欠損値の識別子を変更し

。私は同じ問題を抱えていて、これは私のために働いた。

関連する問題