NumPy配列やPandas DataFrameの入力

Kerasは柔軟な入力形式に対応しており、モデルの学習や評価の際に NumPy配列Pandas DataFrame をデータとして使用することが可能です。以下では、それぞれの入力形式についての特徴と使用方法を詳しく説明します。


1. NumPy配列による入力

特徴:

  • Kerasは内部的にTensorFlowのテンソルを扱いますが、NumPy配列は自動的にテンソルに変換されるため、最も基本的で広く使われる形式です。

  • 多次元のデータ(画像、時系列など)にも柔軟に対応できます。

使用例:

python
import numpy as np from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense # データ準備 X = np.random.rand(100, 10) # 入力データ(100サンプル、10特徴量) y = np.random.randint(0, 2, size=(100, 1)) # ラベル(二値分類) # モデル構築 model = Sequential([ Dense(32, activation='relu', input_shape=(10,)), Dense(1, activation='sigmoid') ]) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) # 学習 model.fit(X, y, epochs=10, batch_size=16)

2. Pandas DataFrameによる入力

特徴:

  • Pandasはデータ前処理・分析に優れており、欠損値処理、カテゴリ変数のエンコード、フィルタリングなどを簡潔に行えます。

  • KerasはDataFrameを内部でNumPy配列に変換して処理しますが、カラム名付きでの処理が必要な場合前処理との連携に便利です。

使用例:

python
import pandas as pd from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense # データ準備 df = pd.DataFrame(np.random.rand(100, 10), columns=[f'feat_{i}' for i in range(10)]) labels = pd.Series(np.random.randint(0, 2, size=100)) # モデル構築 model = Sequential([ Dense(32, activation='relu', input_shape=(df.shape[1],)), Dense(1, activation='sigmoid') ]) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) # 学習 model.fit(df, labels, epochs=10, batch_size=16)

注意点

項目 内容
データ型 NumPy配列 (np.ndarray) や Pandasの DataFrame / Series を受け入れ可能
欠損値 欠損値(NaN)があるとエラーが発生するため、前処理で除去または補完が必要
正規化 特徴量が異なるスケールを持つ場合は、StandardScalerMinMaxScaler などで正規化することが推奨される
DataFrame使用時の推奨 データフローが複雑でない限り、内部でNumPy変換が行われるため、DataFrameを直接使っても問題ない

補足: Scikit-learnとの連携

KerasはScikit-learnと親和性が高いため、train_test_split()などと組み合わせて簡単に前処理・学習が行えます。

python
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(df, labels, test_size=0.2, random_state=42) model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=10)

まとめ

  • NumPy配列はKerasにとって基本的かつ高速な入力形式です。

  • Pandas DataFrameは前処理の利便性から非常に実用的で、Kerasもそのまま受け入れ可能です。

  • 欠損値やスケーリングに注意すれば、どちらの形式も柔軟に利用できます。

必要に応じて、Kerasのtf.data.Datasetを使った大規模データ処理への移行も検討できます。

生成日:2025/05/22