PythonとAI:初心者向け!簡単な機械学習モデルの作成方法

AI(人工知能)と機械学習は、近年ますます注目を集めている技術です

AIを活用したサービスは、検索エンジン、チャットボット、画像認識など、私たちの生活のあらゆる場面で利用されています

しかし、「AIや機械学習は難しそう…」と感じる方も多いのではないでしょうか?

実は、Pythonを使えば、初心者でも簡単に機械学習モデルを作成できます

本記事では、人気の機械学習ライブラリ scikit-learn を活用し、基本的な機械学習モデルを作成する方法を解説します

プログラミング初心者でも理解しやすいように、ステップバイステップで説明していきます

Python環境の準備

まず、Python環境を整え、必要なライブラリをインストールします

必要なライブラリのインストール

機械学習には scikit-learn、データ処理には pandas、数値計算には numpy、グラフ表示には matplotlib を使用します

pip install scikit-learn pandas numpy matplotlib

データセットの準備

今回は、機械学習の入門によく使われる Irisデータセット を使用します

これは、花の特徴(がく片や花弁の長さなど)をもとに、3種類のアヤメを分類するデータセットです

from sklearn.datasets import load_iris
import pandas as pd

# Irisデータセットをロード
iris = load_iris()

# データフレームを作成
iris_df = pd.DataFrame(iris.data, columns=iris.feature_names)
iris_df['target'] = iris.target

# データフレームの最初の5行を表示
print(iris_df.head())

このコードを実行すると、データの一部が表示されます。


機械学習モデルの作成

データの前処理

モデルを作成する前に、データを訓練用とテスト用に分割します

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
import pandas as pd

# Irisデータセットをロード
iris = load_iris()

# データフレームを作成
iris_df = pd.DataFrame(iris.data, columns=iris.feature_names)
iris_df['target'] = iris.target

# 特徴量と目的変数を分離
features = iris_df.iloc[:, :-1]  # 最後の列以外が特徴量
target = iris_df['target']  # 最後の列が目的変数

# 訓練用データとテスト用データに分割
features_train, features_test, target_train, target_test = train_test_split(features, target, test_size=0.2, random_state=42)

モデルの学習

今回は、シンプルな決定木(Decision Tree)アルゴリズムを使ってモデルを作成します

from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
import pandas as pd

# Irisデータセットをロード
iris = load_iris()

# データフレームを作成
iris_df = pd.DataFrame(iris.data, columns=iris.feature_names)
iris_df['target'] = iris.target

# 特徴量と目的変数を分離
features = iris_df.iloc[:, :-1]  # 最後の列以外が特徴量
target = iris_df['target']  # 最後の列が目的変数

# 訓練用データとテスト用データに分割
features_train, features_test, target_train, target_test = train_test_split(features, target, test_size=0.2, random_state=42)

# 決定木モデルを作成
tree_model = DecisionTreeClassifier()

# モデルを学習
tree_model.fit(features_train, target_train)

モデルの評価

作成したモデルの精度を確認してみましょう

from sklearn.metrics import accuracy_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
import pandas as pd

# Irisデータセットをロード
iris = load_iris()

# データフレームを作成
iris_df = pd.DataFrame(iris.data, columns=iris.feature_names)
iris_df['target'] = iris.target

# 特徴量と目的変数を分離
features = iris_df.iloc[:, :-1]  # 最後の列以外が特徴量
target = iris_df['target']  # 最後の列が目的変数

# 訓練用データとテスト用データに分割
features_train, features_test, target_train, target_test = train_test_split(features, target, test_size=0.2, random_state=42)

# 決定木モデルを作成
tree_model = DecisionTreeClassifier()

# モデルを学習
tree_model.fit(features_train, target_train)

# テストデータで予測
predictions = tree_model.predict(features_test)

# 精度を計算して表示
accuracy = accuracy_score(target_test, predictions)
print(f"Accuracy: {accuracy:.2f}")

このコードを実行すると、分類の正確さ(Accuracy)が表示されます


モデルの可視化と改善

データの可視化

データの分布を視覚的に確認することで、モデルの理解が深まります

import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
import pandas as pd

# Irisデータセットをロード
iris = load_iris()

# データフレームを作成
iris_df = pd.DataFrame(iris.data, columns=iris.feature_names)
iris_df['target'] = iris.target

# 散布図を描画
plt.scatter(iris_df.iloc[:, 0], iris_df.iloc[:, 1], c=iris_df['target'])
plt.xlabel(iris.feature_names[0])
plt.ylabel(iris.feature_names[1])
plt.title("Iris Dataset Visualization") # タイトルを追加
plt.show()

モデルの改善方法

モデルの精度を向上させるために、以下の方法を試してみましょう

・特徴量の選択(不要な特徴を除外する)

・ハイパーパラメータの調整(max_depth を設定するなど)

・他のアルゴリズムの利用(ランダムフォレストやSVMなど)

例:決定木の深さを制限して過学習を防ぐ

from sklearn.metrics import accuracy_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
import pandas as pd

# Irisデータセットをロード
iris = load_iris()

# データフレームを作成
iris_df = pd.DataFrame(iris.data, columns=iris.feature_names)
iris_df['target'] = iris.target

# 特徴量と目的変数を分離
features = iris_df.iloc[:, :-1]  # 最後の列以外が特徴量
target = iris_df['target']  # 最後の列が目的変数

# 訓練用データとテスト用データに分割
features_train, features_test, target_train, target_test = train_test_split(features, target, test_size=0.2, random_state=42)

# 決定木の深さを制限
limited_tree_model = DecisionTreeClassifier(max_depth=3)
limited_tree_model.fit(features_train, target_train)
limited_predictions = limited_tree_model.predict(features_test)
limited_accuracy = accuracy_score(target_test, limited_predictions)
print(f"Limited Depth Accuracy: {limited_accuracy:.2f}")

まとめ

本記事では、Pythonを使った初心者向けの機械学習モデルの作成方法を紹介しました

・scikit-learn を使ってデータを準備し、機械学習モデルを作成

・DecisionTreeClassifier を用いた分類モデルを構築

・モデルの評価と可視化、改善方法について解説


今回の内容を学ぶことで、機械学習の基本的な流れを理解できたと思います

次のステップとして、ニューラルネットワークを用いた深層学習(TensorFlow や PyTorch)に挑戦するのもおすすめです

機械学習の世界は奥深いですが、Pythonを活用すれば初心者でも手軽に取り組めます

ぜひ、身の回りのデータを使って、オリジナルのモデルを作成してみてください!

おつー


SEshopは、エンジニアやクリエイター向けの技術書や実用書が充実しているオンラインストアです。最新の技術トレンドを学びたい方におすすめ!