web-dev-qa-db-ja.com

Pandas DataFrameおよびKeras

Kerasを使用してPythonで感情分析を実行しようとしています。そのためには、テキストのWord埋め込みを実行する必要があります。データを自分のモデル:

model_1 = Sequential()
model_1.add(Embedding(1000,32, input_length = X_train.shape[0]))
model_1.add(Flatten())
model_1.add(Dense(250, activation='relu'))
model_1.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

私の列車データの形は

(4834,)

そしてPandasシリーズオブジェクトです。モデルを近似し、他のデータで検証しようとすると、次のエラーが表示されます。

model_1.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=2, batch_size=64, verbose=2)

ValueError:モデル入力のチェック中にエラーが発生しました:embedding_1_inputには形状(None、4834)が必要ですが、形状(4834、1)の配列が必要です

Kerasに適するようにデータを変更するにはどうすればよいですか? np.reshapeを試してみましたが、その関数にNone要素を配置することはできません。

前もって感謝します

13
Gonzalo Donoso

Noneは、トレーニングに入る予定の行の数であるため、定義できません。また、Kerasはpandasデータフレームではなくnumpy配列を入力として必要とします。最初にdf.valuesでdfをnumpy配列に変換してからnp.reshape((-1, 4834))を実行する必要があります。 np.float32を使用しますこれは、GPUでトレーニングする場合に重要です。

16
Dat Tran

https://pypi.org/project/keras-pandas/

最も簡単な方法は、keras_pandasパッケージを使用してpandasデータフレームをkerasに適合させることです。以下に示すコードは、パッケージドキュメントの一般的な例です。

from keras import Model
from keras.layers import Dense

from keras_pandas.Automater import Automater
from keras_pandas.lib import load_titanic

observations = load_titanic()

# Transform the data set, using keras_pandas
categorical_vars = ['pclass', 'sex', 'survived']
numerical_vars = ['age', 'siblings_spouses_aboard', 'parents_children_aboard', 'fare']
text_vars = ['name']

auto = Automater(categorical_vars=categorical_vars, numerical_vars=numerical_vars, text_vars=text_vars,
 response_var='survived')
X, y = auto.fit_transform(observations)

# Start model with provided input nub
x = auto.input_nub

# Fill in your own hidden layers
x = Dense(32)(x)
x = Dense(32, activation='relu')(x)
x = Dense(32)(x)

# End model with provided output nub
x = auto.output_nub(x)

model = Model(inputs=auto.input_layers, outputs=x)
model.compile(optimizer='Adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

# Train model
model.fit(X, y, epochs=4, validation_split=.2)
8
Pardhu

これを機能させるには、Pandasの特定のバージョンが必要です。現在のバージョン(2018年8月20日現在)を使用している場合、これは失敗します。

PandasとKeras(pip uninstall ....)をロールバックして、このような特定のバージョンをインストールします

python -m pip install pandas==0.19.2
0
Tim Seed