BETA

KerasでIrisを深層学習

投稿日:2020-06-09
最終更新:2020-06-09

これはなに?

  • Kerasを使ってscikit-learnのデータセットにあるアヤメデータを分類する
  • GitHubにnotebookはアップ済み

準備

  • Python3系で実行するので仮想環境を用意する(参考)
  • パッケージのインストール
pip install scikit-learn  
pip install tensorflow  
pip install keras  

実装

  • Jupyter Notebookで書いていく
  • 以下は要点のみ
# 特徴量の標準化  
X = preprocessing.scale(iris.data)  

# ラベルが3種類のカテゴリカルデータなのでone-hotに変換する  
# 0 -> [1, 0, 0]  
# 1 -> [0, 1, 0]  
# 2-> [0, 0, 1]  
y = np_utils.to_categorical( iris.target)  
  • 深層学習では特徴量を標準化(平均0, 分散1)しておくと精度が上がるので事前に変換する
  • ラベルも離散値よりも0と1でのone-hotデータにしておくと使い勝手が良いので事前に変換する
# モデルの構築  
model = Sequential()  
model.add(Dense(16, input_dim=4)) # 特徴量の次元が4なので、入力4次元、出力16次元の隠れ層を全結合(Dense)させる  
model.add(Activation('relu')) # 活性化関数(ReLU)を追加する  
model.add(Dense(3)) # 出力は3次元で全結合(Dense)させる  
model.add(Activation('softmax')) # 多クラス分類用の活性化関数(ソフトマックス)を追加する  
model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy']) # モデルのコンパイル。損失関数はラベル値が0,1のカテゴリカルデータ向け  
  • Kerasを使った深層学習の要所はここのみ
  • TensorFlowをそのまま使うとモデルの構築が面倒なのをKerasは使いやすいようにラッピングしている
  • どういう方式でモデルをつくるかを宣言して、あとは層と活性化関数を追加していって、最後に学習方法を決めるだけ

結果

  • 損失=0.17109589278697968, 正解率=1.0(=100%正解)となった

参考

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@yoko8maの技術ブログ システムと人間について

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう