本稿では、制御され、前処理scikit学習、標準化された最大値と最小スケーリング処理データ、正則化を含むレビューいくつかの方法、下簡単な前処理と併せてコードのセクションを、二値化データおよび欠損値を特徴とします。
数学的基礎
式の意味:
$$ \バー{X} = \ FRAC {1} {N} \ sum_ {i = 1} ^ {N} X_ {I} $$
分散式:
$$ S ^ {2} = \ FRAC {1} {N} \ sum_ {i = 1} ^ {N} \左(X_ {I} - \バー{X} \右)^ {2} $$
ベクターの非ゼロ要素の0-ノルム番号。
1 - 規範:
$$ \ | X \ | = \ sum_ {i = 1} ^ {N} \左| X_ {I}右\ | $$
2ノルム:
$$ \ | X \ | _ {2} = \左(\ sum_ {i = 1} ^ {N} X_ {I} ^ {2} \右)^ {\ FRAC {1} {2}} $$
のp-ノルム式:
$$ \ | X \ | _ {P} = \左(| X 1 | ^ {P} + | X 2 | ^ {P} + \ ldots + | XN | ^ {P} \右)^ {\ FRAC { 1} {P}} $$
標準化(標準化)
実際には、多くの場合、各機能は、平均、標準偏差分割離散機能、このような階層、したがってデータセンターを除去し、分布形状の特徴データを見落とし。(確率論の問題は、多くの場合、Yongzhe趙ああを行います)
しかし、個々の特徴又は著しく大きな差のサンプル値は、ガウス正規分布、標準化された貧弱な性能の結果に準拠していません。
式:(X-X_mean)/ X_stdは/それぞれ各列の属性ごとに算出します。
その属性に応じたデータは、(列だった)マイナス平均して、分散で割った値。最終結果は、各属性の/すべてのデータのそれぞれの列は0、分散値の近傍に集まっています。
方法A:使用sklearn.preprocessing.scale()関数
sklearn インポート前処理 インポートnumpyのNPとして X = np.array([1、-1。、2 。]、 [ 2 、0、0]、 [0、 1、-1 ]] ) X_mean = X.mean(軸= 0) #の計算平均 X_std = X.std(軸= 0) #の計算分散 X1 =(X-X_mean)/ X_std #標準X X_SCALE = preprocessing.scale(X) #を使用関数をXを標準化するpreprocessing.scale
最後にX_SCALEとX1の値が同じです
方法2:sklearn.preprocessing.StandardScalerクラス
sklearn インポート前処理 インポートnumpyのNPとして X = np.array([1、-1。、2 。]、 [ 2 、0、0]、 [0、 1、-1 ]] ) スケーラ = preprocessing.StandardScaler() X_scaled = scaler.fit_transform(X)
最終的な結果を得るためにこれらの2つの方法は同じです。
第二に、ズーム(MinMaxScaler)
別の一般的な方法はpreprocessing.MinMaxScalerクラスによって達成することができるとの間の最大値と最小値の指定されたプロパティ(通常1-0)にスケーリングされます。
この方法を使用する目的は、次のとおりです。
- 図1に示すように、非常に小さい分散のためにその安定性を高めることができます。
- 図2は、スパース行列エントリ0を維持します。
データは、関数MinMaxScalerを使用して0-1の間に縮小されます
sklearn インポート前処理 インポートnumpyのNPとして X = np.array([1、-1。、2 。]、 [ 2 、0、0]、 [0、 1、-1 ]] ) min_max_scaler = preprocessing.MinMaxScaler() X_minMax = min_max_scaler.fit_transform(X) X_minMax
アレイ([0.5、0、1 ]、 [ 1、0.5、0.33333333 ]、 [0、 1、0]])
第三に、正則化(正規化)
正則化プロセスは、各サンプルは、類似の二次(ドット積)として使用される場合、(サンプルあたりノルム1)単位ノルムにスケーリング、または両者の間の核のサンプルを計算する他の方法でありますこの方法は有用であろう。
この方法は、頻繁に使用されるテキストの分類およびクラスタリングベクトル空間モデル(ベクトル空間モデル)の基本です。
正規化は、各サンプルのp-ノルムについて計算された主要なアイデアであり、そのような治療の結果は、各後処理サンプルP-(L1ノルムについてノルムであるように、ノルムは、次いで、サンプル中の各素子により分割されL2ノルム)1に等しいです。
方法1:使用sklearn.preprocessing.normalize()関数
sklearn インポート前処理 インポートnumpyのNPとして X = np.array([1、-1。、2 。]、 [ 2 、0、0]、 [0、 1、-1 ]] ) X_normalized = preprocessing.normalize(X、ノルム= ' L2 ' ) X_normalized
方法2:sklearn.preprocessing.StandardScalerクラス
sklearn インポート前処理 インポートnumpyのNPとして X = np.array([1、-1。、2 。]、 [ 2 、0、0]、 [0、 1、-1 ]] ) 正規化 = preprocessing.Normalizer() normalizer.transform(X)
二つの方法の結果:
アレイ([0.40824829、-0.40824829、0.81649658 ]、 [ 1 、0、0]、 [0、 0.70710678、-0.70710678]])
第四に、二値化(二値化)
前記バイナリデータは、ブール変数の特性に主にあります。
sklearn インポート前処理 インポートnumpyのNPとして X = np.array([1、-1。、2 。]、 [ 2 、0、0]、 [0、 1、-1 ]] ) 二値化 = preprocessing.Binarizer() binarizer.transform(X)
二値化関数がしきい値を設定することができる、結果データが閾値1よりも大きい場合、閾値は、以下のサンプルコードは、0よりも小さくなっています。
// ただ、パラメータを追加
値化 = preprocessing.Binarizer(しきい値= 1.1)
第五に、欠損値
欠損値と実際のデータセットは、空の、または代替のNaNまたはその他の記号を使用してのどちらかです。
これらのデータは、それが処理される必要がある直接scikit学習分類器の直接訓練を、使用することはできません。
幸いなことに、sklearn Imputerのクラスは、このようなカラムが発生頻繁に交換平均、中央値又は不在を使用するように、欠損値を処理する基本的なアプローチを提供します。
インポートNPとしてnumpyの から sklearn.preprocessing インポートImputer IMP = Imputer(missing_valuesの= ' のNaN '、戦略= ' 意味'、軸= 0) imp.fit([ 1、2]、[np.nan、3]、[ 7、6 ]) X = [np.nan、2]、[6、np.nan]、[7,6 ] プリント(imp.transform(X))
Imputerクラスも(すなわち、0を多く含む)疎行列をサポートしています。
インポートSPとしてscipy.sparse X = sp.csc_matrix([1,2]、[0,3]、[7,6 ]) IMP = Imputer(missing_values = 0、戦略= ' 平均'、軸= 0) imp.fit(X) X_test = sp.csc_matrix([0,2]、[6,0]、[7,6 ]) 、印刷(imp.transform(X_test))
その他のビューscikit学習の公式ドキュメントをご覧ください
参考リンク:https://blog.csdn.net/Dream_angel_Z/article/details/49406573