カテゴリーIDより、カテゴリ名の方がいい?strに変換してあるから変わらないかな
カテゴリー名の方が、モデルにとってより意味のある情報を提供する可能性があります。カテゴリー名を特徴量として使用することで、そのカテゴリーに関するより豊富な情報が含まれる可能性があります。ただし、カテゴリー名をそのまま使用する前に、適切な前処理を行う必要があります。たとえば、カテゴリー名に含まれる文字列を小文字に変換し、句読点や特殊文字を削除するなどの処理を行うことが一般的です。
以下は、カテゴリー名を使用する場合の修正したコードです。
python
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report
import pandas as pd
from scipy.sparse import hstack
# データの読み込み
data = pd.read_csv('/home/share/temp/shipping_size_traning.csv')
# 商品名とカテゴリー名を特徴量として取得
X_product_name = data['product_name']
X_category_name = data['category_name']
y = data['size']
# テキストデータを単語の出現回数に変換するCountVectorizerを定義
vectorizer = CountVectorizer()
# 商品名のテキストデータを特徴量に変換
X_product_name_vectorized = vectorizer.fit_transform(X_product_name)
# カテゴリー名のテキストデータを特徴量に変換
X_category_name_vectorized = vectorizer.fit_transform(X_category_name)
# 商品名のテキストデータとカテゴリー名の特徴量を結合
X_combined = hstack([X_product_name_vectorized, X_category_name_vectorized])
# データの分割
X_train, X_test, y_train, y_test = train_test_split(X_combined, y, test_size=0.2, random_state=42)
# ナイーブベイズ分類器を定義
nb_classifier = MultinomialNB()
# ナイーブベイズ分類器を訓練
nb_classifier.fit(X_train, y_train)
# テストデータで予測
y_pred = nb_classifier.predict(X_test)
# 分類器の評価
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
# 分類器の詳細な評価
print(classification_report(y_test, y_pred))
この修正では、カテゴリー名をテキストデータとしてベクトル化しています。これで、カテゴリー名も含めたモデルの学習と評価が行えるはずです。

ディスカッション
コメント一覧
まだ、コメントがありません