見出し画像

初心者 python学習~1~

アヤメの分類に挑戦!

学習のアウトプットのために書いています。


python学習の手始めに、アヤメの分類を行いました。アヤメという植物はSetosa、Versicolor、Virginicaという3つの品種に分かれており、がく片の幅、がく片の長さ、花びらの幅、花びらの長さという4つの要素で分類することができます。


今回はこのアヤメの4つの要素がまとめられたデータを学習用データとテスト用データにわけ、pythonで学習用データを学習させ、テストデータを与えた際に、正確に分類するというプログラムを作っていきます。




import pandas as pd・・・①
from sklearn.model_selection import train_test_split・・・②
from sklearn.metrics import accuracy_score・・・③

iris_data=pd.read_csv("IRIS.csv",encoding="utf-8")・・・④

y=iris_data.loc[:,"Name"]・・・⑤
x=iris_data.loc[:,["sepal.length" ,"sepal.width" , "petal.length" , "petal.width" ]]・・・⑥


x_train,x_test,y_train,y_test=train_test_split(x,y, test_size=0.2,train_size=0.8,shuffle=True)・・・⑦


clf=SVC()・・・⑧
clf.fit(x_train,y_train)・・・⑨

y_pred=clf.predict(x_test)・・・⑩
print("正解率=",accuracy_score(y_test,y_pred))・・・⑪


コードは以上です。エディターはJupyter Notebookを用いました。

各コードを解説していきます。

①pythonのデータ解析用ライブラリであるpandasをインポートし利用できるようにします。Pandasではパソコンのメモリ容量が許す限り、大量のデータをDataFrameに読み込んで処理を行うことが出来ます。


②train_test_splitはscikit-learnでデータを学習用とテスト用に分けるための関数です。アヤメデータを分けるのに必要なのでここでインポートしています。


③テスト結果を評価するためのパッケージです。sklearn.metrics.accuracy_score


④pandasライブラリのread_csv()メソッドを利用しIRIS.csvファイルを読み込んでいます。このメソッドは読み込んだ結果として、pandasのDataframeオブジェクトを返します。読み込んだデータを変数iris_dataに代入しています。


⑤⑥ではデータを2つに分けています。一つは品種名(y)、もう一つはがく片の幅、がく片の長さ、花びらの幅、花びらの長さ(x)といったデータです。

データの分離には、Dataframeオブジェクトのloc()メソッドを利用すると簡単に分離できます。



⑦x、yをそれぞれ学習用データをテスト用に分離します。train_test_split()メソッドの登場です。ここではテストデータ:学習データ=2:8で分けていて(test_size=0.2,train_size=0.8)、学習用データやテストデータに偏りが出ないようにshuffle=Trueパラメーターを指定しています。

これによりx、yデータをランダムに並び替えた後にデータを抽出するようにしている。



⑧分類器を作成しています。アルゴリズムはSVCを利用。変数clfは(classfier=分類器)の略です。

⑨fit()メソッドでデータを学習します。ここでは引数に学習させたいデータを渡します。今回は(x_train,y_train)


⑩ここではテストデータから結果を予測しています。予測にはpredict()メソッドを利用します。このメソッドはテストデータの配列を指定すると、予測結果を返してくれます。今回はx_testxを渡しています。


⑪accuracy_score()メソッドは正解率の計算を行ってくれます。

正しい結果(y_test)と予測結果(y_pred)を指定すると、正解率を返してくれます。



補足:データの分離に関して

ライブラリ:pandas メソッド:loc() 

データをラベルと入力データに分離する(列による分類)←ポイント!


ライブラリ:scikit-learn メソッド:train_test_split()

データを学習用とテスト用に分離する(行による分類)

test_sizeとtrain_sizeパラメーターを指定することで比率を指定可能



まだまだ分かっていないことだらけですが、いろいろな手法を使えるようになりたいです。

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