データの正規化
説明
[データの正規化] タスクでは、z スコアなどのセンタリングおよびスケーリング メソッドを選択して、データを対話的に正規化できます。このタスクは、ライブ スクリプト用の MATLAB® コードを自動生成します。
このタスクを使用すると、次を行うことができます。
table や timetable などのワークスペース変数内のデータをセンタリングおよびスケーリングする方法をカスタマイズする。
正規化されたデータと比較して入力データを可視化する。
正規化の計算に使用されるセンタリング値とスケーリング値を返す。
その他
関連する関数
[データの正規化] では、関数 normalize
を使用するコードが生成されます。
![](normalize.png)
タスクを開く
[データの正規化] タスクを MATLAB エディターでライブ スクリプトに追加するには、以下を行います。
[ライブ エディター] タブで [タスク] 、 [データの正規化] を選択します。
スクリプトのコード ブロック内に、
normalize
、range
、scale
などの関連キーワードを入力します。コマンドの補完候補から[データの正規化]
を選択します。キーワードによっては、1 つ以上の対応するパラメーターがタスクで自動的に更新されます。
例
同じパラメーターを使用した複数のデータ セットの正規化
ライブ エディターの [データの正規化] タスクを使用して、データ セットを対話的に正規化し、計算されたパラメーター値を返します。その後、そのパラメーターを再利用して同じ正規化を別のデータ セットに適用します。
2 つの変数 Temperature
と WindSpeed
をもつ timetable を作成します。次に、同じ変数をもち、サンプルを 1 年後に取得する 2 番目の timetable を作成します。
Time1 = (datetime(2019,1,1):days(1):datetime(2019,1,10))'; Temperature = randi([10 40],10,1); WindSpeed = randi([0 20],10,1); T1 = timetable(Temperature,WindSpeed,RowTimes=Time1)
T1=10×2 timetable
Time Temperature WindSpeed
___________ ___________ _________
01-Jan-2019 35 3
02-Jan-2019 38 20
03-Jan-2019 13 20
04-Jan-2019 38 10
05-Jan-2019 29 16
06-Jan-2019 13 2
07-Jan-2019 18 8
08-Jan-2019 26 19
09-Jan-2019 39 16
10-Jan-2019 39 20
Time2 = (datetime(2020,1,1):days(1):datetime(2020,1,10))'; Temperature = randi([10 40],10,1); WindSpeed = randi([0 20],10,1); T2 = timetable(Temperature,WindSpeed,RowTimes=Time2)
T2=10×2 timetable
Time Temperature WindSpeed
___________ ___________ _________
01-Jan-2020 30 14
02-Jan-2020 11 0
03-Jan-2020 36 5
04-Jan-2020 38 0
05-Jan-2020 31 2
06-Jan-2020 33 17
07-Jan-2020 33 14
08-Jan-2020 22 6
09-Jan-2020 30 19
10-Jan-2020 15 0
ライブ エディターで [データの正規化] タスクを開きます。最初の timetable を正規化するには、T1
を入力データとして選択し、サポートされているすべての変数を正規化します。
既定では、[データの正規化] タスクは正規化されたデータを返します。タスクの [メソッドとパラメーターの指定] セクションで [中心値とスケール値を返す] を選択して、正規化されたデータに加え、タスクが正規化の実行に使用するセンタリング パラメーター値とスケーリング パラメーター値を返します。
正規化された値、センタリング値、およびスケーリング値は、出力引数 newTable
、centerValue
、および scaleValue
でそれぞれ表されます。
% Normalize Data [newTable,centerValue,scaleValue] = normalize(T1); % Display results figure tiledlayout(2,1); nexttile plot(T1.Time,T1.Temperature,"SeriesIndex",6,"DisplayName","Input data") legend ylabel("Temperature") xlabel("Time") nexttile plot(T1.Time,newTable.Temperature,"SeriesIndex",1,"LineWidth",1.5, ... "DisplayName","Normalized data") legend ylabel("Temperature") xlabel("Time")
set(gcf,"NextPlot","New")
ライブ エディター タスクの出力引数を後続のコードで使用できます。関数 normalize
で最初の正規化のパラメーター値を使用して 2 番目の timetable T2
を正規化します。この手法により、T2
のデータが必ず T1
と同じ方法でセンタリングおよびスケーリングされます。
T2_norm = normalize(T2,"center",centerValue,"scale",scaleValue)
T2_norm=10×2 timetable
Time Temperature WindSpeed
___________ ___________ _________
01-Jan-2020 0.11165 0.084441
02-Jan-2020 -1.6562 -1.8858
03-Jan-2020 0.66992 -1.1822
04-Jan-2020 0.856 -1.8858
05-Jan-2020 0.2047 -1.6044
06-Jan-2020 0.39078 0.50665
07-Jan-2020 0.39078 0.084441
08-Jan-2020 -0.6327 -1.0414
09-Jan-2020 0.11165 0.78812
10-Jan-2020 -1.284 -1.8858
関連する例
パラメーター
入力データ
— ワークスペースからの有効な入力データ
ベクトル | table | timetable
このタスクは、ベクトル、table、または timetable に含まれる入力データに対して実行されます。データは single
型または double
型にできます。
入力データが table または timetable の場合、single
型または double
型の変数をすべて削除するには、[サポートされているすべての変数]
を選択します。single
または double
の変数のうち、削除する対象を選択するには、[指定された変数]
を選択します。
正規化メソッド
— データを正規化するメソッドおよびパラメーター
Z スコア
| ノルム
| 範囲
| ...
データを正規化するためのメソッドおよび関連パラメーターを次のオプションのいずれかとして指定します。
メソッド | メソッド パラメーター | 説明 |
---|---|---|
| 平均が | |
| 中央値が | |
| 正の数値スカラー (既定値は | p ノルムでのデータのスケーリング。 |
| 上限と下限の範囲制限 (既定では、下限は | [a, b] の形式の区間 (ただし、a < b ) へのデータ範囲の再スケーリング。 |
| 該当なし | 中央値が |
|
| 平均が 0 となるようなセンタリング。 |
| 中央値が 0 となるようなセンタリング。 | |
| 指定した数値だけ中央をシフト。 | |
| 数値配列の値、または入力データで指定された table 変数に一致している変数名をもつ table の値を使用して中央をシフト。 | |
|
| 標準偏差でデータをスケーリング。 |
| 中央絶対偏差でデータをスケーリング。 | |
| データの最初の要素でデータをスケーリング。 | |
| 四分位数間範囲単位でデータをスケーリング。 | |
数値スカラー (既定値は 1) | 指定した数値で除算してデータをスケーリング。 | |
| 数値配列の値、または入力データで指定された table 変数と一致する変数名をもつ table の値を使用してデータをスケーリング。 | |
Center and scale | メソッド パラメーター Center および Scale を参照 | 指定したパラメーターを使用してデータをセンタリングおよびスケーリング。 |
詳細
Z スコア
平均が μ、標準偏差が σ の確率変数 X では、値 x の z スコアは です。平均が 、標準偏差が S のサンプル データでは、データ点 x の z スコアは です。
z スコアは、標準偏差に基づいて平均からのデータ点の距離を測定します。標準化されたデータ セットの平均は 0 で、標準偏差は 1 です。また、元のデータ セットの形状プロパティ (同じ歪度と尖度) は保持されます。
中央絶対偏差
データ セットの中央絶対偏差 (MAD) は、次のように、データの中央値 からの絶対偏差の中央値です。。したがって、MAD は中央値を基準としてデータの変動性を示しています。
データに外れ値が含まれている場合、通常はデータの標準偏差を使用するよりも MAD が推奨されます。標準偏差は平均値からの偏差を二乗し、過度に大きな影響を外れ値に与えます。逆に、外れ値の数が少ない偏差は MAD に影響を与えません。
P ノルム
N 個の要素をもつベクトル v の p ノルムの一般的定義は次のとおりです。
ここで、p は任意の正の実数値または Inf
です。p の一般的な値では次のようになります。
p が 1 の場合、結果の 1 ノルムはベクトル要素の絶対値の和となります。
p が 2 の場合、結果の 2 ノルムはベクトルの大きさすなわちユークリッド長になります。
p が
Inf
の場合は、 になります。
再スケーリング
再スケーリングを行うと、数直線に沿って点を伸張または圧縮することで、データ セット内の最小値と最大値の間の距離が変更されます。データの z スコアは保持されるため、分布の形状は同じままです。
データ X を任意の区間 [a, b] に再スケーリングする方程式は次のとおりです。
四分位数間範囲
データ セットの四分位数間範囲 (IQR) は、値が並べ替えられるときの値の中間 50% の範囲を示しています。データの中央値が Q2 であり、データの下半分の中央値が Q1 であり、データの上半分の中央値が Q3 である場合、 になります。
データに外れ値が含まれている場合、通常は全範囲のデータを確認するよりも IQR が推奨されます。なぜなら、IQR では、データの最大 25% および最小 25% の値が除外されるからです。
バージョン履歴
R2021b で導入R2022b: 複数の table 変数のプロット
このライブ エディター タスクの表示で、複数の table 変数を同時にプロットします。データが table または timetable の場合、選択したすべての table 変数をタイル表示チャート レイアウトで一度に可視化するには、[表示する変数] フィールドを設定します。
R2022b: 正規化された変数の追加
入力 table 変数に、正規化されたデータが格納された table 変数を追加します。入力データが table または timetable の場合、正規化されたデータを追加するには、[出力形式] フィールドを設定します。
R2022a: 入力に 100 万個を超える要素がある場合、ライブ エディター タスクは自動実行されない
入力に 100 万個を超える要素がある場合、このライブ エディター タスクは自動実行されません。以前のリリースでは、入力がどのようなサイズでもタスクは必ず自動実行されていました。入力の要素が多い場合、このタスクで生成されたコードは実行にかなりの時間 (数秒間以上) を要することがあります。
タスクが自動的に実行されない場合、自動実行インジケーターが無効になります。必要に応じてタスクを手動で実行するか、タスクの自動実行の有効化を選択することができます。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)