ポイント: Kerasは、TensorFlowを使用してニューラルネットワークを構築することを簡素化し、機械学習タスクの使いやすさを向上させるPythonフレームワークです。分類問題のモデル開発と実行に焦点を当てています。
- KerasはTensorFlow、cuDNN、およびCNTKの上で動作します。
- 機械学習ソリューションの実装を簡素化します。
Kerasは、Tensorflow(これもPythonで書かれています)を使いやすくするために設計されたPythonフレームワークです。ニューラルネットワークを構築し、もちろん、分類問題に使用されます。以下の例題はバイナリ分類です。コードはこちらで見つけることができます。このバイナリ分類問題は、14の異なる特徴を考慮して、顧客が何かを購入するかどうかを判断することです。データはこちらで見ることができます。
Kerasは以下の上で動作します:
- TensorFlow
- cuDNN
- CNTK
ここではTensorflowを使用します。したがって、Acondaをインストールし、残りのインストールのためにこれらのコマンドを実行します。
コード
conda install theano
conda install tensorflow
conda install keras
以下のコードで、形状が(673,14)のデータフレームがあり、673行と14の特徴列を意味します。Buyと呼ばれる列をラベルとして使用します。データフレーム、numpy配列、またはテンソルでKerasメソッドを使用できます。
モデルをSequentialに宣言します。これは層のスタックです。
Kerasに精度メトリックmetrics=['accuracy']を返すように指示します。
import tensorflow as tf
from keras.models import Sequential
import pandas as pd
from keras.layers import Dense
url = 'https://raw.githubusercontent.com/werowe/
logisticRegressionBestModel/master/KidCreative.csv'
data = pd.read_csv(url, delimiter=',')
labels=data['Buy']
features = data.iloc[:,2:16]
model = Sequential()
model.add(Dense(units=64, activation='relu', input_dim=1))
model.add(Dense(units=14, activation='softmax'))
model.compile(loss='categorical_crossentropy',
optimizer='sgd',
metrics=['accuracy'])
model.fit(labels, features,
batch_size=12,
epochs=10,
verbose=1,
validation_data=(labels, features))
model.evaluate(labels, features, verbose=0)
model.summary()
出力はこのようになります。見ての通り、sgd(標準勾配降下法)オプティマイザーとcategorical_crossentropyを10回実行しました。これはepochsを10に設定したためです。同じデータをトレーニングと評価に使用したため、0.9866の精度が得られます。実際には、入力データをトレーニングデータとテストデータに分割します。損失は362.1225です。mse(平均二乗誤差)を使用できましたが、categorical_crossentropyを使用しました。モデルの目標(この場合sgd)は、実際の値と予測値の違いを最小化する損失関数を最小化することです。
rain on 673 samples, validate on 673 samples
Epoch 1/10
2018-07-26 08:43:32.122722: I tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
673/673 [==============================] - 0s 494us/step - loss: 1679.5777 - acc: 0.9851 - val_loss: 362.1225 - val_acc: 0.9866
Epoch 2/10
673/673 [==============================] - 0s 233us/step - loss: 362.1225 - acc: 0.9866 - val_loss: 362.1225 - val_acc: 0.9866
Epoch 3/10
673/673 [==============================] - 0s 218us/step - loss: 362.1225 - acc: 0.9866 - val_loss: 362.1225 - val_acc: 0.9866
Epoch 4/10
673/673 [==============================] - 0s 208us/step - loss: 362.1225 - acc: 0.9866 - val_loss: 362.1225 - val_acc: 0.9866
Epoch 5/10
673/673 [==============================] - 0s 213us/step - loss: 362.1225 - acc: 0.9866 - val_loss: 362.1225 - val_acc: 0.9866
Epoch 6/10
673/673 [==============================] - 0s 212us/step - loss: 362.1225 - acc: 0.9866 - val_loss: 362.1225 - val_acc: 0.9866
Epoch 7/10
673/673 [==============================] - 0s 216us/step - loss: 362.1225 - acc: 0.9866 - val_loss: 362.1225 - val_acc: 0.9866
Epoch 8/10
673/673 [==============================] - 0s 218us/step - loss: 362.1225 - acc: 0.9866 - val_loss: 362.1225 - val_acc: 0.9866
Epoch 9/10
673/673 [==============================] - 0s 228us/step - loss: 362.1225 - acc: 0.9866 - val_loss: 362.1225 - val_acc: 0.9866
Epoch 10/10
673/673 [==============================] - 0s 239us/step - loss: 362.1225 - acc: 0.9866 - val_loss: 362.1225 - val_acc: 0.9866
>>>
... model.evaluate(labels, features, verbose=0)
[362.1224654085746, 0.986627043090639]
>>>
>>> model.summary()
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 64) 128
_________________________________________________________________
dense_2 (Dense) (None, 14) 910
=================================================================
Total params: 1,038
Trainable params: 1,038
Non-trainable params: 0
今、predict()メソッドを使用して、ある人がこの製品を購入する可能性があるかどうかを予測できます。
TensorFlowとKerasによるMLガイド
これらの投稿は私自身の意見であり、BMCの立場、戦略、または意見を必ずしも代表するものではありません。