Help us understand the problem. What is going on with this article?

なにはともあれ、ロジスティック回帰で機械学習してみる

概要

有名なアヤメのデータをもとにしてアヤメの種類を推測するモデルを作成して、
実際にどの程度、正確に予測できるのかを確認する。

前提

  • 必要なモジュールはimport済み。
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn import  metrics

やっていく

アヤメのデータを読み込んで、トレーニング用とテスト用に分ける

iris_data = load_iris()
X = iris_data.data
Y = iris_data.target

データの中身はこんな感じ

  • iris_data
    dataとしてがく片や花弁の長さ(*Length)と幅(*Width)が入っていて、
    targetとしてアヤメの種類(Species)が載っている。
{'data': array([[5.1, 3.5, 1.4, 0.2],
        [4.9, 3. , 1.4, 0.2],
        [4.7, 3.2, 1.3, 0.2],
        [4.6, 3.1, 1.5, 0.2],
        [5. , 3.6, 1.4, 0.2],
        [5.4, 3.9, 1.7, 0.4],
        [4.6, 3.4, 1.4, 0.3],
(中略)
'target': array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
(後略)

Xにはdataのみが、Yにはtargetのみが入っている。

モデルを作る

# インスタンスを作る
logreg = LogisticRegression()

# トレーニング用のデータとテスト用のデータにXとYを分ける。
# test_size=0.4はテストようにデータの4割を確保するということ。
# random_state=3 はデータを分けるときの乱数の種を固定にします。
# (test_sizeのパラメータを変えても分け方が一緒なのでどう変わるのかわかりやすいかも。)
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.4, random_state=3)

# モデルを作る。
logreg.fit(X_train, Y_train)

# モデルを使ってテスト用のXからYを予想する。
Y_pred = logreg.predict(X_test)

# Y_test と Y_pred の値を比べてどれくらい正しく推測できたか確認する
metrics.accuracy_score(Y_test, Y_pred)

metrics.accuracy_score(Y_test, Y_pred) の結果が
0.9333333333333333 で9割3分くらいは正しく推測できていました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした