アクセスカウンター

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

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

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

更新日:

 

どうも、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仮想環境構築について👇

python仮想環境構築(for Mac)

 

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

👉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

気づけば社会人10年目のアラサー。 いつのまにかまわりが結婚→出産→マイホーム、と順調に”しあわせ家族計画”を進めていくのを横目に見ながら、ふと人生見つめ直し、、、結果、絶賛模索中の日々🐠🏃‍♂️----------------- 学んだことのアウトプットや、日々つらつら思うことを整理して残しておくような雑記ブログ(にするつもり、、、、)(as U like / as I like / write freely)-----------------ただし如何せん不器用で、1つ1つ丁寧に積み上げていかないと理解できないので学習は遅い😓-----------------2018年東大松尾研DeepLearning講座受講。 2019年度データアントレプレナーフェロープログラム参加中。

おすすめ記事

1

  はじめまして solobochi(そろボチ)です。   生まれも育ちも東京で、大学も会社も東京です。ずっと東京にいます。 社会人になってボチボチ約10年。 バリバリの文系ですが ...

2

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

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

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