アクセスカウンター

  • 417本記事閲覧者数   👀💡:
  • 4今日の足あと    🦶💮:
  • 28967サイト訪問者数(累計)🦶💡:

python 機械学習 プログラミング

[機械学習](python)アヤメの分類(TensorFlow)

2019-03-24

 

どうも、solobochiです。

 

 

だいぶ前にお試し的にやってみたTensorFlowアヤメの学習について、
(主に自分の覚え書きのために)まとめます。

 

目次

  1. 方針
  2. 手順1 ライブラリ&データセットのインポート
  3. 手順2 モデルの作成
  4. 手順3 学習の実行
  5. 手順4 予測&評価
  6. 実行結果
  7. ソース

 



 

【概要】

  • アヤメの種類を機械学習によって分類する。

 

・アヤメの種類とは?

1.Setosa(檜扇菖蒲)
2.Versicolour(ブルーフラッグ)
3.Verginica(バージニカ)
の3種類。

違いは、、よく分からない。
Wikipediaによれば、、、。Versicolourは薬草かな?
Versicolour、Verginicaはアメリカの種らしい。

 

・特徴量は?

1.sepal length(がく片の長さ)
2.sepal width(がく片の幅)
3.petal length(花びらの長さ)
4.petal width(花びらの幅)
の4変数。

これらの情報をもとにして、アヤメの種類がSetosaなのか、Versicolourなのか、
いやいやはたまたVerginicaなのか、を推測する。
ちなみに、がく片、というのは、花びらの下の葉っぱのような部分のこと。

※画像の出典 小学館

 



 

では、早速。

 

と、その前に、

 
 

私の環境

使用環境

  • Macbookpro(macOS10.14.2)
  • python3.6.6
  • VisualStudioCode1.32.3

 
 
 
 

【方針】

  • kerasのSequentialモデルを使って学習、分析を実施する

 

はてな

※kerasとは?

👉TensorFlow上で動く機械学習フレームワーク、ニューラルネットワークライブラリ。
TensorFlowKerasChainerScikit-learnTorchAmazon Machine Learningなど

はてな

※Sequentialモデルとは?

👉入力層、中間層、出力層からなる学習モデル。(a linear stack of layers)
入力層にインプットデータを渡して中間層を経て学習して出力層でアウトプットする。
KerasのSequentialモデルのガイド :https://keras.io/getting-started/sequential-model-guide/

 
 

改めて、
では、早速。

 

 

学習の流れは以下の通り。

 

step
1
ライブラリ&データセットのインポート

step
2
モデルの作成(今回はSequentialモデル)

step
3
学習の実行

step
4
予測&評価

 
 
 
 
 

<手順1>ライブラリ&データセットのインポート

・ライブラリのインポート⚠️💡使用するライブラリは、keras、tensorflowのみ

※事前にkeras、tensorflowをインストールしておく必要があります
└ー環境構築についてはこちらの記事を参照。

【参考】⬇️python仮想環境構築について👇

https://solobochiblog.com/2019/01/python%E4%BB%AE%E6%83%B3%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%EF%BC%88for-mac%EF%BC%89/

 

・データセットのインポート

👉scikit-learnからデータセットをインポートする

※irisはアヤメという意味

 



 
 
 
 
 

<手順2>モデルの作成

・入力層:4層、中間層:32層のモデルを構築する

👉入力層(=インプット)は上述したように、がく片の長さ、がく片の幅、花びらの長さ、花びらの幅の4層
👉活性化関数にはrelu関数を用いる

※Denseとは     :ニューラルネットワークの定義!
※Activationとは  :活性化関数のクラス
※relu関数とは  :活性化関数の1つ。
-                                入力値=<0 なら0、入力値>=0なら入力値そのまま出力
※活性化関数とは:ニューラルネットワークで最終的に出力値を決定する関数

 

 

・出力層:3層(アヤメの種類)

👉出力層の活性化関数にはsoftmaxを用いる

※lossとは     :コスト関数(実際の答えとどれくらい離れているかを計測するために使う関数)
※optimizerとは :最適化手法(SGD確率的勾配降下法、Adagrad、Adam etc)
※metricsとは :評価方法("metrics"の直訳は指標)(Accuracy:正解率、Precision:精度、Recall、検出率、F値:F-measure)今回は正解率(Accuracy)を採用。

 

※画像はこちらの記事より引用

 
 
 
 
 
 

<手順3>学習の実行

・訓練データとテストデータの分割

👉train_test_split関数を使って分割
(※訓練データ、テストデータはランダムに選ばれる)
(※random_stateを指定すると選定される訓練データを固定できる)

※train_data  :訓練データ
※test_date   :テストデータ
※train_label  :訓練データの正解ラベル
※test_label  :テストデータの正解ラベル

 

・学習の実行!!

👉model.fit(x,y,batch_size=,epochs=)

※epochs  :訓練データについて繰り返し実行する回数(全件で1単位×epochs回数)
※batch_size:データセットを分割したサイズ(デフォルトは32。今回は150のデータを4:1に分割した120のデータについて、32ずつのデータに分割して学習)

 
 
 
 
 
 

<手順4>予測&評価

・評価の実行

👉model.evaluate(x,y,batch_size=,verbose=)

 

 




 
 
 
 
 

<実行結果>

実行結果は以下の通り。

精度は、93.3%となりました。

ちなみに、
もう一度実行すると、、

96.6%でした。

上述の、train_test_splitでrandom_stateを固定しなかったため、
訓練データの選び方によって若干の誤差が生まれています。

 
 
 
 
 
 

<ソース>

・ayame.py

 

 

 

(やってみてから結構な時間が経ってしまって記事にするのが若干面倒でした。バタバタしていて後回しになったいたけれど、学びながらアウトプットしていくべきだな、と反省。。。)

 

 
 

以上

 
 
 
 

⬇️他にもよく見られている記事⬇️

最も訪問者が多かった記事 10 件 (過去 7 日間)
  • この記事を書いた人
  • 最新記事
solobochi

solobochi

(名前):solobochi

(説明)
都内在住の独身アラサー男子
新卒で大手IT企業へ就職して気付けば10年。
このままではマズいという強烈な危機感から会社を休職。


🔸使命に生きたい
🔸好きなひとと好きなことで生きていきたい
これを人生懸けて実現すべく、人生模索中の日々


(Like)
🔹最適化することが好き
🔹PDCAを回すのが好き


(当サイト)
日々思うことを徒然と発信
└(例)
・学びのアウトプット
・投資・資産運用
・プログラミング
・資格試験の対策
・セミナーのレビュー
・書評
etc...

詳しくは自己紹介記事にて。
自己紹介①

おすすめ記事

1

  どうも、solobochiです。     先日、PMP試験に無事合格しました。 振り返り記事のPart2です。     目次 前日・当日の流れ 勉 ...

2

  どうも、solobochiです。   2014年からなのでもうかれこれ6年弱、株や投資信託への投資をしています。 株を始めた頃は社会人5年目、ようやく仕事にも余裕が出てきた頃。 ...

3

  どうも、solobochiです。     昔から読書は好きで、ルーツを辿ると小学生の頃電車通学で、地下鉄丸ノ内線の終点からほぼ終点まで通っていたためその時間にいつも本 ...

4

    どうも、solobochiです。   2019年に入ってからというもの、休日は割とpython触ってます。といってもまだ簡単なサンプルコードをなぞるだけですが。 ...

-python, 機械学習, プログラミング
-, , ,

Copyright© そろボチ , 2020 All Rights Reserved Powered by AFFINGER5.