2018年5月18日あやめの識別を行ってみる(決定木)機械学習としてあやめの分類を決定木を用いて行っていきます。あやめの分類とは機械学習として有名な分類方法の試験であり、あやめを構成する4つの属性(がく片の長さ、がく片の幅、花びらの長さ、花びらの幅)をもとに、setosa(ヒオウギアヤメ)、Versicolour(ブルーフラッグ)、Virginicaの3種類のいずれの種類かを判定します。今回は決定木を用いて3クラス問題の識別を行っていきます。inlinenumpy,pandas,matlibの3種類のデータをインポートしています。Image決定木のモデルを描画するために必要なライブラリをインポートしています。datasets.load_iris()scikit-learnによりあやめのデータを抽出しています。scikit-learnからdatasetsのインポートを行い、load_iris関数で抽出することが出来ます。このデータは150個分のデータがあり、がく片の長さ、がく片の幅、花びらの長さ、花びらの幅の4つの説明変数を持っています。それぞれに対して目的変数となるあやめの種類が3種類定義されています。あやめの種類はsetosa(ヒオウギアヤメ)、Versicolour(ブルーフラッグ)、Virginicaとなります。...実際にデータの詳細を表示しています。pd.DataFrame(data=data.data,columns=data.feature_names)dataX.head()取り出したデータから説明変数となる部分のみを抽出し、dataXという名前のデータフレームに格納しています。'Species'})dataY.head()取り出したデータから目的変数となる部分のみを抽出し、dataYという名前のデータフレームに格納しています。dataY['Species'].apply(name)dataY.head()先ほど表示したdataYは0,1,2の数値で表示されており、種別が分かりにくいのでリネームしています。nameという関数を作成し、0の場合はSetosa、1の場合はVeriscolour、2の場合はVirginicaと表示するようにしています。test_size=0.3)dataXのうち70%を訓練用のデータとして使用します。残り30%は評価用に使用します。同様にdataYも訓練用、評価用に分割します。train_test_split関数を使用することで、ランダムに分割することが出来ます。DecisionTreeClassifier()決定木として測定器を作成します。作成した測定器はclfという名前に格納しています。random_state=None,splitter='best')訓練を行います。pydotplus.graph_from_dot_file(path="tree.dot")g.write_png('figure-decisionTree.png')Image(g.create_png())決定機の描画を行い、その結果を"figure-decisionTree.png"という名前で画像ファイルとして保存しています。図を見ると決定木の深さが5つとなっており若干過学習のようにも見えますが、今回はこのまま行っていきます。'Virginica'})df.head()作成したモデルに対して評価を実施します。どの種類に属するの確率を表示しています。決定木の場合は1.0となります。決定木の場合、説明変数により分岐していって最終的な予想がどれか一つに該当するためです。'Virginica'})df.head()実際に判定された種別を表示しています。'実(Virginica)'})df混同行列を行ってみます。混同行列とは縦軸に実際の正解値、横軸に予想の値のクロス表を作成することで、どの程度正解したかどうかを表します。混同行列の結果から、33個が正解し、2個が失敗したことが分かります。clf.score(X_test,Y_test)12#評価の実行(正答率)clf.score(X_test,Y_test)0.955555555555555610.9555555555555556実際の結果は95%でした。決定木の深さが5つとなっており過学習ぎみでしたが意外と正答率は高いです。OKそれぞれの個別のデータに対して、予想値と実際の値のデータを比較しています。今回は決定木を用いて識別問題を行っていきました。Kerasで違う方法も行っているので興味がある場合はそちらも参照してください。Augmentation)の処理を効果的に行うため、ImageDataGeneratorというジェネレーターが用意されています。...PREVダミー変数の作り方と注意点についてNEXTpandasで欠損値NaNを削除置換する新着記事一覧AIプログラミング2019/7/7Windows環境でAIによる画像編集が可能なFE-GANを試してみるAIプログラミング2019/02/19猫の動画を対象にディープラーニングの特徴量を可視化してみるAIプログラミング2019/02/11VGG16モデルを使用してオリジナル写真の画像認識を行ってみるAIプログラミング2019/02/03VGG16ネットワークの各レイヤの特徴を可視化するAIプログラミング2019/01/27Scikit-Learnの識別器をループで一気に適用させるプロフィールでんだろ。ほしかま大好き室内飼い猫10才。未知の世界の興味があり、飼い主の目を盗んで脱走をすることもしばしば。@Technology_AI飼い主も未知の世界の興味があり、京都や奈良などの寺院巡りを楽しみながら旅行に行く一方、AIでの画像変換を勉強しながらブログを書いています。