多クラス分類問題としてモデル構築

2024年6月17日

多クラス分類問題としてモデルを構築します。多クラス分類の場合、出力層の活性化関数はsoftmax関数を使用し、損失関数はsparse_categorical_crossentropyを使用します。以下が修正されたコードです:

python
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler, LabelEncoder
from keras.models import Sequential
from keras.layers import Dense

# データの読み込み
data = pd.read_csv(r'/home/share/temp/shipping_size_traning.csv')

# カテゴリカル変数のエンコード
category_label_encoder = LabelEncoder()
data['category_encoded'] = category_label_encoder.fit_transform(data['category'])

product_name_label_encoder = LabelEncoder()
data['product_name_encoded'] = product_name_label_encoder.fit_transform(data['product_name'])

product_maker_number_label_encoder = LabelEncoder()
data['product_maker_number_encoded'] = product_maker_number_label_encoder.fit_transform(data['product_maker_number'])

# 目的変数と説明変数の分割
X = data.drop(['size', 'product_name', 'product_maker_number', 'original_product_code', 'category'], axis=1)  # 説明変数
y = data['size']  # 目的変数

# データの標準化
scaler = StandardScaler()
X = scaler.fit_transform(X)

# カテゴリカル変数をエンコードした結果の次元数を取得
num_categories = len(category_label_encoder.classes_)
num_product_names = len(product_name_label_encoder.classes_)
num_product_makers = len(product_maker_number_label_encoder.classes_)

# 訓練データとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# モデルの構築
model = Sequential([
    Dense(64, activation='relu', input_shape=(X_train.shape[1],)),
    Dense(64, activation='relu'),
    Dense(num_categories + num_product_names + num_product_makers, activation='softmax')  # クラスの総数に合わせる
])

# モデルのコンパイル
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

# モデルのトレーニング
model.fit(X_train, y_train, epochs=5, batch_size=32, validation_data=(X_test, y_test))

# モデルの評価
loss, accuracy = model.evaluate(X_test, y_test)
print("Test Loss:", loss)
print("Test Accuracy:", accuracy)

この修正により、多クラス分類の問題に適したモデルが構築されます。

未分類

Posted by ぼっち