[機械学習]アイリスの分類問題をやってみよう[Python]

Python プログラミング

こんにちは。Kakeです。

僕はPythonで機械学習を独学しています。

以下のオライリーの「Pythonではじめる機械学習」という参考書で学んでいます。

そこで備忘録的にアイリスの分類問題について書いていこうと思います。

[機械学習]アイリスの分類問題とは[Python]

[機械学習]アイリスの分類問題とは[Python]画像

アイリスの分類問題というのは機械学習を学ぶにあたり、よく出てくる問題だと思います。

オライリーの参考書ではもちろん、youtubeで学習していた時にも出てきました。

アイリスの分類とは

アイリスとは花のことです。

アイリス

アイリスにも種類があって今回は3つの種類に分けたいという目的があります。

  • setosa
  • versicolor
  • virginica

上記の3つの種類です。

そして分けるためにはいくつかのデータが必要ですね。

  • 花弁の長さと幅
  • ガクの長さと幅

この4つの項目で分類していきます。

これからやることを簡単にまとめておくと、

  • アイリスを3つの種類に分類したい
  • 既存のデータ(花弁とガクの長さと幅)から機械学習
  • 新しいアイリスのデータから種類を予測する

こんな感じですかね。

Pythonでデータを読み込む

まず、アイリスのデータを読み込みます。

from sklearn.datasets import load_iris
iris_data = load_iris()

まず、load_iris関数をインポートします。その次に、iris_dataという変数を使ってirisオブジェクトを返してあげましょう。

アイリスデータの中身を見てみる

iris_data.keys()

これで見てみると

  • data→アイリスのデータ(長さと幅)
  • target→アイリスの分類先(0,1,2で行う)
  • target_names→アイリスの種類の名前
  • DESCR→データセットの説明
  • feature_names→特徴量の名前(花弁の長さなど4つ)
  • filename→ファイル名

このアイリスのデータセットはこのようになっているのですね。

訓練データとテストデータに分割する

さて機械学習をさせるためには訓練用のデータと、構築されたモデルが正しいかをテストするテストデータに分ける必要があります。

from sklearn.model_selection import train_test_split

まず読み込みましょう。

その次に分けるよ。

X_train, X_test, y_train, y_test = train_test_split(
    iris_data['data'], iris_data['target'], random_state=0)

こうすると訓練データとテストデータに分割することができます。

このtrain_test_split関数で75%の訓練データと25%のテストデータに分割しています。

k-最近傍法を利用する

k-最近傍法で分類していきましょう。

まずはk-最近傍法のアルゴリズムをインポートする必要がある。

from sklearn.neighbors import KNeighborsClassifier

そしてオブジェクトを返そう。

knn = KNeighborsClassifier(n_neighbors=1)

以下jupyterでの画像です。

k-最近傍法を使って学習させる

knnオブジェクトに対してfit関数で学習させていきます。

knn.fit(X_train, y_train)

以下のように出力されればオッケーです。

テストデータを使ってスコアを出す

学習させたのでテストデータを使ってみて、どれくらいの精度があるのか確かめてみましょう。

scoreメソッドを利用します。

knn.score(X_test, y_test)

こうすると、以下のようになります。

だいたい97%で正しく予測できるモデルとなりました。

簡単でしたが、アイリスの分類はこんな感じです。

機械学習の第一歩としてはいいですね!

人気記事 [無料あり]Python・AI(人工知能)を学習するためのプログラミングスクール3選