Pythonを使って機械学習を学ぼう!基礎から実装まで徹底解説

機械学習は現代のテクノロジーの中核を担う重要な技術です。
本記事では、Python初心者でも理解できるよう、機械学習の基礎から実装までを順を追って解説します。
AIと機械学習の違い、開発環境の構築、必要なライブラリの使い方、データ処理の手順まで、具体的なコード例を交えながら説明します。
Google Colaboratoryを使用すれば環境構築の手間なく始められるため、すぐに実践的な学習を開始できます。
Contents
機械学習とは?
機械学習(ML: Machine Learning)は コンピュータがデータからパターンを学び、予測や判断をおこなう技術です。
学習方法で3つに分類できます。
近年、ビッグデータと計算能力の向上で実用性が高まり、画像や音声認識、自然言語処理、レコメンデーションなどで多用されています。
AI(人工知能)との違い
AIは「人間のような知能をコンピュータで再現する」という広い概念で、機械学習はAIを実現するための手法の1つです。
ディープラーニングとの違い
ディープラーニングは多層ニューラルネットワークを利用して複雑なパターンを自動的に学習する機械学習の1分野です。
機械学習でできること
機械学習により多くの問題解決や業務効率化ができます。主な用途は下記のとおりです。
機械学習を始めるためには
機械学習を学ぶには、いくつかの準備ステップが必要です。
順番に、詳しく見ていきましょう。
Pythonツールやライブラリを準備する
環境構築の手間なく機械学習の学習を始められる、Google Colaboratoryがおすすめです。
# サンプルコード
import seaborn as sns
import matplotlib.pyplot as plt
# Irisデータセットを読み込む
iris = sns.load_dataset(‘iris’)
# 散布図を作成
sns.scatterplot(x=‘sepal_length’, y=‘sepal_width’, hue=‘species’, data=iris)
plt.show()
ローカルに構築する場合はAnacondaも利用しやすいです。
ライブラリはコマンド1つでインストールできます。
# Google Colaboratoryの場合
!pip install ライブラリ名
# Anaconda環境の場合
conda install ライブラリ名
# ローカル環境の場合
pip install ライブラリ名
Pythonの基礎や基本文法を学ぶ
Pythonは機械学習の分野でよく使われる言語です。
公式チュートリアルや東京大学のPythonプログラミング入門など学習手段は豊富です。
Pythonの基礎を固めれば、機械学習ライブラリのドキュメントを読み解き、サンプルコードを理解する力になります。
ライブラリでデータの準備と前処理を学ぶ
機械学習では、データの準備と前処理が全工程の約80%を占めるといわれており、質の高いデータの用意が、精度の高いモデル構築に重要です。
pandasライブラリは前処理に便利です。
import pandas as pd # pandasによる前処理と可視化の例
from sklearn import datasets
from sklearn.preprocessing import StandardScaler
wine = datasets.load_wine() # ワインの品質データセットを読み込み
wine_df = pd.DataFrame(wine.data, columns=wine.feature_names)
wine_df = wine_df.dropna() # 欠損値のある行を削除
scaler = StandardScaler() # データの前処理(標準化)
wine_scaled = scaler.fit_transform(wine_df)
wine_scaled_df = pd.DataFrame(wine_scaled, columns=wine.feature_names)
データの分布や関係性を視覚的に把握すれば、より効果的な前処理につながります。
# 前処理したデータを可視化
# MatplotlibやSeabornなどのライブラリはデータを可視化できます。
import matplotlib.pyplot as plt
wine_scaled_df.hist(figsize=(12, 10))
plt.suptitle(“Histograms of Scaled Wine Features”, fontsize=16)
plt.tight_layout(rect=[0, 0.03, 1, 0.95])
plt.show()
あわせて数学も学ぶと効果的です。
サンプルコードを参考にしつつコードを作る
基本的な流れを理解したら、サンプルを見ながら実際にコードを書いてみましょう。
サンプルコードはライブラリの公式文書などに多数あります。
# scikit-learnによるステップ①から⑤までの例
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
iris = datasets.load_iris() # ①irisデータセットをロード
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # ②データを分割
model = LogisticRegression(max_iter=1000) # ③ロジスティック回帰モデルを定義
model.fit(X_train, y_train) # ④モデルを訓練
y_pred = model.predict(X_test) # モデルをテスト
accuracy = accuracy_score(y_test, y_pred) # ⑤精度を評価
print(“分類モデルの精度:”, accuracy)
Pythonでの機械学習の応用
本項では機械学習の応用のうち、3点に絞ってご紹介します。
ニューラルネットワーク
人間の脳の仕組みを模倣した機械学習モデルです。
入力層、隠れ層、出力層という階層構造を持ち、各層のニューロンが連結してデータを処理します。
# TensorFlow/Kerasでのニューラルネットワーク
import tensorflow as tf
mnist = tf.keras.datasets.mnist # データセットの準備
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0 # 前処理
model = tf.keras.models.Sequential([ # モデルの定義
tf.keras.layers.Flatten(input_shape=(28, 28)), # 入力層:1次元にして入力
tf.keras.layers.Dense(128, activation=‘relu’), # 隠れ層:活性化関数はReLU
tf.keras.layers.Dense(10) # 出力層
])
model.compile(optimizer=‘adam’, metrics=[‘accuracy’], # モデルの構築
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True))
model.fit(x_train, y_train, epochs=5) # モデルの訓練
model.evaluate(x_test, y_test, verbose=2) # モデルの評価
自然言語処理(形態素解析、テキスト分類)
文章を単語や品詞に分解し、近い意味の文章を見つけるなど、自然言語に関するさまざまな処理も機械学習でおこなえます。
# TF-IDFでテキストを前処理し、分類する例
from sklearn.feature_extraction.text import TfidfVectorizer # TF-IDFベクトル化
from sklearn.naive_bayes import MultinomialNB # 分類モデル
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
text_data = [ # 学習用のデータセット
“This is another document.”, “The cat sat on the mat.”,
“The dog chased the cat.”, “This is a sample sentence.”,
“Here is another example.”, “Why is the sky blue?”
]
labels = [0, 1, 1, 0, 0, 1]
# 訓練データとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(text_data, labels, test_size=0.25, random_state=42)
vectorizer = TfidfVectorizer() # TF-IDFの初期化
X_train_vectors = vectorizer.fit_transform(X_train) # 訓練データをベクトル化
X_test_vectors = vectorizer.transform(X_test) # テストデータをベクトル化
classifier = MultinomialNB() # モデルの初期化
classifier.fit(X_train_vectors, y_train) # 学習
predictions = classifier.predict(X_test_vectors) # 推論
accuracy = accuracy_score(y_test, predictions) # 精度を計算
print(f”テキスト分類の精度: {accuracy}“)
画像認識
画像データからパターンや特徴を抽出して分類や検出をおこなう技術です。
畳み込みニューラルネットワーク(CNN)が基盤技術として広く使われています。
# CNNによる画像認識の例
import tensorflow as tf
from tensorflow.keras import datasets, layers, models
# データセットの読み込み
(train_images, train_labels), (test_images, test_labels) = datasets.cifar10.load_data()
# 0以上1以下の範囲に変換
train_images, test_images = train_images / 255.0, test_images / 255.0
model = models.Sequential() # CNNモデルを定義
model.add(layers.Conv2D(32, (3, 3), activation=‘relu’, input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation=‘relu’))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation=‘relu’))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation=‘relu’))
model.add(layers.Dense(10)) # ここまでCNNの各層を定義
model.compile(optimizer=‘adam’, # CNNモデルを構築
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=[‘accuracy’])
# モデルの訓練と評価
history = model.fit(train_images, train_labels, epochs=10,
validation_data=(test_images, test_labels))
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print(“CNNモデルの認識精度:”, test_acc)
まとめ
Pythonを使った機械学習は、基礎から応用まで段階的に学習できる分野です。
開発環境の準備から始めて、基本的なプログラミング、データ処理、そして実践的なモデル構築まで、体系的に知識を積み上げることができます。
まずはGoogle Colaboratoryで環境を整えて、実際にコードを書いてみましょう。