多くのプログラムでは一番最初に画面に「Hello World」と言う文字を表示させるのが基本中の基本で、まさに入口となっていますが、PythonでのAI活用・AI開発ではどうでしょうか?
AIの「Hello World」に相当するような超初級の実践例として、シンプルな機械学習モデルの作成やデータの分類があります。これは、基本的なPythonのライブラリを使ってAIの基本的な動作を体験するものです。具体的には、**「Irisデータセットを使った分類問題」や「簡単な線形回帰モデル」**がよく使われます。
例1: Irisデータセットを使った分類(機械学習の入門例)
「Iris(アイリス)」データセットは、花の品種を特徴量から分類するという問題で、AIの基本的なモデルを学ぶには非常に適しています。この例は、Pythonの有名なライブラリscikit-learnを使用します。
# 必要なライブラリをインポート
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# データセットを読み込む
iris = load_iris()
# データを訓練用とテスト用に分割
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2)
# ランダムフォレストモデルを作成
model = RandomForestClassifier()
# モデルを訓練(学習)する
model.fit(X_train, y_train)
# テストデータで予測を行う
y_pred = model.predict(X_test)
# モデルの精度を確認
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
このコードは、Irisデータセットを使って、花の品種を予測する機械学習モデルを作成し、その精度を評価します。わずか数行のコードで、PythonとAIの基本的な仕組みを学べます。
例1のコードを実行した場合に何が起こるのか、初心者向けに詳しく説明します。
この例では、Iris(アイリス)データセットを使って、AIに「花の種類を予測させる」という基本的な機械学習モデルを作成しています。では、各ステップで何が行われているのかを一つずつ見ていきましょう。
1. ライブラリのインポート
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
この部分では、Pythonで使うための**ライブラリ(ツールや機能)**を準備しています。以下のものがインポートされています。
- load_iris: 有名なアイリスデータセットを読み込むためのものです。このデータには、花びらやがく片の長さ・幅が含まれ、どの品種の花かがラベルされています。
- train_test_split: データを「訓練用データ」と「テスト用データ」に分割するための関数です。
- RandomForestClassifier: AIの「モデル」を作るためのアルゴリズムです。これが学習して予測を行います。
- accuracy_score: モデルの正確さを測るための関数です。
2. データセットを読み込む
iris = load_iris()
この行で、Irisデータセットを読み込みます。このデータセットには、以下のようなデータが含まれています。
- 特徴量: 花びらやがく片の長さや幅などの数字データ(これはAIが学習するための情報です)。
- ターゲット(ラベル): それぞれの花がどの種類に属するか(アイリスの品種:Setosa、Versicolor、Virginica)という情報。
3. データを訓練用とテスト用に分ける
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2)
ここで、データを訓練用(学習用)とテスト用に分けます。
- X_train: 訓練用の特徴量データ(花びらの長さ・幅など)。
- y_train: 訓練用のラベル(品種の種類)。
- X_test: テスト用の特徴量データ。
- y_test: テスト用のラベル。
「訓練」と「テスト」を分けるのは、AIが学習したデータとまったく新しいデータを使って、どのくらい正確に予測できるかをチェックするためです。ここでは、データの20%をテスト用に取っています。
4. ランダムフォレストモデルを作成
model = RandomForestClassifier()
この行で、AIに学習させるためのランダムフォレストモデルを作成します。
ランダムフォレストとは、多くの「決定木」(Yes/Noを繰り返すツリー状のモデル)を組み合わせて予測を行うアルゴリズムです。決定木だけだと予測が不安定なことがあるので、複数の木を組み合わせることで予測精度を高めています。
5. モデルを訓練する(学習させる)
model.fit(X_train, y_train)
ここで、AIに**訓練用データ(X_train)**を使って、花の品種を学習させます。AIは、特徴量(花びらの長さや幅など)と、それに対応する品種(ラベル)を照らし合わせて「この特徴を持つ花はどの品種か?」という予測をするようになります。
6. テストデータで予測を行う
y_pred = model.predict(X_test)
AIが学習したら、今度は**テスト用データ(X_test)**を使って予測を行います。AIは、テスト用データに含まれる新しい花の特徴量を見て、どの品種かを予測します。
- y_pred: AIが予測した品種のラベルです(ここで予測結果が得られます)。
7. モデルの精度を確認する
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
最後に、AIがどれだけ正確に予測できたかを確認します。
- accuracy_score: 実際の品種のラベル(y_test)と、AIが予測したラベル(y_pred)を比較して、正解率(Accuracy)を計算します。例えば、80%の精度で予測できた場合、「Accuracy: 0.8」という結果が表示されます。
実行結果
このコードを実行すると、ターミナルに以下のように表示されることが考えられます。
Accuracy: 0.9
この結果は、AIが90%の確率で正しい品種を予測できたという意味です。学習したデータを基に、AIは新しい花の品種を高い精度で判別できるようになりました。
まとめ
この例では、Irisデータセットを使って、AIが花の特徴から品種を予測するプロセスを体験しました。全体の流れは以下の通りです。
- データセットを読み込み
- 訓練用とテスト用にデータを分ける
- ランダムフォレストモデルを作成
- モデルを訓練(学習)
- テストデータで予測
- 正確さ(精度)を確認
これが、AIの最も基本的な「学習と予測」の流れです。
このプログラムを実行した後は人間が何か入力する必要はありません。すべての処理が自動的に行われます。詳しく説明すると、以下のような流れになります。
プログラムの流れ
- データの読み込み
アイリスのデータセットをPythonが自動で読み込みます。 - データの分割
訓練用とテスト用にデータを分割しますが、これも自動です。 - モデルの作成
ランダムフォレストモデルを作成しますが、ここでも特に人間が何か操作する必要はありません。 - モデルの訓練(学習)
訓練データを使って、AIが自動で学習します。人間が操作するのはここでもなく、データをもとにAIが一生懸命に予測するための法則を学んでいます。 - テストデータでの予測
学習した結果をもとに、テストデータを使ってAIが自動的に予測します。 - 結果の表示
AIの予測がどのくらい正確だったか(正解率)を最後に画面に表示します。
プログラムの実行中に人間の入力が必要ない理由
このプログラムは、すべてのデータを事前に用意し、それに基づいてAIが自動で学習・予測を行うため、人間がリアルタイムで何か入力する必要がない仕組みになっています。
例えば、ゲームのようにユーザーからの操作を待つようなものではなく、AIがデータを見て自分で予測を行うので、あとは実行結果(正確さ)が表示されるだけです。
ですので、プログラムを実行すると一連の流れがすべて自動で完了し、人間が入力したり操作したりする場面はない、ということになります。
これをアレンジするにはどうすれば良いの?
この「Hello World」的なAIプログラムをアレンジして、より興味深いものにする方法はいくつかあります。以下にいくつかのアイディアを挙げてみます。
1. データセットを変更する
- 他のデータセットを使う: アイリスのデータセット以外にも、たくさんのデータセットがあります。例えば、手書き数字(MNIST)や、ワインの品質データなどを使ってみると、新しいパターンや結果が得られます。
2. アルゴリズムの変更
- 異なる機械学習アルゴリズムを使用する: ランダムフォレストの代わりに、決定木やSVM(サポートベクターマシン)、KNN(k近傍法)など他のアルゴリズムを試すことで、結果がどのように変わるかを見てみるのも面白いです。
3. ハイパーパラメータの調整
- モデルの設定を調整する: ランダムフォレストの木の数や深さなど、ハイパーパラメータを変えてみて、モデルの性能がどのように変化するかを試してみることができます。
4. データの可視化
- 結果を可視化する: 予測結果やデータの散布図を作成して、AIがどのようにデータを分類したかを視覚的に確認できます。例えば、matplotlibやseabornを使って可視化してみましょう。
5. ユーザーインターフェースの追加
- インタラクティブな要素を追加する: コマンドラインで結果を表示するのではなく、FlaskやStreamlitを使ってWebアプリとして結果を表示することもできます。これにより、ユーザーが自分でデータを入力して予測を試せるようになります。
6. モデルの評価方法を変更する
- 異なる評価指標を使う: 精度だけでなく、F1スコアやROC曲線など他の評価指標も試して、モデルのパフォーマンスをより多角的に評価してみると良いでしょう。
7. データの前処理を学ぶ
- データの前処理を行う: 欠損値の処理や、特徴量のスケーリング、エンコーディングなど、データの準備を行うことで、モデルの精度を上げることができるかもしれません。
アレンジの方法を試す
これらのアイディアを元に、プログラムを改良してみると、AIの基本的な仕組みや応用方法について、より深く理解できるでしょう。また、自分が興味を持った方向に進めることで、楽しみながら学ぶことができると思います。ぜひ挑戦してみてください!