【ディープラーニング実験】データ可視化

目次

1. 実験の紹介

2. 実験環境

3. 実験内容

0.ライブラリのインポート

1.正規化処理

正規化された

 実験内容

2. 正規化されたデータ折れ線グラフを描画します

エラーを報告する

解決する

3. 移動平均 SMA を計算します。

移動平均

実験内容

4. 移動平均折れ線グラフを描く

5. 2 つのグラフを同時に描画する

6. 配列をテンソル tensor に変換する

7. 印刷テンソル


 

 

 

1. 実験の紹介

  • Visualizing the Trend of Random Data Changes
  • 可视化随机数据变化的趋势

 

2. 実験環境

 

conda create -n DL python=3.7 
conda activate DL
pip install torch==1.8.1+cu102 torchvision==0.9.1+cu102 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
conda install matplotlib

 

 

3. 実験内容

0.ライブラリのインポート

     通常の規則に従って、 numpy、matplotlib.pyplot、および torch をインポートします
import numpy as np
import matplotlib.pyplot as plt
import torch

1.正規化処理

正規化された

        正規化処理は、データを特定の範囲 (通常は[0,1]または[-1,1] )にスケールするために使用される一般的なデータ前処理手法です。このプロセスにより、さまざまな特徴や指標が同様の値の範囲を持つようになり、特定の特徴がモデルのトレーニングに過度の影響を与えることを回避できます。

機械学習とデータ分析では、正規化はモデルの収束速度とパフォーマンスを向上させ、特徴スケールの違いによって引き起こされる問題を軽減するのに        役立ちます。たとえば、一部の機械学習アルゴリズム (勾配降下法など) は特徴のスケールに敏感であるため、正規化されていない場合、モデルの収束が困難になったり、不正確な結果が生成されたりする可能性があります。

        一般的に使用される正規化方法には、 Min-Max正規化Z スコア正規化(標準化) が含まれます。

  • 最小-最大正規化は、データを指定された範囲に線形にスケールします。
  • Z スコア正規化では、データの平均と標準偏差を計算することで、データを平均 0、標準偏差 1 の分布に変換します。

 実験内容

    NumPy を使用して 100 個の整数を含む `data.txt` という名前のファイルを読み取り、すべての値を範囲 [0, 1] に正規化し、正規化された配列を小数点以下 2 桁で保存します。

        NumPy を使用して、100 個の整数を含む「data.txt」というファイルを読み取り、すべての値を範囲 [0, 1] に正規化し、小数点以下 2 桁で正規化された配列を保存します。

 

data = np.loadtxt('data.txt')
# 归一化处理
normalized_array = (data - np.min(data)) / (np.max(data) - np.min(data))
# 保留两位小数
normalized_data = np.round(normalized_array, 2)
# 打印归一化后的数组
print(normalized_array)

 

69fe508d25e64c1a9c65597cbfe65306.png

2. 正規化されたデータ折れ線グラフを描画します

         Matplotlib を使用して折れ線プロットを作成します。X 軸は 1 ~ 100 の範囲の正規化配列のインデックスを表し、Y 軸は 0 ~ 1 の範囲の正規化配列の値を表します。

        Matplotlib を使用して、X 軸が 1 ~ 100 の範囲の正規化された配列のインデックスを表し、Y 軸が 0 ~ 1 の範囲の正規化された配列の値を表す折れ線グラフを作成します。

# 创建x轴数据
x = np.arange(1, 101)
# 绘制折线图
plt.plot(x, normalized_array)

# 设置x轴和y轴的范围
plt.xlim(1, 100)
plt.ylim(0, 1)
plt.title("Normalized Data")
plt.xlabel("Index")
plt.ylabel("Normalized Array")
plt.show()

 

エラーを報告する

OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/.

解決する

conda install nomkl

 

e1e293471fad4897a870b45d1da96b3b.png

3. 移動平均 SMA を計算します。

移動平均

        移動平均 (Moving Average) は、一定期間にわたるデータ シーケンスの平均値を計算できるデータ平滑化手法です。この方法では、計算された平均値を継続的に更新することで、出力データをより滑らかにし、ノイズや突然変異の影響を軽減します。

        移動平均には多くの種類がありますが、最も一般的なものは単純移動平均 (SMA) と指数移動平均 (EMA) です。2 つの方法の計算方法は若干異なります。

  1. 単純移動平均 (SMA):
    単純移動平均は、指定された期間内のデータを平均する方法であり、計算式は次のとおりです。

    SMA = (X1 + X2 + X3 + ... + Xn) / n

    ここで、X1、X2、...、Xn は指定された期間のデータであり、n は期間の長さです。

    たとえば、過去 5 日間の単純移動平均を計算するには、5 日間のデータを加算して 5 で割ります。

  2. 指数移動平均 (EMA):
    指数移動平均はデータの加重平均処理方法であり、計算式は次のとおりです。

    EMA = (X * (2/(n+1))) + (EMA_previous * (1 - (2/(n+1))))

    ここで、X は現在のデータ ポイントの値、n は期間の長さ、EMA_previous は前の期間の指数移動平均です。

    指数移動平均では、指数関数的に減衰する重み係数を使用し、最新のデータ ポイントにより多くの重みを与えます。

        移動平均を使用すると、データ系列を平滑化してデータを読みやすくし、ランダムな変動の影響を軽減できます。これは、時系列分析、テクニカル分析、データ予測などの分野でよく使用されます。

 

実験内容

        NumPy をウィンドウ サイズ 5 で使用して、正規化された結果の移動平均を計算します。計算された移動平均値を、「平均値配列」と呼ばれる新しい 1 次元の NumPy 配列に格納します。

        NumPy をウィンドウ サイズ 5 で使用して、正規化された結果の移動平均を計算します。計算された移動平均を新しい 1 次元の NumPy 配列 (「平均配列」と呼ばれます) に保存します。

 

# 计算移动平均值
average_values_array = np.convolve(normalized_array, np.ones(5)/5, mode='valid')
print(average_values_array)

 

4. 移動平均折れ線グラフを描く

    Matplotlib を使用して別の折れ線プロットを作成します。ここで、X 軸は 5 ~ 100 の範囲の平均値配列のインデックスを表し、Y 軸は 0 ~ 1 の範囲の平均値配列の値を表します。

        Matplotlib を使用して別の折れ線グラフを作成します。ここで、X 軸は 5 ~ 100 の範囲の平均配列のインデックスを表し、Y 軸は 0 ~ 1 の平均配列の値を表します。

x_axis = range(5, 101)

# 绘制折线图
plt.plot(x_axis, average_values_array)

plt.xlim(5, 100)
plt.ylim(0, 1)
plt.title('Moving Average Line')
plt.xlabel('Index')
plt.ylabel('Average Values Array.')
plt.show()

 

7da23666f5ad444b95198a444c055c85.png

 

5. 2 つのグラフを同時に描画する

        正規化された配列と平均値の配列の折れ線グラフを、線ごとに異なる色を使用して同じ図に結合します。 

        各線に異なる色を使用して、正規化された配列と平均配列の線プロットを同じプロット内に結合します。

plt.plot(x, normalized_array, color='r', label='Normalized Array Line')
plt.plot(x_axis, average_values_array, color='b', label='Moving Average Line')
plt.legend()
plt.xlim(1, 100)
plt.ylim(0, 1)
plt.xlabel('Index')
plt.ylabel('Value')
plt.show()

e751b1bc39d94149ac897c174d00d501.png

 

6. 配列をテンソル tensor に変換する

   データを再整形して、正規化された配列を 2x50 テンソルに変換します。

        データを再整形して、正規化された配列を 2x50 テンソルに変換します。

normalized_tensor = torch.tensor(normalized_array).reshape(2, 50)

 

7. 印刷テンソル

        結果のテンソルを出力します。

print(normalized_tensor)

0732e4b38e824aa98f36ab959b2ace63.png

 

 

 

 

 

 

おすすめ

転載: blog.csdn.net/m0_63834988/article/details/132679436