python機械学習プログラミング(2章28ページ下段のプログラム)

2章の下段のプログラムはいったい何を意味しているの?

プログラムも、数学もよくわからない僕は何もついていけずにただ、字を目で追うだけになっていました。

自分なりの理解

import matplotlib.pyplot as plt
import numpy as np
y=df.iloc[0:100, 4].values
y = np.where(y == 'Iris-setosa', -1, 1)
X = df.iloc[0:100, [0, 2]].values
plt.scatter(X[:50,0], X[:50,1], color='red', marker='o', label='setosa')
plt.scatter(X[50:100, 0], X[50:100,1], color='blue', marker='x', label='versicolor')
plt.xlabel('sepal length [cm]')
plt.ylabel('petal length [cm]')
plt.legend(loc='upper left')
plt.show()

このプログラムはグラフ(散布図)を書くプログラムです。

機械学習の事について話をする前の準備みたいなものです。

もう少し具体的に話をすると「28ページの上のプログラムでとってきたデータを実際どんなデータなのかを絵にしてみてみよう。」というのがこのプログラムです。

このプログラムの流れはこんな感じ。

  1. matplotlib.pyplotというところにアクセスします。今度アクセスするときpltと書くのでよろしく!
  2. numpyというところにもアクセスしますよ!!これはnpと書くのでよろしく!!
  3. dfの中にあるデータから4列目の100行目までを取り出します。それをyとします。(dfは28ページの上のプログラムで処理しています。)
  4. y(dfの4列目の100行目までのデータ)の中からIris-setosaを探し出して-1に置き換える。それ以外は1に置き換える。(npが出てきました。npはnumpyの事です。)
  5. dfから100行目までの1列目と3列目を取り出します。それをXとします。
  6. pltを使って散布図を書いていきます。Xの50行目までの1列目をグラフの縦軸に、Xの50行目までの2列目をグラフの横軸にしてプロットします。色は赤で、点の形は〇で、ラベルはsetosaとします。
  7. 同様にpltを使って散布図を書いていきます。Xの51から100行目の1列目をグラフの縦軸に、Xの51から100行目までの2列目を横軸にしてプロットします。色は青で、点の形は×で、ラベルはversicolorとします。
  8. pltを使ってx軸のラベルを書きます。名前はsepal length [cm]とします。
  9. pltを使ってy軸のラベルを書きます。名前はpetal length [cm]とします。
  10. pltを使って凡例を入れます。場所はupper left(上部左側)にします。
  11. 散布図を表示します。

という感じのプログラミングです。

作図のためのプログラムです。このデータの集まりを機械学習で分類していきます。