Main Content

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

ニューラル ネットワークの誤差のヒストグラムをプロットする

この例では、フィードフォワード ニューラル ネットワークを学習させた後に、ターゲット値と予測値の間の誤差を可視化する方法を説明します。

気象観測所ThingSpeak™チャネルからデータを読み取る

ThingSpeakチャネル12397 には、マサチューセッツ州ネイティックにあるMathWorks®気象観測所からのデータが含まれています。データは 1 分ごとに収集されます。フィールド 2、3、4、および 6 には、それぞれ風速 (mph)、相対湿度、温度 (F)、および大気圧 (inHg) のデータが含まれます。thingSpeakRead関数を使用して、チャネル12397 からデータを読み取ります。

data = thingSpeakRead(12397,'Fields',[2 3 4 6],'Numpoints',500,'outputFormat','table');

入力変数とターゲット値の割り当て

入力変数を割り当て、温度と相対湿度から露点を計算し、目標として使用します。温度を華氏から摂氏に変換し、水蒸気 (b) と気圧 (c) の定数を指定します。中間値「ガンマ」を計算し、ネットワークの目標値を割り当てます。

inputs = [data.Humidity'; data.TemperatureF'; data.PressureHg'; data.WindSpeedmph'];
tempC = (5/9)*(data.TemperatureF-32);
b = 17.62;
c = 243.5;
gamma = log(data.Humidity/100) + b*tempC ./ (c+tempC);
dewPointC = c*gamma ./ (b-gamma);
dewPointF = (dewPointC*1.8) + 32;
targets = dewPointF';

2 層フィードフォワード ネットワークの作成とトレーニング

feedforwardnet関数を使用して、2 層フィードフォワード ネットワークを作成します。このネットワークには、10 単位のニューロンをもつ隠れ層が 1 つと出力層があります。train関数を使用して、入力を使用してフィードフォワード ネットワークをトレーニングします。

net = feedforwardnet(10);
[net,tr] = train(net,inputs,targets);

学習済みモデルを使用したデータの予測

ネットワークのトレーニングと検証が完了したら、ネットワーク オブジェクトを使用して、任意の入力 (この場合は 5 番目の入力データ ポイントの露点) に対するネットワーク応答を計算できます。

outputs = net(inputs(:,5))
outputs =

   22.8618

誤差のヒストグラムのプロット

誤差の値を、ターゲット値と予測値の差として計算します。

error = targets - outputs;
number_of_bins = 10;
ploterrhist(error,'bins',number_of_bins);

このプロットは、10 個のビンを含む誤差のヒストグラムを示しています。

参考

関数