リファレンス本明細書では、「データ・サイエンティスト・ユニオン」のクッキーの記事。
まず、無次元:スケーラーで平均分散正規化とsklearnを正規化し、最も値
異なる寸法の場合、試料は、各機能の重要度を反映していないとき、あなたは正規化方法を使用する必要があります。
以下のための一般的な溶液中のすべてのデータに同一の寸法(寸法)にマッピングされます。
図1に示すように、一般的に使用されるデータの正規化二つがあります。
正規化(正規化)のための最高の価値:
すべてのデータは0-1の間でマッピングされました。ほとんどの値が異なる境界を有する分布範囲を使用して正規化した比較的大きな外れ値の影響を受け、(0階調255 0、100スコア)
平均分散正規化(標準化):
すべてのデータは分布1のゼロ平均および分散に正規化しました。データ明確な境界線に印加される、極端なデータ値の場合があります。
2、スケーラーをsklearn
トレーニングデータセット&テストデータセットにデータセットをモデル化します。
トレーニングデータは、正規化平均とトレーニングデータセットのstd_trainの分散を計算する必要性をmean_trainセット。
質問です:私たちのテストデータセットは、テストデータ、それの平均と分散を計算するために正規化されている場合は?
答えはノーです。テストデータセットが正規化されると、まだ平均と分散std_train train_meanトレーニングデータセットを使用する必要があります。テストデータは、環境データを正規化した、実際の平均と分散ではないかもしれないが、実際の環境をシミュレートすることがあるためです。式を使用することしかでき(x_test - mean_train) / std_train
、すべてのデータのバックのために、そして、データの正規化アルゴリズムのも一部を、あなたは同じプロセスを行う必要があります。
我々はトレーニングデータの平均と分散を保存するようにして得られたセット。
StandardScaler:メソッドsklearnでは、データの正規化に特化。
###ダウンロードデータセット インポートnumpyのAS NP から sklearn インポートデータセット から sklearn.model_selection インポートtrain_test_split IRIS = datasets.load_iris() X- = iris.data Y = iris.target X_train、X_test、y_train、android.permission.FACTOR。 = Train_test_split(iris.data 、iris.target、test_size = 0.2、random_state = 666 ) ###正規化 から sklearn.preprocessing インポートStandardScaler standardScaler = StandardScaler() #の同じトレーニングモデルと正規化処理を standardScaler.fit(X_train) standardScaler.mean_ standardScaler.scale_ #可変データ分布の表現、あるいはstd_ #の使用変換 X_train_standard = standardScaler.transform(X_train) X_test_standard = standardScaler.transform(X_test)
第二に、欠損値
1は、欠損値の決定された範囲であります
重要性とフィールドの割合に応じて算出したスケールの欠失の値、および削除の各フィールドの表現は、それぞれ次のように利用できる戦略を開発します:
2、不要なフィールドを削除します
クリーニングの各ステップは何をすべきかをバックアップすることをお勧めします、または小規模の臨床試験のデータは、データ処理の全額成功しています。
3、欠けているコンテンツで塗りつぶし
1)人工)は手動で充填(充填しました
人工は、サービス情報に基づいて満たされます。
2)特別な値が満たされた(治療)特別値として属性値がありません
他の属性値とは異なる特殊な属性値の処理、などのヌル値。すべてのNULL値と同じように「不明」満たされています。中間または一時的な充填などの一般的な手順。
DF [ ' 特集' ] .fillna(' 不明'、インプレース=真)
3)統計でいっぱい
ミス率が低い(95%未満)とあまり重要である場合、充填は、データ分布の状況に応じ。
一般的な充填統計:
-
平均:
データのための変数の平均値と欠落値を転嫁するために、均一な分布と一致しています。
-
中位数:
データが存在する歪んだ分布の場合、中央値は、欠損値転嫁します。
-
众数:
離散の機能が欠損値のモードを埋めるために使用することができます。
平均充填方法:
非数値属性に属性と属性値の設定された初期データを別々に処理します。
#場合は、ライブラリ操作をパンダ ディスプレイ(df.head(10 )) #のプレ充填データ Featurel特長2レーベル 0 1.0 A. 1 。1. 1 2.0 A 2 A 3.0。1 。3 C 4.0。1 。4 AのNaN 3。1 。5 2.0 なし0 。6 3.0 B 0 。7 3.0 なし0 。8 のNaN 3 B 0 。9 NaN 3をB 0 #平均充填 DF [ ' Featurel ' ] .fillna(DF [ ' Featurel' ] .Mean()、インプレース= TRUE) #の中央値は、充填された DFを[ ' 特長2 ' ] .fillna(DF [ ' 特長2 ' ] .mode()。ILOC [0]、インプレース= TRUE) ディスプレイ(df.head ( 10 )) #データ充填後 ラベルFeaturel特長2を 0 1.000000 A. 1 。1. 1 A 2.000000 2 3.000000 A. 1 。3 4.000000℃で1 。4 2.571429 A. 1 。5 2.000000 A 0 。6 3.000000 B 0 。7 3.000000 A 0 8 2.571429 B 0 9 2.571429 B 0
条件平均充填方法(条件付き平均コンプリータ)。
この方法では、平均化/モード/データ・セット内のすべてのオブジェクトの中央から取られていないが、決定は、オブジェクトの同じ属性値を有する対象から得られました。
#条件平均值填充 DEF condition_mean_fillna(DF、LABEL_NAME、FEATURE_NAME): mean_feature_name = ' {}平均' .format(FEATURE_NAME) group_df。。= df.groupby(LABEL_NAME).mean()reset_index()リネーム(列= {FEATURE_NAME :mean_feature_name}) DF = LABEL_NAME、=どのように= pd.merge(DF、group_df、' 左' ) df.loc [DF [FEATURE_NAME] .isnull()、FEATURE_NAME] = df.loc [DF [FEATURE_NAME] .isnullを()、mean_feature_name] df.drop(mean_feature_name、インプレース =真、軸= 1 ) リターンDF のDF= condition_mode_fillna(DF、' ラベル'、' 特長2 ')
4)モデル予測を充填しました
御馳走充填不足している分野は、予測と人口ために、分類/回帰モデルを確立し、トレーニングデータとしてラベルとして充填するフィールド、ノー・ミッシング・データを使用してください。
距離の最近傍(KNN)
ユークリッド距離は、欠落データサンプルを推定するために、最新のKサンプル、これらのK値/投票の重み付け平均からのデータサンプルを欠落していると決定された第1または相関分析です。
sklearn.neighbors インポートKNeighborsClassifier、KNeighborsRegressor DEFを(。x_train、y_train、テスト、K = 3、分散= knn_missing_filled :TRUE) '' ' @param x_train:いいえ欠落データセット値 @param y_train:充填される欠損値フィールド @paramをテスト:行方不明満たされる値のデータ・セット '' ' IF 分散: CLF = KNeighborsClassifier(N_NEIGHBORS = K、重み= " 距離" ) それ以外: CLF = KNeighborsRegressor(N_NEIGHBORS = K、重み= " 距離" ) clf.fit(x_train、 y_train) リターン test.index、clf.predict(テスト)
回帰(回帰)
完全なデータセット、回帰式に基づいています。充填されるために、未知のプロパティ値、推定値を推定する式にオブジェクトのNULL値、既知の特性値を含みます。変数が直線的に関連していない場合にはバイアスの推定値をリードします。一般的に、線形回帰を使用していました。
4)再アクセス
指標のいくつかは非常に重要とレートが欠落している場合、それは取る必要があるだろうし、関連するデータを取得するために他のチャンネルがある場合は担当者やビジネスの人々の数は、理解しています。
第三に、前記タイプ分類処理:ダミー変数がコーディング
参考リンク:https://www.cnblogs.com/juanjiang/archive/2019/05/30/10948849.html
機械学習では、このようなロジスティック回帰などのほとんどのアルゴリズムは、サポートベクターマシンSVMは、傍アルゴリズム最寄りのkは、専用のワード処理アルゴリズムに加えて、他のアルゴリズムはに収まる、テキストはsklearnで処理することができないだけで数値データを処理することができますすべての入力配列や行列を必要とする場合、インポート文字データ型にことはできません(実際ステープルズベイズの決定木に手書きのテキストを処理することができますが、規定はsklearnの数値を導入する必要があります)。しかし、現実には、データ収集時における多くのラベルと機能が完了すると、番号がパフォーマンスに基づいていません。例えば、資格の値が[「小学校」、「ジュニア」、「高校」、「大学」]することができ、お支払いは[「アリペイ」、「現金」、「マイクロ手紙」]などが含まれていてもよいです。この場合、データはアルゴリズムとライブラリを適応させるようにするために、我々はデータを持っていることが、符号化、で、数値データ型への変換テキストを。
preprocessing.LabelEncoder :タグ固有の数値分類を分類するために変換することができます。
preprocessing.OrdinalEncoder :特別な機能は、分類の分類特性値に変換することができます
preprocessing.OneHotEncoder :ワンホットエンコーディングは、ダミー変数を作成します
第四に、前記連続工程:バイナリセグメント
-
sklearn.preprocessing.Binarizer
連続変数を処理するための閾値バイナリデータ(0または1〜特徴量)。しきい値マップよりも大きいが1であり、そして以下の閾値0に等しいがにマッピングされます。デフォルトのしきい値は、すべての機能が正の値にマッピングされ、0です。二値化は、テキストカウントデータ上の一般的な操作で、アナリストは、現象やないの存在を考慮するだけで判断することができます。それはまた、(例えば、設定をモデリングベルヌーイ分布ベイズを使用して)ステップを前処理ブール推定の確率変数とみなすことができます。