AI(人工知能)は、車の自動運転、画像認識などいろいろな分野で開発競争が激化しています。このAIに用いる技術には、機械学習、ディープラーニングあるいはニューラルネットワークなどいろいろな手法が研究されています。先ずは、機械学習から勉強をしていこうと思っています。この話題がしばらく続くかもしれません。一緒に勉強しましょう。
資料はこちら → scikit-learn
p.1 有名な「アイリスの仲間の分類分け問題」を、(がくの長さ・幅)と(花弁の長さ・幅)のデータを基に学習して、テストデータを予測するアルゴリズムを理解して、そのプログラムに実装します。 がくの長さと幅、花弁の長さと幅をプロットしたグラフを示します。左のグラフはかなり重なっている部分があり、学習しても予測値の正解率は低くなりそうです。右のグラフでも重なる部分があります。 これを分類する手法に「kNN(k-Nearest Neighbor )法」があります。 分類したい対象●からの比較対象物までの距離を算出します。 k=1の円内に■が1個、k=3の円内に●は3個、■は1個のままです。kの値は任意で決めます。 今回k=3とすると●の方が■より多いので、多数決により●は●の仲間であると判定します。
p.2 ①「jupyter」を起動して、「scikit-learn」(サイキット・ラーン)をインポートします。②その後、irisのデータを読込ます。③そのデータの中身をprint分で表示させると、「feature」は、がくの長さ、幅、花弁の長さ、幅の名称が、「target」は、花の品種名であることが分かります。④「iris.data」とすると、がく及び花弁の数値データが表示され、「iris.target」とすると、花の品種を数値に置き換えた0、1及び2が入っていることがわかります。
p.3 「train_test_split」というコマンドを用いて、花のデータ(iris.data)と花の名称(iris.target)を訓練用とテスト用に振り分けます。花のデータはX、花の名称はy、訓練用は「_train」、テスト用は「_test」に数値を割振って格納します。30%が予測用のテストデータです。「kNN法」で分類するため、「KNeighborClassifier」というライブラリをインポートします。今回はk=1で判定します。「knn.fit」というコマンドで訓練用のデータで学習させます。 「knn.predict」というコマンドでテストデータを用いて花の名称を予測値として、「y_pred」に代入します。 予測値「y_pred」と正解「y_test」を表示させます。 正解率の平均値を表示させると「97.777…%」の正解率でした。
いかがですか? たったの4行ぐらいで、学習して予測してしまうのです。これも「python」がベースなのです。pythonの威力はすごい。