ナイーブベイズの予測確率を特徴量としてランダムフォレストに渡す方法の一例
以下は、ナイーブベイズの予測確率を特徴量としてランダムフォレストに渡す方法の一例です。
python
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
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 = data[['product_name', 'name', 'description', 'between_cost']]
y = data['size']
# データの分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# ナイーブベイズモデルの定義と訓練
vectorizer = CountVectorizer()
X_train_vectorized = vectorizer.fit_transform(X_train['description'])
nb_classifier = MultinomialNB()
nb_classifier.fit(X_train_vectorized, y_train)
# テストデータに対するナイーブベイズの予測確率を取得
X_test_vectorized = vectorizer.transform(X_test['description'])
nb_pred_proba = nb_classifier.predict_proba(X_test_vectorized)
# ナイーブベイズの予測確率を特徴量として追加
X_test_with_nb_pred_proba = X_test.copy()
for i, label in enumerate(nb_classifier.classes_):
X_test_with_nb_pred_proba[f'nb_pred_proba_{label}'] = nb_pred_proba[:, i]
# ランダムフォレストモデルの定義と訓練
rf_classifier = RandomForestClassifier()
rf_classifier.fit(X_test_with_nb_pred_proba, y_test)
# テストデータに対する予測
rf_pred = rf_classifier.predict(X_test_with_nb_pred_proba)
# ランダムフォレストの評価
accuracy = accuracy_score(y_test, rf_pred)
print("Accuracy:", accuracy)
print(classification_report(y_test, rf_pred))
このコードでは、ナイーブベイズモデルを使用してテキストデータをベクトル化し、その後、テストデータの各サンプルに対するナイーブベイズの予測確率を取得します。次に、これらの予測確率を元の特徴量に追加し、ランダムフォレストモデルをその特徴量で訓練します。最後に、テストデータに対するランダムフォレストモデルの予測を行い、性能を評価します。

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