1

私は2500レコードのデータセットを持っています。各レコードには100の属性があります。私が直面している問題は、これらのレコードの多くが1つ(または複数の)属性の値がでないことです。このようなレコードは数が多いため(約800)、これらのレコードを無視する余裕はありません。私のすべての属性は数値です。私のターゲット属性はカテゴリです。 6つのクラスがあります。私はSVMクラシファイアを訓練目的で使用する予定です。Handle SVMに属性がありません

不足している属性値を処理するためにはどのようなアプローチをとるべきですか?

また、私のテストデータにも欠落している属性が含まれています。データのテストで欠損値を処理するにはどうすればよいですか?

答えて

3

2500のデータセットで800インスタンスがかなり高いので、それらを削除するのはおそらく最良の選択肢ではありません。

数値属性を扱っているため、欠けているデータに使用できる一般的な値を見つけるのが一般的な手法です。多くの場合、の平均値はです。

sklearnはその一例sklearn.preprocessing.Imputer

でこれを行いプリプロセッサを提供しています:

from sklearn.preprocessing import Imputer 
imp = Imputer(missing_values='NaN', strategy='mean', axis=0) 
imp.fit([[1, 2], [np.nan, 3], [7, 6]]) 

ofcourseの最善の解決策は、欠損値を埋めるために、ドメインの専門家に依頼するだろうが、それはですしばしば不可能です。