グリッドサーチ組み込んで
理解しました。以下に、ナイーブベイズ分類器とGridSearchCVを組み合わせてハイパーパラメータを調整する方法を示します。
python
from sklearn.model_selection import GridSearchCV
from sklearn.pipeline import Pipeline
from imblearn.pipeline import Pipeline as SMOTEPipeline
from imblearn.over_sampling import SMOTE
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
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']
# オーバーサンプリングを含むパイプラインを定義
pipeline = SMOTEPipeline([
('vectorizer', CountVectorizer()),
('smote', SMOTE(random_state=42)),
('classifier', MultinomialNB())
])
# ハイパーパラメータの候補を定義
param_grid = {
'vectorizer__ngram_range': [(1, 1), (1, 2)], # unigram または bigram
'classifier__alpha': [0.1, 0.5, 1.0],
'classifier__fit_prior': [True, False]
}
# GridSearchCVを用いて探索
grid_search = GridSearchCV(pipeline, param_grid, cv=5)
grid_search.fit(X, y)
# 最適なハイパーパラメータを表示
print("Best Parameters:", grid_search.best_params_)
# 最適なモデルを取得
best_pipeline = grid_search.best_estimator_
# テストデータで予測
y_pred = best_pipeline.predict(X)
# 分類器の評価
accuracy = accuracy_score(y, y_pred)
print("Accuracy:", accuracy)
# 分類器の詳細な評価
print(classification_report(y, y_pred))
このコードでは、ナイーブベイズ分類器を含むパイプラインを定義し、CountVectorizerとSMOTEを組み込んでいます。次に、GridSearchCVを用いてハイパーパラメータを探索し、最適なモデルを見つけます。最後に、最適なモデルでテストデータを予測し、性能を評価します。

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