3

Python でパッケージから SMOTE を使用しようとしてimblearnいますが、データに多くの欠損値があり、次のエラーが発生しました。

ValueError: 入力に NaN、無限大、または dtype('float64') には大きすぎる値が含まれています。

ここでパラメータを確認しましたが、欠損値を扱っているものはないようです。

欠損値のある合成サンプルを生成する方法はありますか?

4

2 に答える 2

-1

簡単な例は次のとおりです。

# Imports
from collections import Counter
import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.preprocessing import Imputer
from imblearn.over_sampling import SMOTE
from imblearn.pipeline import make_pipeline

# Load data
bc = load_breast_cancer()
X, y = bc.data, bc.target

# Initial number of samples per class
print('Number of samples for both classes: {} and {}.'.format(*Counter(y).values()))

# SMOTEd class distribution
print('Dataset has %s missing values.' % np.isnan(X).sum())
_, y_resampled = SMOTE().fit_sample(X, y)
print('Number of samples for both classes: {} and {}.'.format(*Counter(y_resampled).values()))

# Generate artificial missing values
X[X > 1.0] = np.nan
print('Dataset has %s missing values.' % np.isnan(X).sum())
_, y_resampled = make_pipeline(Imputer(), SMOTE()).fit_sample(X, y)
print('Number of samples for both classes: {} and {}.'.format(*Counter(y_resampled).values()))
于 2018-07-14T15:17:39.797 に答える