2017-02-24 7 views
0

私はこのような構造のデータを持っています。データをKeras Sequential ModelsとDense Layersに適合させ、出力を生成する

faults.head() 

Fault DEALER FAILMODE FAILCODEMODE DAYS UNTIL FAILURE TERRITORY CODE DESIGN PHASE CODE PLANT ID CODE 
0 CAMPAIGN/TRP 31057 CAMPAIGN BNRBC1 283.0 102 62 82 
1 INTERMITTENT PROBL 24126 SPECIAL (NO FAILURE) XXIPNF 126.0 102 62 82 
2 DSID #DSBCG2058 TAG #362783 EXHAUST SYSTEM. U... 0 CLOGGED, PLUGGED WITH FOREIGN MATERIAL, DIRT/D... USDVDR 118.0 102 62 82 
3 INTERMITTENT PROBL 20943 SPECIAL (NO FAILURE) XXIPNF 97.0 102 62 82 
4 CAMPAIGN 19134 CAMPAIGN USSCR1 315.0 102 62 82 

私はクラスFAILMODEを予測しようとしています。 FAILMODEには122のユニークな値しかありません。それらは私のクラスです。

行の他のすべてのデータに基づいて、私はワンホットマトリクス、またはクラスそのものをテストセットの計算結果にしたいと思っています。ここに私のコードはそれほど遠

model.fit(X, Y, nb_epoch=len(faults_training), batch_size=10) 

says-チュートリアルでは、私は、私はちょうどfollowing-

model.fit(faults_training['FAILMODE'], faults_testing['FAILMODE'], nb_epoch=len(faults_training), batch_size=10) 
を試されているものXかYか分からないのはここ

from keras.models import Sequential 
from keras.layers import Dense 
Using Theano backend. 

faults_testing = faults[:14843] 
faults_training = faults[14844:] 

model = Sequential() 
model.add(Dense(len(faults.FAILMODE.unique()) + 20, input_dim=len(faults_training), init='uniform', activation='relu')) 
model.add(Dense(len(faults_training), init='uniform', activation='relu')) 
model.add(Dense(len(faults.FAILMODE.unique()), init='uniform', activation='sigmoid')) 

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 

があります

このエラーが発生しました。

ValueError        Traceback (most recent call last) 
<ipython-input-54-e8765933cfb9> in <module>() 
----> 1 model.fit(faults_training['FAILMODE'], faults_testing['FAILMODE'], nb_epoch=len(faults_training), batch_size=10) 

ValueError: Error when checking model input: expected dense_input_1 to have shape (None, 34631) but got array with shape (34631L, 1L) 

Ple答えは徹底してください。ありがとうございました!

答えて

0

通常のニューラルネットワーク(ケラスシーケンシャルモデルを含む)は、データ(X)のfloatとラベル/クラス(Y)のintまたはone-hot-encodingを受け入れます。したがって、要件に合わせてデータセットを変換する必要があります。だから、何がやりたいことがあります。

  1. は、すべてのカテゴリ(文字列)の値(。例えばキャンペーン/ TRP、BNRBC1、XXIPNF)floatへの(あなたがデータを正規化することができれば、それは良くなる)
  2. 入れの地図X
  3. 中(ラベル列を除く)すべてのデータ列は、Y内(唯一の1列でなければなりません)ラベル列を入れて、to_categorical例えばY = to_categorical(Y)
  4. スプリットトレーニングを使用してワンホット・エンコーディングに変換し、試験データを使用してtrain_test_splitX_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.33)
  5. model.fit(X_train, Y_train, nb_epoch=100, batch_size=10)を使用してモデルをトレーニングします。後でトレーニング
  6. の速さと正確さのあなたの期待に基づいてnb_epochbatch_sizeあなたはまた、数値http://fastml.com/converting-categorical-data-into-numbers-with-pandas-and-scikit-learn/

    にカテゴリーデータを変換する方法のアイデアを得るために、この記事をチェックすることができscores = model.evaluate(self, X_test, Y_test, batch_size=10)

を使用して精度を評価調整

+0

私は正しいアプローチのように思っていますが、今は 'ValueError:サンプル数の不一致で入力変数が見つかりました:[49475,6035950]' train_test_split(X 、Y、test_size = 0.33'。私は 'Y = to_categorical(Y)'を実行すると、len(Y)は現在6035950になります。分割。私は間違って何をしていますか? – NickTheInventor

+0

データフレームをX&Yに変換するために使用するコードを表示できますか? –

関連する問題