見出し画像

機械学習②Irisdataを見てみる


機械学習でよく使われるIrisのデータみる

Irisdataは、R言語でもよく使われるdataで懐かしいと思った。

from sklearn.datasets import load_iris
iris_dataset = load_iris()

dataの中身は下記。
dataはIris150個の花びらの長さと幅、ガクの長さと幅をセンチメートル単位で測定したもの。
targetとtarget_namesで0はsetosaを、1はversicolorを、2はvirginicaを意味する。

スクリーンショット 2020-10-08 19.35.58

スクリーンショット 2020-10-08 19.48.07

スクリーンショット 2020-10-08 19.40.20


機械学習はじめ「訓練データ」「テストデータ」を分ける

 機械学習モデルの性能を評価するには、ラベルを持つ新しいデータ(これまでに見せていないデータ)を使う必要がある。これを実現するには、集めたラベル付きデータ(ここでは150のアイリスの測定結果)を2つに分けるのが一般的である。一方のデータを機械学習モデルの構築に用いる。こちらを訓練データ(training data)もしくは訓練セット(training set)と呼ぶ。残りのデータを使ってモデルがどの程度うまく機能するかを評価する。

random_state=0の理由:train_test_split関数は、分割を行う前に擬似乱数を用いてデータセットをシャッフルする。データポイントはラベルでソートされているので、単純に最後の25%をテストセットにしたりすると、すべてのデータポイントがラベル2になってしまう。3クラスのうち1つしか含まれていないようなデータセットでは、モデルの汎化がうまく行っているか判断できない。だから、先にデータをシャッフルし、テストデータにすべてのクラスが含まれるようにする。

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
   iris_dataset['data'], iris_dataset['target'], random_state=0)

この関数を使うことによって、テストデータと訓練データを分けられる。

スクリーンショット 2020-10-08 19.50.32

75%訓練データで、25%テストデータである。

データをプロットしてみる


# X_trainのデータからDataFrameを作る、
# iris_dataset.feature_namesの文字列を使ってカラムに名前を付ける。
iris_dataframe = pd.DataFrame(X_train, columns=iris_dataset.feature_names)
# データフレームからscatter matrixを作成し、y_trainに従って色を付ける。
grr = pd.plotting.scatter_matrix(iris_dataframe, c=y_train, figsize=(15, 15), marker='o',
                       hist_kwds={'bins': 20}, s=60, alpha=.8, cmap=mglearn.cm3)

pd.plotting.scatter_matrixは教本とは異なるので注意すること。仕様が変わっている。



画像5

緑と赤と青の3クラスがよく分離しているので学習しやすそう。ということが見える。

次回は実際に機械学習をしてみる。



この記事が気に入ったらサポートをしてみませんか?