Tensorflow#3 DNNを用いたIris分類器の構築
1はじめに
この文章は主にTensorflow公式のAPIドキュメントに基づいて整理された.本論文の主な目的はTensorflowが提供する機械学習APIを用いてニューラルネットワークに基づく分類器を構築し,古典的なIris分類データを分類することである.ここでの高級APIは主にtf.contrib.learnに提供されるAPIを指し、
2ステップ
まず、基本的な手順を説明します.元データセットのCSVからデータを読み出し、Tensorflowの にロードする.ニューラルネットワークに基づく分類器 を構築する訓練データを用いたモデル訓練 試験データを用いたモデル評価 訓練されたモデルを用いて新しいデータを分類する 2.1データロード
Irisというデータセットは、皆さんも上を見ていることが多いと思いますが、ここでは詳しく紹介せず、基本的な状況だけを説明します.このデータセットには150行のデータが含まれており,3つの異なるIris品種がある.各行のデータには品種の表示情報のほか,萼片の長さ,幅などのパラメータも含まれている.ここで、これらのデータは事前にトレーニングセットとテストセットに分けられ、それぞれ120行と30行A training set of 120 samples(iris_training.csv)である.
Atest set of 30 samples (iris_test.csv)..
これらのデータを準備したら、まず最初のコードを完成し、Tensorflowを導入し、データをロードします.
トレーニングデータとテストデータセットでは、.dataでフィーチャーにアクセスしたり、.targetでラベルにアクセスしたりすることができます.この2つの部分は後述します.
2.2深さニューラルネットワーク分類器の作成
tf.contrib.learnは多くの実装済みモデルを提供しています.ここではEstimatorsと呼ばれています.これらの定義済みモデルを通じて、これらのモデルとあなたのデータに基づいて迅速に分析することができます.ここではDNNClassifierを使用したDNN分類器を作成します.
ここでは生命の各行(すなわち対応する各サンプル)の特徴的な値を取る必要があります.ここではreal-valueを使用してDNnClassifierを構築する際に、hidden_を直接通過することができる3層を構築しました.units特定のレイヤ数とレイヤごとの値を指定n_classnesの場所は私たちが3分類の問題でmodelであることを示しています.dir位置は、ディレクトリで、TensorflowはいくつかのCheckpointを保存することができて、このようにTensorflowはいつでも訓練状況を保存することができます(また一時停止してから訓練を続けることもできます)
2.3トレーニングモデル
ここではfit法を用いてモデルにデータを直接埋め込み,訓練を行う.
2.4モデル評価
ここでは、休暇の精度を測定する方法が必要です.ここでも、テストデータセットを直接提供し、彼の方法を呼び出すと、最終的には約96%の結果が表示されます.
2.5新しいデータセットの予測
我々はモデルを訓練した後,このモデルを用いて一定のデータ予測を行うことができる.
3完全なコード
この文章は主にTensorflow公式のAPIドキュメントに基づいて整理された.本論文の主な目的はTensorflowが提供する機械学習APIを用いてニューラルネットワークに基づく分類器を構築し,古典的なIris分類データを分類することである.ここでの高級APIは主にtf.contrib.learnに提供されるAPIを指し、
2ステップ
まず、基本的な手順を説明します.
Irisというデータセットは、皆さんも上を見ていることが多いと思いますが、ここでは詳しく紹介せず、基本的な状況だけを説明します.このデータセットには150行のデータが含まれており,3つの異なるIris品種がある.各行のデータには品種の表示情報のほか,萼片の長さ,幅などのパラメータも含まれている.ここで、これらのデータは事前にトレーニングセットとテストセットに分けられ、それぞれ120行と30行A training set of 120 samples(iris_training.csv)である.
Atest set of 30 samples (iris_test.csv)..
これらのデータを準備したら、まず最初のコードを完成し、Tensorflowを導入し、データをロードします.
#coding:utf-8
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import tensorflow as tf
import numpy as np
#
IRIS_TRAINING = "iris_training.csv"
IRIS_TEST = "iris_test.csv"
# Tensorflow
,target_type label , 012 , int
training_set = tf.contrib.learn.datasets.base.load_csv(filename=IRIS_TRAINING,
target_dtype=np.int)
test_set = tf.contrib.learn.datasets.base.load_csv(filename=IRIS_TEST,
target_dtyp
e=np.int)
トレーニングデータとテストデータセットでは、.dataでフィーチャーにアクセスしたり、.targetでラベルにアクセスしたりすることができます.この2つの部分は後述します.
2.2深さニューラルネットワーク分類器の作成
tf.contrib.learnは多くの実装済みモデルを提供しています.ここではEstimatorsと呼ばれています.これらの定義済みモデルを通じて、これらのモデルとあなたのデータに基づいて迅速に分析することができます.ここではDNNClassifierを使用したDNN分類器を作成します.
# 4 , real-value
feature_columns = [tf.contrib.layers.real_valued_column("", dimension=4)]
# DNN ,3 , 10,20,10, 3 ,
classifier = tf.contrib.learn.DNNClassifier(feature_columns=feature_columns,
hidden_units=[10, 20, 10],
n_classes=3,
model_dir="/tmp/iris_model")
ここでは生命の各行(すなわち対応する各サンプル)の特徴的な値を取る必要があります.ここではreal-valueを使用してDNnClassifierを構築する際に、hidden_を直接通過することができる3層を構築しました.units特定のレイヤ数とレイヤごとの値を指定n_classnesの場所は私たちが3分類の問題でmodelであることを示しています.dir位置は、ディレクトリで、TensorflowはいくつかのCheckpointを保存することができて、このようにTensorflowはいつでも訓練状況を保存することができます(また一時停止してから訓練を続けることもできます)
2.3トレーニングモデル
ここではfit法を用いてモデルにデータを直接埋め込み,訓練を行う.
# ,
classifier.fit(x=training_set.data,
y=training_set.target,
steps=2000)
2.4モデル評価
ここでは、休暇の精度を測定する方法が必要です.ここでも、テストデータセットを直接提供し、彼の方法を呼び出すと、最終的には約96%の結果が表示されます.
accuracy_score = classifier.evaluate(x=test_set.data,
y=test_set.target)["accuracy"]
print('Accuracy: {0:f}'.format(accuracy_score))
2.5新しいデータセットの予測
我々はモデルを訓練した後,このモデルを用いて一定のデータ予測を行うことができる.
#
new_samples = np.array(
[[6.4, 3.2, 4.5, 1.5], [5.8, 3.1, 5.0, 1.7]], dtype=float)
y = classifier.predict(new_samples)
print('Predictions: {}'.format(str(y)))
3完全なコード
#coding:utf-8
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import tensorflow as tf
import numpy as np
#
IRIS_TRAINING = "iris_training.csv"
IRIS_TEST = "iris_test.csv"
# Tensorflow
training_set = tf.contrib.learn.datasets.base.load_csv(filename=IRIS_TRAINING,
target_dtype=np.int)
test_set = tf.contrib.learn.datasets.base.load_csv(filename=IRIS_TEST,
target_dtype=np.int)
# 4 , real-value
feature_columns = [tf.contrib.layers.real_valued_column("", dimension=4)]
# DNN ,3 , 10,20,10, 3 ,
classifier = tf.contrib.learn.DNNClassifier(feature_columns=feature_columns,
hidden_units=[10, 20, 10],
n_classes=3,
model_dir="/tmp/iris_model")
# ,
classifier.fit(x=training_set.data,
y=training_set.target,
steps=2000)
#
accuracy_score = classifier.evaluate(x=test_set.data,
y=test_set.target)["accuracy"]
print('Accuracy: {0:f}'.format(accuracy_score))
#
new_samples = np.array(
[[6.4, 3.2, 4.5, 1.5], [5.8, 3.1, 5.0, 1.7]], dtype=float)
y = classifier.predict(new_samples)
print('Predictions: {}'.format(str(y)))