Kerasでの教師あり学習のサンプルとしてアヤメの分類を行います。アヤメの分類とはビックデータや人工知能で用いられる典型的な線形分離の問題としてあつかわれています。使用するデータはAnacondaと共にインストールされたscikit-learnライブラリに同梱されており、アヤメの三種類150サンプルからなるデータセットが用意されています。Kerasを用いた教師あり学習でのサンプルとしてよく用いられており、scikit-learnライブラリを使用することで機械学習やデータマイニングをすぐに試すことが出来るようになっています。アヤメの分類方法アヤメを構成する花びらの長さや幅など4つの属性により、それぞれどのアヤメの種類に属するかを決定します。花びらの長さ花びらの幅それぞれの属性により、アヤメの以下の3種類に分類します。setosa(ヒオウギアヤメ)Versicolour(ブルーフラッグ)Virginicaこちらの記事でも説明しています。(プログラム)で実施したアヤメのデータについて詳細に見ていきます。http://newtechnologylifestyle.net/tensorflow-keras%E3%81%A7%E3%81%AE%E6%95%99%E5%B8%AB%E3%81%...教師あり学習方法アヤメの分類方法としては次の通りに学習をしていきます。1150個のサンプルデータを学習用120個、実験用30個に分割する。2学習用120個のデータに対しアヤメの属性と種類をセットで学習させる。3学習の質を高めるためエポック数を100にて行う。4実験用データ30個に対して、アヤメの種類を推測させる。5推測した結果と実際の結果を比較し正解率をを出力させる。準備段階scikit-learnを使用するためにインストールします。scikit-learnkerasについても必要のためインストールを行います。kerasソースコードソースコードです。個々の詳細については別途説明します。datasets.load_iris()インストールしたscikit-learnからデータベース(datasets)を取り出します。データベース(datasets)には予め実験用データが同梱されているので、実験用データからアヤメの分類データ(iris)をロードします。アヤメの分類に使用するデータの確認アヤメの分類データには3種類の情報が含まれています。Statistics:print(iris.DESCR)によりデータの説明が表示されます。DESCR情報により、アヤメデータは150×4の2次元配列になっていることが分かります。150×4の2次元配列は次のような構造となっており、アヤメを判断する属性が格納されています。:花びらの幅これらの4つの属性により、アヤメの品種を識別します。アヤメの品種は「setosa」、「Versicolour」、「Virginica」の3種類が定義されています。0.3],アヤメの各種データの表示しています。それぞれの属性は次の通りです。[がく片の長さ,がく片の幅,花びらの長さ,花びらの幅]これらのデータは150の配列データとして保持されています。2])アヤメの種類の表示をしています。それぞれの数値の意味は次の通りです。0:「setosa」1:「Versicolour」2:「Virginica」こちらもiris.data同様に150個のデータが入っています。アヤメの分類の学習アヤメの分類の学習をしていきます。学習方法は次の通りです。split(iris.data,iris.target,train_size=0.8,test_size=0.2)150個のアヤメのデータをシャッフルし120個の学習用と30個の実験用のデータに分けます。データを分ける際にscikit-learnのtrain_test_splitを用いますが、名前が長いのでsplitと別名に定義しています。splitを用いてアヤメのデータを学習用:実験用(8:2)に分割します。その結果120個のデータが学習用、30個のデータが実験用となります。Dense,Activationtensorflowとkerasをインポートします。tensorflowは別名tfとして定義しています。kerasのレイヤーより、DenseとActivationのクラスインポートします。Dense:ニューラルネット定義クラスActivation:活性化関数クラスニュートラルネットワークで使用するモデル作成ニュートラルネットワークで使用するモデルを作成します。keras.models.Sequential()model.add(Dense(units=32,input_dim=4))model.add(Activation('relu'))model.add(Dense(units=3))model.add(Activation('softmax'))model.compile(loss='sparse_categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])1行目:レイヤーの線形スタックであるSequentialモデルを適用します2行目:中間層が32個、入力層が4個のニューロンを指定します3行目:中間層の活性化関数にReLU関数を適用します4行目:出力層を3個にします5行目:出力層の活性化関数にsoftmax関数を適用します6行目:compileでモデルを構築します。最後のニュートラルネットワークのコンパイルを行います。教師あり学習の実行model.fit(x_train,y_train,epochs=100)1model.fit(x_train,y_train,epochs=100)モデルができたので、学習データを与えて機械学習を開始します。学習はmodel.fitという関数を起動します。epochsは繰り返し学習する回数を表しており、今回は100を指定しています。なるニュートラルネットワークの重み(パラメータ)を最適化できます。なるニュートラルネットワークの重み(パラメータ)を最適化しています。1)scoreには実験用の30個のデータの正解率が入ります。1個失敗していました。print(score[1])1print(score[1])0.96666666666710.966666666667score[1]を指定することで正解率が分かります。今までは全てのデータを一気に実験していたために過程が見えませんでした。そこで1つのデータに着目し過程を見ていくことにします。model.predict(x)1つのデータのアヤメの属性として次のように設定しています。がく片の長さ:5.1がく片の幅:3.5花びらの長さ:1.4花びらの幅:0.2としてそれがどのアヤメの種類に該当するか確認します。]]与えられたデータに対してのアヤメの種類の確立が表示されています。「setosa」:98%「Versicolour」:0.018%「Virginica」:0.0012%とのことによりアヤメの種類は一番確立が高い「setosa」と想定することができます。r.argmax()1r.argmax()1argmaxを起動することでも簡単に最も確率の高い分類を判定できます。0と表示されていることから、「setosa」を想定していることが分かります。単純パーセプトロンを用いて論理演算を行ってみます。単純パーセプトロンの概要については以下の記事を参照してください。sklearnでの機械学習の文字認識に使用した画像を表示させてみます。TelsorFlowの公式サイトにあるMNISTについての概要を説明します。機械学習としてあやめの分類を決定木を用いて行っていきます。...PREV人工知能の難題「フレーム問題」NEXTPythonで変数宣言をしたい新着記事一覧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での画像変換を勉強しながらブログを書いています。