AI(人工知能)と機械学習は、近年ますます注目を集めている技術です
AIを活用したサービスは、検索エンジン、チャットボット、画像認識など、私たちの生活のあらゆる場面で利用されています
しかし、「AIや機械学習は難しそう…」と感じる方も多いのではないでしょうか?
実は、Pythonを使えば、初心者でも簡単に機械学習モデルを作成できます
本記事では、人気の機械学習ライブラリ scikit-learn を活用し、基本的な機械学習モデルを作成する方法を解説します
プログラミング初心者でも理解しやすいように、ステップバイステップで説明していきます

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

