「あやめ」の種類判別(その3)

iris(菖蒲:アヤメ)データセットを使って進める
  (その3)は行番号52~66までを解説する

#
#   1.データの読み込み
#
import pandas as pd
import numpy  as np
import matplotlib.pyplot as plt
import seaborn as sns
#
from sklearn import datasets
#      
%matplotlib inline
#
iris_datasets =  datasets.load_iris()
#
#
#print("***詳細*****",flush=True)
#print(iris_datasets.DESCR)
#print("********",flush=True)
#
#
#   2.データの確認
#
iris = pd.DataFrame(iris_datasets.data,columns = iris_datasets.feature_names)
iris['target'] = iris_datasets.target
#
iris.head()
#
#
#   3.モデルの学習
#
target = iris['target']
data = iris[iris_datasets.feature_names]
#
from sklearn import model_selection
data_train,data_test,target_train,target_test = \
        model_selection.train_test_split(data,target,train_size=0.8)
#
print(target_train.shape,target_test.shape)
print(data_train.shape,data_test.shape)
#
from sklearn.svm import SVC
model = SVC(gamma='scale')
model.fit(data_train,target_train)
#
target_predict = model.predict(data_test)
#
print(target_predict)
print(np.array(target_test))
#
model.score(data_test,target_test)
#
#
#   4.モデルの評価
#
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.metrics import f1_score
#
precision = precision_score(target_test,target_predict,average='micro')
recall = recall_score(target_test,target_predict,average='micro')
f1 = f1_score(target_test,target_predict,average='micro')
#
print('適合率(precision)',precision)
print('再現率(recall)',recall)
print('F値(F-measure)',f1)
#
#
#
# データの先頭
#print("***先頭****",flush=True)
#iris.head()
#print("********",flush=True)
#
# データの概要
#print("***概要****",flush=True)
#iris.info()
#print("********",flush=True)
#
# データの要約統計量
#print("***統計*****")
#iris.describe()
#print("********")
#
# データの形状
#print("***形状*****")
#iris.shape
#print("********")
#
# データ要素の取り出し
#print("***要素*****")
#iris.iloc[:10]
#print("********")
#
# 条件に合う行の取得
#print("***条件*****")
#iris.query("target==1")
#print("********")
#
#

以下にサンプルコードと解説を載せます

4.モデルの評価

#
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.metrics import f1_score

 評価用数値を求めるためにライブラリを読み込む
   適合率(precision)
     正解と予測した中で、実際に正解している割合
   再現率(recall)
     実際の正解の中で、正解と予測できた割合
   F値(F-measure)
     適合率と再現率の調和平均

#
precision = precision_score(target_test,target_predict,average='micro')
recall = recall_score(target_test,target_predict,average='micro')
f1 = f1_score(target_test,target_predict,average='micro')

 各々評価値を計算する
   目的変数の検証用データと予測結果で割合の計算

#
print('適合率(precision)',precision)
print('再現率(recall)',recall)
print('F値(F-measure)',f1)

 以下はprint文による出力例

適合率(precision) 0.9666666666666667
再現率(recall) 0.9666666666666667
F値(F-measure) 0.9666666666666667