web-dev-qa-db-ja.com

scikit-learn(sklearn)を使用して、線形回帰の欠測データを処理する方法は?

これを試しましたが、データに対して機能させることができませんでした: Scikit Learnを使用して、時系列で線形回帰を実行しますpandasデータフレーム

私のデータは2つのDataFrameで構成されています。 DataFrame_1.shape = (40,5000)およびDataFrame_2.shape = (40,74)。ある種の線形回帰を実行しようとしていますが、_DataFrame_2_にNaNの欠落データ値が含まれています。 DataFrame_2.dropna(how="any")すると、形状は_(2,74)_に下がります。

sklearnにNaN値を処理できる線形回帰アルゴリズムはありますか?

_load_boston_ from _sklearn.datasets_ where X,y = boston.data, boston.target = (506,13),(506,)をモデルにしています。

これが私の簡略化されたコードです:

_X = DataFrame_1
for col in DataFrame_2.columns:
    y = DataFrame_2[col]
    model = LinearRegression()
    model.fit(X,y)

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

マトリックスの形状を一致させるために、上記の形式を実行しました

_DataFrame_2_を投稿すると役立つ場合は、以下にコメントしてください。追加します。

6
O.rka

yのnull値を代入で入力できます。 scikit-learnこれは次のコードスニペットで行われます。

from sklearn.preprocessing import Imputer
imputer = Imputer()
y_imputed = imputer.fit_transform(y)

それ以外の場合は、74列のサブセットを予測子として使用してモデルを構築することをお勧めします。おそらく、一部の列に含まれるnull値が少なくなりますか?

3
maxymoo

変数がDataFrameの場合、fillnaを使用できます。ここで、欠落しているデータをその列の平均に置き換えました。

df.fillna(df.mean(), inplace=True)
0
Foreever