2017-09-04 10 views
0

私は機械学習をPythonで実践しています。私は障害に立ち往生していますが、私は困難を抱えています。私が使用しているデータセットはtitanic.csvです。私は、線形回帰を使用してAgeカラムの欠損値を計算しようとしています。私はNaN値が存在しないことを示すない値を持つ列を取得し、上記のコードを使用して、私は手動で行うことにより、エラーを修正しようとしていValueError:LinearRegressionを使用して、入力にNaN、無限大またはdtype( 'float64')には大きすぎる値が含まれています

training = dftrain[['Age','SibSp','Parch','Fare','Pclass','Sex_female', 
       'Sex_male','Embarked_C','Embarked_Q','Embarked_S']] 
testing = dftest[['Age','SibSp','Parch','Fare','Pclass','Sex_female', 
       'Sex_male','Embarked_C','Embarked_Q','Embarked_S']] 
unify = pd.concat([training, testing]) 
train = unify[unify['Age'].notnull()] 
clf = LinearRegression() 
#clf.fit(train.drop(['Age'],axis = 1), train['Age']) 
pd.set_option('display.max_rows',None) 
train 

train[train['Age'].isnull()] 

。私はすべての列にこれをしました。また、私は把握することはできません助けてください

ValueError: Input contains NaN, infinity or a value too large for dtype('float64'). 

train.notnull().count() 
Age   1046 
SibSp   1046 
Parch   1046 
Fare   1046 
Pclass  1046 
Sex_female 1046 
Sex_male  1046 
Embarked_C 1046 
Embarked_Q 1046 
Embarked_S 1046 
dtype: int64  
を使用しますが、私はすべてが行ってもいいと思い、私はclf.fit()関数のコメントを解除するたびに、私はエラーを取得するにチェック私のコードで何が間違っていますか。

答えて

0

使用していますtrain.notnull().count():これは、各列の非NaN値の合計数を返します。 NaN値のカウントは返されません。また、この数値(この場合は1046)とデータセット内に存在する行の総数を比較することで確認できます。

train.isnull().sum()を使用すると、トレーニングデータセットに存在するNaN値の合計数を見つけることができます。正の数を見れば、あなたの列車内にNaNの値があります。

0

あなただけの何のNaN値含まれていない「統一」のそれらの行からトレーニングセットを構築したい場合:はい

train = unify.dropna() 
+0

を。私はそれをやろうとした。私はそれをさらに説明します。 train.isnull.sum()を実行した後、NaNでFare列に1つの値があったとします。その行が同じ索引を持つ2つの行を持っていることがわかりました。運賃にナル値がありました。だから私はNaNの値を平均で満たし、後で同じインデックスを持つ2つの行が消えました。どういうわけか...しかしそれはうまくいったので私は推測する – Pseudo

関連する問題