ニューラルネットワークを使ったデータの分類

ベクトルデータの分類
正規分布に従う3つのクラスタから,人工的にデータ集合を作成する:
データ集合をプロットする:
訓練データは,点を,それが含まれるクラスタにマップするという規則からなる:
入力をRedGreenBlueに分類する"Class"デコーダを使って,それぞれのクラスタにある点の確率を計算するネットを作成する:
データでネットを訓練する:
各クラス他の中央でネットを評価する:
それぞれのクラスが事後確率0.75に達する特徴空間で等高線を表示する:
拡散化で測定される,分類子の不確定度を,位置の関数としてプロットする:
フィッシャーのIrisデータでロジスティック回帰を実行する.まず訓練データを取得する:
それぞれの例に割り当てる一意のラベルのリストを作成する:
ネットの出力を各クラスの確率として解釈する"Class"デコーダを使って,分類を実行するNetChainを作成する:
NetTrainは,訓練データのクラスラベルを解釈するために,自動的にNetEncoderと一緒にCrossEntropyLossLayerを使う:
入力を分類する:
分類に関連した確率を取得する:
NetMeasurementsを使って,テスト集合で訓練されたネットの分類性能をテストする:
カテゴリデータの分類
カテゴリ値と数値の両方を含むデータ集合に対するロジスティック回帰を実行する.
まず訓練データを取得し,欠損データを含む行を削除する:
データを訓練データと検証データに分ける:
ニューラルネットワークではカテゴリ変数が直接使えないので,配列として符号化しなければならない.
カテゴリ変数をワン・ホット・エンコーディングしたベクトルとして符号化する"Class"エンコーダを作成する:
エンコーダをクラスラベルに適用すると,単位ベクトルが生成される:
それぞれの特徴に対応する入力,およびネットの出力を生存の確率として解釈する"Boolean"デコーダを使って,ネットワークを作成する.
入力特徴は,処理される前にまず連結される:
訓練データでネットを訓練する.NetTrainはネットの出力に自動的にCrossEntropyLossLayer["Binary"]層を加える:
乗客が生き残るかどうかを予測する:
入力に関連付けられた残存確率を取得する:
"class""sex"の組合せに対する年齢の関数として残存確率をプロットする:
NetMeasurementsを使って,検証集合に対する訓練されたネットの正確さを検証する:
メソッド"LogisticRegression"を指定すると,通常正確さはClassifyを使って得た結果に匹敵する:
マルチタスク分類
2つの異なる分類を行うネットを作成することで,マルチタスク学習を実行する.
まず訓練データを取得する:
訓練データは,画像とそれに対する高レベルおよび低レベルのラベルで構成される:
「Label」と「SubLabel」の列から,一意のラベルを抽出する:
500個の特徴のベクトルを生成する基本のたたみ込みネットを作成する:
高レベルおよび低レベルのラベルを別々に分類するNetGraphを作成する:
ネットワークを訓練する.NetTrainは,両方の出力に自動的にCrossEntropyLossLayerオブジェクトを追加し,対応する名前「Label」および「SubLabel」を使って訓練データから目的の値を取り出す:
1つの画像で,訓練済みのネットワークを評価する:
いくつかの画像で,訓練済みのネットワークを評価し,「SubLabel」出力だけを取り出す:
入力画像に対する「SubLabel」出力のクラスデコーダの特性を得る:
ランダムなサンプルから,ネットが「Label」について最高および最低のエントロピー推測を生成する画像を選ぶ:
NetMeasurementsを使って,ネットの両方の出力に対する正確性をテストする:
「SubLabel」推測だけを計算するサブネットワークを作成する:
1つの画像について推測する: