ナイーブベイスでsizeを分類するでしょ。分類したsizeデータを説明変数としてランダムフォレストへ渡して新たな説明変数に加えたいの。
以下は、ナイーブベイズで分類されたサイズデータを説明変数としてランダムフォレストに追加するコードです。
python
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score, classification_report
import pandas as pd
# データの読み込み
data = pd.read_csv('/home/share/temp/shipping_size_traning_add_category.csv')
# 商品名を特徴量として取得
X_product_name = data['product_name']
# サイズデータを目的変数として取得
y = data['size']
# ナイーブベイズのモデルを作成
nb_model = MultinomialNB()
nb_model.fit(X_product_name, y)
# ナイーブベイズで予測されたサイズデータを新たな説明変数として追加
data['nb_predicted_size'] = nb_model.predict(X_product_name)
# 新たな説明変数をランダムフォレストに追加
X_combined = pd.get_dummies(data[['nb_predicted_size']])
# 商品名をCountVectorizerでベクトル化して説明変数として追加
from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer()
X_product_name_vectorized = vectorizer.fit_transform(X_product_name)
X_combined = pd.concat([X_combined, pd.DataFrame(X_product_name_vectorized.toarray())], axis=1)
# 目的変数を元のサイズデータから予測されたサイズデータに変更
y = data['nb_predicted_size']
# データをトレーニングセットとテストセットに分割
X_train, X_test, y_train, y_test = train_test_split(X_combined, y, test_size=0.2, random_state=42)
# ランダムフォレストのモデルを作成
rf_model = RandomForestClassifier()
rf_model.fit(X_train, y_train)
# テストセットでの予測
y_pred = rf_model.predict(X_test)
# モデルの評価
accuracy = accuracy_score(y_test, y_pred)
print("Random Forest Accuracy:", accuracy)
print(classification_report(y_test, y_pred))
このコードでは、ナイーブベイズによって分類されたサイズデータを新しい説明変数として追加し、それをランダムフォレストのモデルに組み込んでいます。

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