機械学習 - 基本概念 - scikit-learn - データの前処理 - 1

目次

scikit-learn をインストールする

仮想環境にインストールすることを忘れないでください。ここではanaconda3をお勧めします

pip install scikit-learn

リンク: Windows 10 - Python の仮想環境 Virtualenv - グローバルな python 環境の切り替えの問題

ここでは、scikit-learn フレームワークのコア モジュール - sklearn、scikit ではありません

import sklearn

テスト環境: (これは仮想環境であることに注意してくださいVirtualenv)

操作系统: Window 10
工具:Pycharm
Python: 3.7
scikit-learn: 1.0.2
numpy: 1.21.6
scipy: 1.7.3
threadpoolctl: 3.1.0
joblib: 1.1.0

用語理解

1. 機能 (機能) とサンプル (サンプル/デモ) の違いは何ですか?

  1. サンプルは複数の機能で構成され、機能はサンプルの要素です。
  2. データ処理では、軸パラメーター axis を 0 または 1 に設定することにより、サンプルに対して特徴ベクトル操作 (垂直) またはサンプル特徴操作 (水平) を実行することを選択できます。
  3. サンプルは水平要素を指し、機能は垂直要素を指します。この文は、axis = 0 または axis = 1 を設定すると、0 の場合は垂直の特徴要素を指し、1 の場合は水平のサンプル要素を指すことを意味します。サンプル A とサンプル B の場合、サンプル A とサンプル B の両方が特徴 a、b、c を持ち、軸 = 0 の場合、サンプル A とサンプル B の特徴は [Aa, Ba], [Ab, Bb] の順に取得されます。 ], [ Ac, Bc], axis = 1 の場合、サンプル A の特徴 [Aa, Ab, Ac] を順に取得し、次にサンプル B の [Ba, Bb, Bc] を取得します。

具体的なデモンストレーション:

0|1		  	a   	b		c   
样本 A		Aa		Ab		Ac
样本 B		Ba		Bb		Bc

  1. 特定の行列のすべての入力値 x は、最終的にアルゴリズムによって変換され、出力値の特徴 y が取得されます

2. モデルのコンセプトについて

いわゆる機械学習モデルは、本質的に、その役割が達成することである機能ですXを標本のラベル付き値f ( x ) → xf(x) \rightarrow xf ( x )一般的なxのマッピング
: データから学習でき、特定の機能 (マッピング) を実現できる機能。
さらに専門的な要約:モデルは、指定された仮説空間で学習戦略を決定し、最適化アルゴリズムを介して学習することによって学習された、入力から出力へのマッピングです。

実際にプラスチックで作られたキャラクターや機械のモデルがいくつか見られますが、これはマッピングに相当します.私たちの頭の中の x の考えから、プラスチック モデル y にマッピングされ、3D モデルが存在します. . Build a model y to map x を頭の中で実行しますが、機械学習のモデルは同じですか?
それは自然なことです未知のデータ y を既知のデータ x にマッピングします。予測モデルを構築し、モデルは、アルゴリズムをツールとして使用して、教師あり、教師なし、強化、およびその他の学習戦略を通じてモデルを構築することです。

実践的な理解: プログラミング言語の関数f ( x ) f(x)f ( x )、入力行列XXX、これはサンプルXXX、戻り値はモデルからサンプルへの変換されたマッピングYYY は予測値です。

1. 機械学習の概念

機械学習は、次の 3 つのタイプの学習に分けられます。

  1. 教師あり学習
  2. 教師なし学習
  3. 強化学習

1.教師あり学習

教師あり学習( Supervised Learning) のタスクは、モデルが任意の入力に対して対応する出力を適切に予測できるようにするモデルを学習することです。
つまり、トレーニング データ セットを使用してモデルを学習し、そのモデルを使用してテスト サンプル セットを予測します。

一般的な理解: 各データ ポイントはラベル付けされているか、カテゴリまたはスコアに関連付けられています。

例(カテゴリ):画像を入力し、画像内の動物が猫か犬かを判断します。

例 (スコア): 大量のデータから中古車の販売価格を予測します。

教師あり学習の目的は、多数のサンプル (トレーニング データと呼ばれる) を学習して、将来のデータ ポイント (テスト データと呼ばれる) について予測することです。

分類と回帰、基本的に言えば、分類はラベルを予測することであり、回帰はを予測することです。

  • 分類は、サンプルの個別のクラス ラベルを予測する問題です。

  • 回帰は、与えられたサンプルからの連続出力量を予測する問題です。

この引用、著者の個人的な理解では、モデルには入力値と出力値、つまりXXがあるということですXYYY、このモデルの一般法則がカウントされると、この統計一般法則を使用して他の入力値を予測できますXXXの尤度、つまり出力値YYYもちろん、この点は実は非常に厄介なのですが、現実の世界では、モデルの法則だけでは結果を予測することはできないので、モデルが多ければ多いほどよいとしか言​​えません。

ために分類、 それはそうですねポイント予想、線のようではなく、ポイントごとに予測されます。
戻る線形予測、例えば、株の線形変化が予測できる、と個人的には思っています。

要約:

教師あり学習、人々はそれを養うモデルを見つけ、モデルの精度をさらに観察する必要があります。つまり、アルゴリズムのパフォーマンスと精度を監視および観察する必要があります。アルゴリズムのパフォーマンスとモデルの精度を向上させることを意味する、私たちの監督の下で一生懸命勉強し、パフォーマンスを向上させます。
したがって、モデルを必要とするものはすべて教師あり学習です。

2.教師なし学習

教師なし学習( Unsupervised Learning) は、データを直接モデル化することです。事前にラベル付けされたトレーニング例がない場合、使用されるデータには属性またはラベルの概念がありません。入力データに対応する出力は事前にわかりません。

入力データを自動的に分類またはグループ化して、データのパターンとルールを見つけます。

例: クラスタリング

要約:

教師なし学習、子供たちは独学である必要があります。学習を監督する必要はありません。実生活の変化により、自立できるようにする必要があります。現実の完全なモデルを持っている可能性は低く、特定の状況では彼らは学習するので、現実的なサンプル機能を自律的に収集し、変数を自動的に入力して、モデルを次々と取得し、評価することによって、自己学習する能力が必要です。モデルのパフォーマンスまたは精度など。

3. 強化学習

強化学習( Reinforcement Learning) は、期待される利益を最大化するために、環境に基づいてどのように行動するかを強調する機械学習の分野です。そのインスピレーションは、心理学における行動主義の理論、つまり、生物が環境によって与えられる報酬または罰の刺激の下で刺激に対する期待を徐々に形成し、最大の利益を得ることができる習慣的な行動を生み出す方法から来ています.

要約:

強化学習、子供たちが独立して学習することを学んだ後、彼らにインセンティブ学習報酬尺度を与えると、彼らはストレスの多い行動を形成する可能性があり、子供たちは彼らにとって有益なことを簡単に行うようになります。壁にぶつかると回避に有利な選択が実行されるので、これを利用して、この考え方を満たす機械学習アルゴリズム、つまり強化学習を設計できます。

3つの学びの特徴まとめ

教師あり学習、教師なし学習、および強化学習には、それぞれ異なる特徴があります。

教師あり学習label(マーク)はlabelどのような入力がどのような出力に対応するかをアルゴリズムに伝えるもので、一般的なアルゴリズムは分類、回帰待って;
教師なし学習はなしlabel(マーク付き)、一般的なアルゴリズムは次のとおりです。クラスタリング
強化学習期待される利益を最大化するために、状況に基づいて行動する方法を強調します。

scikit-learn の説明

scikit-learnライブラリの主な機能は、次の 6 つの部分に分かれています。分類、回帰、クラスタリング、次元削減、モデル選択、データ前処理

分類、回帰 -->教師あり学習
クラスタリング -->教師なし学習

2. 機械学習の基本的な実践ロジック

1. データを収集する

データ集はここでは紹介しませんし、筆者もまだ手を出していません。

2. データの前処理 (前処理)

現実の世界では、機械学習アルゴリズムでは理解できない大量の生データを処理する必要があることがよくあります.機械学習アルゴリズムが生データを理解するには、データを前処理する必要があります.

いわゆる前処理 (正規化とも呼ばれる) は、実際には複雑なデータから価値のあるコンテンツを抽出しています。正規化または標準化は、ここで使用されます。

  • データの正規化/標準化 - 元のデータをトレーニング データとテスト データに分割し、テスト データはテスト データとして使用される元のデータの一部です (これは教師あり学習では非常に一般的です)。

前処理アルゴリズム:

正規化:

1.正規化()

3. 次元削減

一般的に、機械学習を行う場合、データが多ければ多いほど、次元が多く、考慮する要素が多いほど、分類と回帰の予測はより正確になります。計算が遅くなるので、ここでは予測の精度と計算速度をどう天秤にかけるかを考えます。
最大限の情報量を確保する場合は、次元を減らして計算時間を短縮します。

次元を減らすと視覚化がしやすくなります. 3次元を超えると人間にはわかりにくくなるので, 次元を減らすことでデータをより視覚化できます.計算効率の向上 (機械学習の最も基本的なポイント)

次元削減アルゴリズム:

4. 分類、回帰、クラスタリングの 3 つの処理方法のいずれかを選択します。

分類アルゴリズム:

回帰アルゴリズム:

クラスタリング アルゴリズム:

5.機種選定

3. データの前処理 - データ分析

詳細データの正規化 - 正規化 / 標準化

データの正規化は、データ マイニングの基本的な作業です。評価指標が異なれば次元も異なることが多く、数値の差が非常に大きくなる場合があり、それらを処理しないとデータ分析の結果に影響を与える可能性があります。指標間の次元(異なる物理量)と値の範囲の違いの影響を排除するために、標準化(データを前処理)し、データを比例してスケーリング(正規化)し、特定の領域に分類する必要があります。包括的な分析。たとえば、給与収入の属性値は[ − 1 , 1 ] [-1,1]にマッピングされます。[ 1 ,1 ]または[0, 1] [0, 1][ 0 ,1 ]内 (これは正規化の例です

データの正規化は、距離ベースのマイニング アルゴリズムにとって特に重要です。ここでの距離に基づくとは、変数出力値間の距離を指します

正規化は正規化または標準化を指します

正規化と標準化の見分け方

正規化標準化これらはすべて、データを変換し、データの元の列を特定の範囲または特定の形式に変換する方法です。具体的には次のとおりです。

正規化: データの正規化は、固有ベクトルの値を調整して、各固有ベクトルの値が同じ値の範囲にスケーリングされるようにする必要がある場合に使用され、データの列が固定間隔 (範囲) に変更されます。間隔は[ 0 , 1 ] [0, 1]です[ 0 ,1 ] 、大まかに言えば、 [ 0 , 1 ] [0,1]へのマッピングなど、さまざまな間隔にすることができます[ 0 ,1 ] は引き続き他の範囲にマッピングでき、イメージは[0, 255] [0,255][ 0 ,255 ]、他のケースは[ − 1 , 1 ] [-1,1][ 1 ,1 ]
標準化: データを平均 0、標準偏差 1 [ 0 , 1 ] [0, 1]の分布に変換します。[ 0 ,1 ]、覚えておいてください。必ずしも正常であるとは限りません。
一元化された: さらに、各元データからこれらのデータの平均値を減算する、ゼロ平均処理とも呼ばれる集中化と呼ばれる別の種類の処理があります。(実際上記の正規化)

よく似た標準正規化があります.これを標準化と言います.実はこの定義は正規化という概念で古くから扱われてきました.標準化と正規化はこれと呼べるのですが,具体的な実装式は.明確に考える必要があります。名前は恣意的なものであり、それらを実装するときは、それらを処理する方法を確認する必要があります。
1 つは比例スケーリングで、もう 1 つは分散スケーリングです。

データの正規化 - 範囲のスケーリング (スケール) とマッピング

scale n. バランス、スケール;; スケール、スケール; 定規、スケール; v ズーム

大まかに言って、標準化正規化同じことがデータの線形変化であるため、死を規定する必要はありません。正規化は[0, 1] [0,1]に進む必要がありますか?[ 0 ,1 ]、i から[0,1][0,1][ 0 ,1 ]の間に 255 を掛けます。どうすればよいでしょうか。概念に縛られないことを忘れないでください、一般的なものは次のとおりです。

1. 最大値と最小値の正規化 (正規化) (Min-Max Normalization) [0,1] / 範囲スケーリング (Scaling)

関数:

正規化の最も一般的なモード 正規化は線形正規化としても知られ、離散正規化としても知られる最小最大正規化は、元のデータの線形変換であり、データ値を[0 , 1 ] [0, 1] にマッピングします。 1][ 0 ,1 ]

変換式は次のとおりです。

X new = X i − X min X max − X min X_{new}=\frac{X_{i}-X_{min}}{X_{max}-X_{min}}バツ新しい_ _=バツマックス_×バツ×、範囲[0,1][0,1][ 0 ,1 ]

  • X i X_{i}バツ: 正規化されるデータを指し、通常は 2 次元行列です
  • X max X_{max}バツマックス_: 各列の最大値の行ベクトル
  • X 分 X_{分}バツ: 各列の最小値の行ベクトル
  • X new X_{new}バツ新しい_ _: 比率の結果を参照しますが、この時点では完全ではありません。以下の式のX scaled X_{scaled}を参照してください。バツスケーリング_ _ _ _

また

X std = X − X . 最小 (軸 = 0) X . 最大 (軸 = 0) − X . 最小 (軸 = 0) X_{std}=\frac{X_{}-X_{.}最小(軸=0)}{X_{.}最大(軸=0)-X_{.}最小(軸=0) )}バツs t d=バツ.ma x ( a x i s = 0 ) X.( a x i s = 0 )バツ×.( a x i s = 0 )

X scaled = X std × ( max − min ) + min X_{scaled}=X_{std}\times(max-min)+minバツスケーリング_ _ _ _=バツs t d×(最大x最小)+min、範囲[0,1][0,1][ 0 ,1 ]

最初はややこしいと思うので、次のように説明します。

  • XXX : 正規化するデータ。通常は次のような 2 次元行列です。
[[4,2,3]
[1,5,6]]
  • バツ 。最小 (軸 = 0) X.最小 (軸 = 0)X。_ ( a x i s=0 ) : 上記の例のように、各列の最小値の行ベクトル[1,2,3]

  • バツ 。max (軸 = 0) X.max(軸 = 0)X。_ max ( a x i s _=0 ) : 上記の例のように、各列の最大値の行ベクトル[4,5,6]

  • 最大最大max x : マッピングされる間隔の最大値。デフォルトは 1 です。状況に応じて変更できます。バインドされません。

  • 分 分min : マッピングされる間隔の最小値。デフォルトは 0 です。状況に応じて変更できます。バインドされません。

  • X std X_{std}バツs t d:比例結果

  • X スケーリング X_{scaled}バツスケーリング_ _ _ _: 範囲[ 0 , 1 ] [0,1]にマッピングされた最終的な正規化された結果[ 0 ,1 ]以上、X std X_{std}バツs t dX scaled X_{scaled}で最後のステップを完了バツスケーリング_ _ _ _分 分分は0 です。

上記の式が何をするのかを平易な言葉で説明しましょう。

  • 最初のステップは、要素から各列の最小値までの距離と、列の最大値と最小値の間の距離の比率を計算することです。これは、実際にデータを[0 , 1 ] [0にスケーリングします。 、1][ 0 ,1 ]間隔で
  • 2 番目のステップは、比率の結果データを同じ比率で指定された[ min , max ] [min,max]にスケーリングおよびマップすることです。[,最大]間隔_

2. 平均正規化 (平均正規化)[-1,1]:

[ − 1 , 1 ] [-1,1]に変換するには[ 1 ,1 ]の場合

X std = X − X 平均 X max − X min X_{std}=\frac{X-X_{mean}}{X_{max}-X_{min}}バツs t d=バツマックス_×X Xミーアン_ _
X scaled = X std × ( max − min ) + min X_{scaled}=X_{std}\times(max-min)+minバツスケーリング_ _ _ _=バツs t d×(最大x最小)+最小、範囲[ − 1 , 1 ] [-1,1][ 1 ,1 ]

  • X std X_{std}バツs t d: 平均の割合を除いた結果
  • X平均 X_{平均}バツミーアン_ _XXを表すXの各列の平均
  • バツ 。最小 (軸 = 0) X.最小 (軸 = 0)X。_ ( a x i s=0 ) : 各列の最小値の行ベクトル
  • バツ 。max (軸 = 0) X.max(軸 = 0)X。_ max ( a x i s _=0 ) : 各列の最大値の行ベクトル
  • X スケーリング X_{scaled}バツスケーリング_ _ _ _: 最終的な正規化された結果、いわゆるマッピングは、本質的にX std X_{std}を拡大しますバツs t d[ − 1 , 1 ] [-1,1]の範囲にマッピングされた数値[ 1 ,1 ]のみ
  • 最大最大max x : マッピングされる間隔の最大値。デフォルトは 1 です。状況に応じて変更できます。バインドされません。
  • 分 分min : マッピングされる間隔の最小値。デフォルトは 0 です。状況に応じて変更できます。バインドされません。

最初の 2 つの正規化方法の適用シナリオ:

  • この方法またはその他の正規化方法 ( Z スコア方法を除く) は、距離測定、共分散計算、およびデータが正規分布に従わない場合に使用できます。たとえば、画像処理では、RGB 画像をグレースケール画像に変換した後、その値は[0 - 255] [0 - 255]に制限されます。[ 0255 ]範囲

最初の 2 つの正規化方法は、シナリオには適用されません。

  • 1, 1.2, 1.3, 1.4, 1.5, 1.6,8.4元のデータに非常に大きなデータまたは小さなデータのごく一部がある場合、ほとんどのデータは正規化後に 0 または 1 に近くなり、( )このデータ グループのように識別度は大きくありません。[min, max]将来、値が現在の属性値の範囲を超えると、システムはエラーを報告し、 min min を再決定する必要があります。最小および最大 最大max ——このデータセットを標準化(normalize) し、正規化後に値が 0 に近いデータセットを取得します. 今後新しいデータが追加された場合、データの最大値と最小値の範囲を超える可能性があります.分分を決定する必要があります最小および最大 最大マックス_

3. 10 進法による正規化 (10 進法による正規化)

関数:

属性値の小数点位置を移動することにより、属性値は [-1, 1] にマッピングされ、移動する小数点位置は属性値の絶対値の最大値に依存します。

変換式は次のとおりです: X new = X 1 0 k X_{new}=\frac{X}{10^k}原始值 / 10^k
ここに画像の説明を挿入
バツ新しい_ _=1 0kX

  • k はXXに依存Xの属性値の最大絶対値
  • 小数スケーリング正規化は、小数点の位置を移動して正規化することです。
  • 小数点を何桁まで移動するかは、XXによって異なります。Xの属性の値のうち最大の絶対値。

ここに○○Xの属性は、
つまり、行列の絶対値の後に最大の入力値要素 x を探し、適切な対数関数メソッド log10 を使用します。底は 10 で、値は絶対値の最大値 max(x) です。つまり、log 10 max ( X ) = k log_{10} max(X) = kログ_ _10最大x ( X )=k、k の値を取得します。注意すべきことの 1 つは、kkkの値は切り上げなければなりません. ここで提供される方法の 1 つはnumpyモジュールのceil(k)方法完全な式:X new = ceil ( log 10 max ( abs ( X ) ) ) X_{new} = ceil(log_{10} max(abs(X)))バツ新しい_ _=セイルログ_ _ _ _10max x ( abs ( X )))絶対abs()値関数

正規化を使用する場合

  • 出力結果の範囲に要件がある場合は、正規化を使用します。
  • データが比較的安定しており、極端な最大値と最小値がない場合は、正規化を使用します。

データ正規化標準

1. ゼロ平均正規化 (標準化) (z スコア標準化) / 平均除去 (平均除去)

通常、各特徴の平均値を削除して、特徴の平均値が 0 になるようにします (つまり、標準化された処理)。そうすることで、フィーチャ間のずれが解消されます ( bias)。

関数:

ゼロ平均正規化は、標準偏差標準化とも呼ばれ、処理されたデータの平均値が 0 で、標準偏差が 1 です。現在、最も一般的に使用されているデータ標準化方法です。

変換式は次のとおりです。 (原始值 - 均值)/ 标准差

X new = X − X mean X std X_{new}=\frac{X-X_{mean}}{X_{std}}バツ新しい_ _=バツs t dX Xミーアン_ _

記号の説明:
X new X_{new}バツ新しい_ _は標準化された値
X 平均 X_{平均}バツミーアン_ _XXX X std X_{std}の平均
バツs t dXXXの標準偏差

意義:

  • 変換されたデータの平均は 0、分散は 1 です。
  • 結果には実際的な意味はなく、比較のためにのみ使用されます

アプリケーション シナリオ:

  • 分類およびクラスタリングアルゴリズムでは、類似度を測定するために距離を使用する必要がある場合、または次元削減のために PCA テクノロジを使用する必要がある場合に、Z-score standardizationパフォーマンスが向上します。

正規化を使用する場合

  • データに外れ値やより多くのノイズがある場合、標準化を使用すると、集中化によって外れ値や極端な値の影響を間接的に回避できます。

正規化および標準化データ リンク:

ノーマライゼーションを理解するには?

最大最小正規化

標準化と正規化、混同しないで、データ変換を完全に理解する

一般的に使用されるデータの正規化方法: 最小最大正規化、ゼロ平均正規化など。

データマイニング実験 (1) データの正規化 [最小最大正規化、ゼロ平均正規化、小数スケーリング正規化]

[機械学習] データの正規化 - MinMaxScaler の理解

Python での axis=0 axis=1 の理解

参考リンク:

6_Python 機械学習ライブラリ scikit-Learn の紹介

次章ジャンプリンク

機械学習 - scikit-learn - データの前処理 - 2

おすすめ

転載: blog.csdn.net/qq_42701659/article/details/124446453