グリッドサーチ組み込んで

理解しました。以下に、ナイーブベイズ分類器と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を用いてハイパーパラメータを探索し、最適なモデルを見つけます。最後に、最適なモデルでテストデータを予測し、性能を評価します。

未分類

Posted by ぼっち