カテゴリー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))

この修正では、カテゴリー名をテキストデータとしてベクトル化しています。これで、カテゴリー名も含めたモデルの学習と評価が行えるはずです。

未分類

Posted by ぼっち