五、python欠落値処理(Imputation)
2050 ワード
一、欠落値の処理方法
様々な理由から、実世界の多くのデータセットには欠落したデータが含まれており、これらのデータはしばしばスペース、nans、または他のプレースホルダとして符号化される.しかし、このようなデータセットはscikit-learnアルゴリズムと互換性がありません.多くの学習アルゴリズムでは、配列内の要素が数値であることがデフォルトであるため、素偶発的な要素には独自の代表的な意味があります.
不完全なデータセットを使用する基本的なポリシーの1つは、欠落した値を含む行全体または列全体の数値を捨てることですが、このような処理は価値のあるデータを大量に浪費します.次に、欠落した値を処理する一般的な方法を示します.
1.タプルを無視
カテゴリ・ラベルが欠落している場合(マイニング・タスクが分類に関連していると仮定する場合)、メタ・グループに複数の属性が値を欠落していない限り、この方法は有効ではありません.各アトリビュートの欠落した値の割合が大きく変化すると、パフォーマンスが特に低下します.
2.欠落値の手動入力
一般に、この方法は時間がかかり、データセットが大きく、多くの値が欠けている場合、この方法は実行できない可能性があります.
3.欠落した値をグローバル定数で埋める
欠落したアトリビュート値を同じ定数(Unknownや負の無限など)で置き換えます.欠落した値がすべてunknownで置き換えられている場合、マイニング・プログラムは、同じ値「unknown」を有するため、興味深い概念を形成すると考えられます.従って,この方法は簡単であるが,非常に信頼できない.
4.指定されたタプルと同じクラスに属するすべてのサンプルの属性平均値を使用する
例えば、credit_に従って顧客をrisk分類では、incomeの欠落値を、同じ信用度を有する所定のメタグループの顧客の平均収入で置き換える.
5.最も可能な値を使用して欠落した値を入力
回帰、ベイズ形式化を用いた推理ベースのツールまたは決定ツリーを用いて決定をまとめることができる.例えば、データセットの他の顧客の属性を利用して、incomeの欠落値を予測するための決定ツリーを構築することができる.
注意:値が欠落しているということは、必ずしもデータのエラーを意味するわけではありません!!!
二、欠落値処理のコード実現
class:`Imputer`クラスは、欠落した値が存在する行または列の平均、中位数、衆数を使用して欠落した値の代わりに使用するなど、欠落した数値処理の基本ポリシーを提供します.このクラスは、異なる欠落値符号化にも互換性があります.
1、欠落した値を平均値で埋める
2、
ここで、欠落データは、観察データよりも欠落データが多い場合に使用するのに好適な0に符号化されることに留意されたい.
様々な理由から、実世界の多くのデータセットには欠落したデータが含まれており、これらのデータはしばしばスペース、nans、または他のプレースホルダとして符号化される.しかし、このようなデータセットはscikit-learnアルゴリズムと互換性がありません.多くの学習アルゴリズムでは、配列内の要素が数値であることがデフォルトであるため、素偶発的な要素には独自の代表的な意味があります.
不完全なデータセットを使用する基本的なポリシーの1つは、欠落した値を含む行全体または列全体の数値を捨てることですが、このような処理は価値のあるデータを大量に浪費します.次に、欠落した値を処理する一般的な方法を示します.
1.タプルを無視
カテゴリ・ラベルが欠落している場合(マイニング・タスクが分類に関連していると仮定する場合)、メタ・グループに複数の属性が値を欠落していない限り、この方法は有効ではありません.各アトリビュートの欠落した値の割合が大きく変化すると、パフォーマンスが特に低下します.
2.欠落値の手動入力
一般に、この方法は時間がかかり、データセットが大きく、多くの値が欠けている場合、この方法は実行できない可能性があります.
3.欠落した値をグローバル定数で埋める
欠落したアトリビュート値を同じ定数(Unknownや負の無限など)で置き換えます.欠落した値がすべてunknownで置き換えられている場合、マイニング・プログラムは、同じ値「unknown」を有するため、興味深い概念を形成すると考えられます.従って,この方法は簡単であるが,非常に信頼できない.
4.指定されたタプルと同じクラスに属するすべてのサンプルの属性平均値を使用する
例えば、credit_に従って顧客をrisk分類では、incomeの欠落値を、同じ信用度を有する所定のメタグループの顧客の平均収入で置き換える.
5.最も可能な値を使用して欠落した値を入力
回帰、ベイズ形式化を用いた推理ベースのツールまたは決定ツリーを用いて決定をまとめることができる.例えば、データセットの他の顧客の属性を利用して、incomeの欠落値を予測するための決定ツリーを構築することができる.
注意:値が欠落しているということは、必ずしもデータのエラーを意味するわけではありません!!!
二、欠落値処理のコード実現
class:`Imputer`クラスは、欠落した値が存在する行または列の平均、中位数、衆数を使用して欠落した値の代わりに使用するなど、欠落した数値処理の基本ポリシーを提供します.このクラスは、異なる欠落値符号化にも互換性があります.
1、欠落した値を平均値で埋める
import numpy as np
from sklearn.preprocessing import Imputer
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
import numpy as np
from sklearn.preprocessing import Imputer
###1.
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit([[1, 2], [np.nan, 3], [7, 6]])
X = [[np.nan, 2], [6, np.nan], [7, 6]]
print(imp.transform(X))
[[4. 2. ]
[6. 3.66666667]
[7. 6. ]]
2、
Imputer
クラスも疎行列をサポートする.import scipy.sparse as sp
X = sp.csc_matrix([[1, 2], [0, 3], [7, 6]])
imp = Imputer(missing_values=0, strategy='mean', axis=0)
imp.fit(X)
X_test = sp.csc_matrix([[0, 2], [6, 0], [7, 6]])
print(imp.transform(X_test))
ここで、欠落データは、観察データよりも欠落データが多い場合に使用するのに好適な0に符号化されることに留意されたい.