機械学習-アヤメの分類 (試験データのプロット)
試験データの確認
別記事の機械学習-アヤメの分類 (プログラム)で実施したアヤメのデータについて詳細に見ていきます。
まずはどのようなデータが入っているか確認していきましょう。
必要なデータのInclude
| 1 2 3 | #scikit-learnからデータの取り出し from sklearn import datasets iris = datasets.load_iris() | 
特徴量の名前の調査
| 1 2 | #特徴量の名前 iris.feature_names | 
| 1 2 3 4 | ['sepal length (cm)',  'sepal width (cm)',  'petal length (cm)',  'petal width (cm)'] | 
それぞれ以下に対応します。
・がく片の長さ(cm)
・がく片の幅(cm)
・花びらの長さ(cm)
・花びらの幅(cm)
・がく片の幅(cm)
・花びらの長さ(cm)
・花びらの幅(cm)
アヤメの各種データの確認
| 1 2 | #アヤメの各種データ iris.data | 
| 1 2 3 4 5 6 | 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], | 
[がく片の長さ,がく片の幅,花びらの長さ,花びらの幅]が設定されています。
データの説明の確認
| 1 2 | #データの説明 print(iris.DESCR) | 
| 1 2 3 4 5 6 7 8 9 10 |     :Summary Statistics:     ============== ==== ==== ======= ===== ====================                     Min  Max   Mean    SD   Class Correlation     ============== ==== ==== ======= ===== ====================     sepal length:   4.3  7.9   5.84   0.83    0.7826     sepal width:    2.0  4.4   3.05   0.43   -0.4194     petal length:   1.0  6.9   3.76   1.76    0.9490  (high!)     petal width:    0.1  2.5   1.20  0.76     0.9565  (high!)     ============== ==== ==== ======= ===== ==================== | 
例えば「がく片の長さ」の最小は4.3cm 最大7.9cmとなっています。
試験データのプロット
アヤメのデータは「がく片の長さ」「がく片の幅」「花びらの長さ」「花びらの幅」から成り立っているため、それぞれのX軸、Y軸の組み合わせでプロットします。全部で6通りのグラフとなります。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | import itertools from matplotlib import pyplot as plt from sklearn import datasets def main():     iris = datasets.load_iris()     # アヤメの各種データ     features = iris.data     # 各特徴量の名前     feature_names = iris.feature_names     # データと品種の対応     targets = iris.target     # グラフの全体サイズを指定する     plt.figure(figsize=(20, 8))     # 特徴量の組み合わせ     for i, (x, y) in enumerate(itertools.combinations(range(4), 2)):         plt.subplot(2, 3, i + 1)         for t, marker, c in zip(range(3), '>ox', 'rgb'):             plt.scatter(                 features[targets == t, x],                 features[targets == t, y],                 marker=marker,                 c=c,             )             plt.xlabel(feature_names[x])             plt.ylabel(feature_names[y])             plt.autoscale()     plt.show() if __name__ == '__main__':     main() | 
 
アヤメのデータがプロットされました。赤、青、緑がそれぞれ「setosa」、「Versicolour」、「Virginica」のアヤメの品種に対応します。
それぞれのアヤメの品種毎に特徴があり、「がく片の長さ」「がく片の幅」「花びらの長さ」「花びらの幅」を組み合わせることで品種を特定できそうです。
これらの特徴を機械学習で学習させていきます。