はじめに
Scikit-learnは、Pythonの機械学習ライブラリで、分類、回帰、クラスタリング、次元削減、モデル選択、前処理などの機能が提供されています。ここでは、Scikit-learnの基本的な使い方と機能について説明します。
本記事で使用しているソースコードはこちらです
目次
1. Scikit-learnのインストール
Scikit-learnはpipを使って簡単にインストールできます。
pip install scikit-learn
2. データの読み込みと前処理
Scikit-learnでは、データの前処理や分割を行うためのモジュールが提供されています。まずは、データセットを読み込みましょう。
from sklearn import datasets
breast_cancer = datasets.load_breast_cancer()
X = breast_cancer.data
y = breast_cancer.target
データセットを学習用とテスト用に分割するには、train_test_split
関数を使用します。
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
3. モデルの選択と訓練
Scikit-learnでは、多くの機械学習アルゴリズムが提供されており、簡単にモデルの選択と訓練が行えます。ここでは、決定木を使った分類器を作成します。
from sklearn.tree import DecisionTreeClassifier
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)
4. モデルの評価
学習したモデルの性能を評価するために、テストデータを使って予測を行い、正解率を計算します。
from sklearn.metrics import accuracy_score
y_pred = clf.predict(X_test)
acc = accuracy_score(y_test, y_pred)
print("Accuracy:", acc)
5. モデルの保存と読み込み
学習したモデルを保存して再利用することができます。pickle
モジュールまたはjoblib
モジュールを使ってモデルを保存し、読み込むことができます。ここでは、joblib
を使用した例を示します。
pip install joblib
import joblib
# モデルの保存
joblib.dump(clf, 'model.pkl')
# モデルの読み込み
loaded_clf = joblib.load('model.pkl')
# 読み込んだモデルで予測
y_pred = loaded_clf.predict(X_test)
acc = accuracy_score(y_test, y_pred)
print("Accuracy:", acc)
6. ハイパーパラメータチューニング
モデルの性能を向上させるために、ハイパーパラメータを調整します。Scikit-learnでは、GridSearchCV
やRandomizedSearchCV
を使って簡単にハイパーパラメータの探索ができます。ここでは、GridSearchCV
を使った例を示します。
from sklearn.model_selection import GridSearchCV
param_grid = {'max_depth': [2, 3, 4, 5],
'min_samples_split': [2, 3, 4, 5]}
grid_search = GridSearchCV(DecisionTreeClassifier(), param_grid, cv=5, scoring='accuracy')
grid_search.fit(X_train, y_train)
# 最適なハイパーパラメータの組み合わせを表示
print("Best parameters:", grid_search.best_params_)
# 最適なハイパーパラメータで訓練されたモデルを取得
best_clf = grid_search.best_estimator_
# モデルの評価
y_pred = best_clf.predict(X_test)
acc = accuracy_score(y_test, y_pred)
print("Accuracy:", acc)
これで、Scikit-learnを使って機械学習モデルの作成、評価、保存、読み込み、ハイパーパラメータチューニングができるようになりました。Scikit-learnには他にも多くの機能がありますので、公式ドキュメントを参照してください。