1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

社内勉強会 機械学習入門(7.アヤメを分類してみよう)

Last updated at Posted at 2019-09-03

今日のテーマは、「アヤメを分類する機械学習プログラム」です。(これも有名な題材ですね。)

題材

アヤメを分類するプログラムです。
アヤメの品種を分類するのに関係しているデータがGitHubに公開されているので、このデータ(csvファイル)をダウンロードして使いましょう。

アヤメデータのCSVデータ
↑をクリックし、ブラウザに表示されたCSVデータを「右クリック」して保存してください。
ファイル名は、「iris.csv」とし、C:\ml-introの直下に保存 してください。

データを見てみよう

ヤマメの分類に関係する特徴が数値化されていますね。
2019-09-03_13h02_06.png

<アヤメデータの内容>

カラム名 説明
SepalLength がく片の長さ
SepalWidth がく片の幅
PetalLength 花びらの長さ
PetalWidth 花びらの幅
Name アヤメの品種名

分類に関係する 特徴 は、「がく片の長さ」「がく片の幅」「花びらの長さ」「花びらの幅」の4つありますね。
「アヤメの品種名」は、正解ラベルです。

アヤメの品種としては、「Iris-Setosa」「Iris-Versicolor」「Iris-Virginica」の3つに分類されるそうです。
2019-09-03_13h17_41.png
(画像は、https://www.datacamp.com/community/tutorials/machine-learning-in-r より引用)

では、未知のデータに対し、3つのうちのどれかに分類する機械学習プログラムを書いていきましょう。

ゴールまでのステップ

  1. 「iris.csv」を読み込む。
  2. 読み込んだアヤメのCSVデータには、正解ラベルが付いているので分離する。
  3. 全データのうち70%を訓練用データに、30%を判定用データに分ける。
  4. 訓練用データを使って学習させる。
  5. 判定用データ(未知のデータという想定)を与え、正しく分類できたか?を評価する。

学習に使うアルゴリズムは、サポートベクターマシンを使います。
アルゴリズムの選定については、↓の情報がわかりやすと思いました。
[参考情報]https://engineers.weddingpark.co.jp/?p=872

ここからが本題! 機械学習プログラムを書いてみよう

先に「Pandas」という Pythonでデータ分析を効率的に行うためのライブラリ をインストールしましょう。
(データの読み込みや統計量の表示、グラフ化などが楽にできる。)
$ pip install pandas

必要なライブラリをインポート

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

【Step1】アヤメデータの読み込み

# 【Step1】アヤメデータの読み込み
iris_data = pd.read_csv("iris.csv", encoding="utf-8")

【Step2】読み込んだアヤメデータには、正解ラベルが付いているので分離する

# 【Step2】読み込んだアヤメデータには、正解ラベルが付いているので分離する
y = iris_data.loc[:,"Name"]
x = iris_data.loc[:,["SepalLength","SepalWidth","PetalLength","PetalWidth"]]

【Step3】全データのうち70%を訓練用データに、30%を判定用データに分ける。

# 【Step3】全データのうち70%を訓練用データに、30%を判定用データに分ける。
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, train_size = 0.7, shuffle = True)

【Step4】学習する(アルゴリズムは、サポートベクターマシン(クラス分類)の1つであるSVCを使う。)

# 【Step4】学習する(アルゴリズムは、サポートベクターマシン(クラス分類)の1つであるSVCを使う。)
clf = SVC()
clf.fit(x_train, y_train)

【Step5】評価する

# 【Step5】評価する
y_pred = clf.predict(x_test)
print("正解率 = " , accuracy_score(y_test, y_pred))

2019-09-03_14h06_44.png

正解率=約96%! まあまあでしょうか、、、

まとめ

今回も、前回に引き続き、「機械学習の雰囲気」を感じてもらいました。
徐々に 機械学習プログラムの流れ がつかめてきたのではないでしょうか?
次回は、気象データをもとにした”予測”にチャレンジしてみたいと思います。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?