IT・WEB・ゲーム業界の転職に強いR-Stone

転職コラム

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

機械学習は現代のテクノロジーの中核を担う重要な技術です。

本記事では、Python初心者でも理解できるよう、機械学習の基礎から実装までを順を追って解説します。

AIと機械学習の違い、開発環境の構築、必要なライブラリの使い方、データ処理の手順まで、具体的なコード例を交えながら説明します。

Google Colaboratoryを使用すれば環境構築の手間なく始められるため、すぐに実践的な学習を開始できます。

機械学習とは?

機械学習(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で環境を整えて、実際にコードを書いてみましょう。