0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AIモデルの構築入門:SVMの実装

Last updated at Posted at 2023-05-31

はじめに

 この記事では、AIモデルの構築について基本的なフローを解説します。具体的には、サポートベクターマシン(SVM)を用いて、Pythonでモデルを構築する方法を紹介します。私たちは既存の無料のデータセットを利用するため、データ収集の手間はありません。AIモデルの構築に必要な基本的なスキルを学び、実装経験を積むための記事です。

1. 問題定義とデータセットの選択

 この記事では、SVMを用いた二値分類問題を扱います。具体的なデータセットとしては、アイリスデータセットを使用します。このデータセットには、アイリスの花の4つの特徴(がく片の長さと幅、花びらの長さと幅)が記録されており、その花がどの種類のアイリスか(setosa、versicolor、virginicaの3種類)がラベル付けされています。

2. データの読み込みと前処理

 Pythonのライブラリであるscikit-learnからアイリスデータセットをインポートします。また、データの前処理として、不要な特徴量を削除したり、ラベルを二値化(versicolorかどうか)する作業を行います。

from sklearn import datasets
from sklearn.preprocessing import LabelBinarizer

# データセットの読み込み
iris = datasets.load_iris()

# データフレーム化
df = pd.DataFrame(iris.data, columns=iris.feature_names)

# ラベルの二値化
lb = LabelBinarizer()
df['species'] = lb.fit_transform(iris.target)

# 先頭5行を表示
df.head()

3. モデルの訓練

 サポートベクトマシンは、scikit-learnのsvmモジュールに含まれています。ここでは、訓練データとテストデータを分割し、SVMモデルを訓練します。

from sklearn import svm
from sklearn.model_selection import train_test_split

# 特徴量とラベルに分割
X = df[iris.feature_names]
y = df['species']

# 訓練データとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2,random_state=42)

# SVMモデルのインスタンス作成
clf = svm.SVC()

# モデルの訓練
clf.fit(X_train, y_train)

4. モデルの評価

 訓練したモデルの評価を行います。評価指標は精度を使用します。scikit-learnのmetricsモジュールを使用して評価します。また、結果を視覚的に理解するために、混同行列を可視化します。

from sklearn import metrics
import seaborn as sns

# テストデータで予測
y_pred = clf.predict(X_test)

# 精度の計算
print("Accuracy:", metrics.accuracy_score(y_test, y_pred))

# 混同行列の作成
cm = metrics.confusion_matrix(y_test, y_pred)

# 混同行列の可視化
sns.heatmap(cm, annot=True)

5. モデルのチューニング

 ここでは、モデルのハイパーパラメータを調整します。SVMの主要なハイパーパラメータには、Cとgammaがあります。ハイパーパラメータの最適な組み合わせを見つけるために、グリッドサーチを使用します。

from sklearn.model_selection import GridSearchCV

# グリッドサーチのパラメータ
param_grid = {'C': [0.1, 1, 10, 100, 1000], 
              'gamma': [1, 0.1, 0.01, 0.001, 0.0001]}

# グリッドサーチの実施
grid = GridSearchCV(svm.SVC(), param_grid, refit = True, verbose = 3)
grid.fit(X_train, y_train)

6. モデルのデプロイ

 訓練されたモデルを保存し、新たなデータに対して予測を行うことで、モデルをデプロイします。Pythonのpickleライブラリを使用してモデルを保存します。

import pickle

# モデルの保存
with open('model.pkl', 'wb') as f:
    pickle.dump(clf, f)

保存したモデルは以下のようにして読み込むことができます。

# モデルの読み込み
with open('model.pkl', 'rb') as f:
    clf_loaded = pickle.load(f)

# 新たなデータでの予測
# new_data = ... (新たなデータ)
# predictions = clf_loaded.predict(new_data)

まとめ

 以上、Pythonを使ったサポートベクトマシンを用いたAIモデルの構築について説明しました。ここでは、問題定義、データの収集と前処理、モデルの選択と訓練、モデルの評価とチューニング、そしてモデルのデプロイのステップを通じて、モデル構築の一連の流れを学びました。

AIモデルを構築するためには、他にも多くのスキルが必要となります。それらのスキルについて学ぶためのリソースがありますので、ぜひ参照してください。

最後に、モデルがデプロイされてからも、モデルの性能をモニタリングし、必要に応じてモデルを再訓練することが重要です。このプロセスは継続的なものであり、データとともにモデルも進化し続ける必要があります。

今回学んだことを基に、あなた自身のAIモデルを構築してみてください。そして、その過程で遭遇するであろう新たな課題や疑問に対して、自ら解を見つけ、学びを深めていくことをお勧めします。さあ、あなたのAIジャーニーをスタートしましょう!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?