Python機械学習入門|まず何から始めるべきか
機械学習をPythonで学び始めたいと思っても、「どこから手をつければ良いのか分からない」という声は多く聞かれます。本記事では、NumPy・pandas・matplotlib・scikit-learnという4つのコアライブラリを軸に、分類・回帰・クラスタリングの実装コードを交えながら、初学者が迷わず進められる学習ロードマップを解説します。
機械学習は、統計学・プログラミング・ドメイン知識が交わる分野です。しかし現代では、scikit-learnをはじめとするライブラリが複雑な数学的処理をほぼ自動化してくれるため、実装の流れとデータの扱い方を習得することが最優先です。データの前処理が全工程の約80%を占めるとも言われており、まずはデータを「見る・整える・学習させる」という一連の流れを体験することが近道です。
必須ライブラリ4選|NumPy・pandas・matplotlib・scikit-learn
PythonでAI・機械学習を始める際に必ず必要になるのが以下の4ライブラリです。
| ライブラリ | 役割 | 主な用途 |
|---|---|---|
| NumPy | 数値計算 | 配列演算・行列計算・線形代数 |
| pandas | データ操作 | CSV読み込み・欠損値処理・集計 |
| matplotlib | 可視化 | グラフ描画・データ分布確認 |
| scikit-learn | 機械学習 | 分類・回帰・クラスタリング・評価 |
これらはpip install scikit-learn pandas matplotlib numpy一行でまとめてインストール可能です。Google Colabを使えば環境構築なしにすぐ試せます。
scikit-learnの基本的な使い方|学習から予測まで5ステップ
scikit-learnはAPIが統一されており、どのアルゴリズムも同じ5ステップで動かせます。
- データの準備:特徴量Xとラベルyに分割
- 学習データと検証データの分割:
train_test_split - モデルのインスタンス化:例)
RandomForestClassifier() - 学習:
model.fit(X_train, y_train) - 予測と評価:
model.predict(X_test)+accuracy_score
以下は、irisデータセット(アヤメの品種分類)を使ったシンプルな分類の実装例です。
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, 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 = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print(f"精度: {accuracy_score(y_test, y_pred):.3f}")
# 精度: 0.967
回帰・クラスタリングの実装コード例
機械学習のタスクは大きく3種類に分かれます。それぞれの実装例を確認しましょう。
回帰(数値予測)
住宅価格や売上予測などに使います。scikit-learnのLinearRegressionで実装できます。
from sklearn.linear_model import LinearRegression
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import numpy as np
housing = fetch_california_housing()
X_train, X_test, y_train, y_test = train_test_split(
housing.data, housing.target, test_size=0.2, random_state=42
)
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
print(f"RMSE: {rmse:.3f}")
クラスタリング(教師なし学習)
ラベルなしデータのグループ分けに使います。K-meansが代表的です。
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
X, _ = make_blobs(n_samples=300, centers=4, random_state=42)
kmeans = KMeans(n_clusters=4, random_state=42, n_init=10)
labels = kmeans.fit_predict(X)
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap="viridis")
plt.title("K-means クラスタリング結果")
plt.show()
前処理の重要性|pandasとscikit-learnの連携
実務データは必ずと言っていいほど「欠損値・カテゴリ変数・スケール差」の3問題を抱えています。scikit-learnのPipelineとpandasを組み合わせることで、前処理を再現性高く実装できます。
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.impute import SimpleImputer
pipe = Pipeline([
("imputer", SimpleImputer(strategy="mean")),
("scaler", StandardScaler()),
])
X_transformed = pipe.fit_transform(X_train)
Pipelineを使うことでデータリークを防ぎ、学習データで計算した統計量をテストデータにも一貫して適用できます。これは機械学習エンジニアとして必須のプラクティスです。
関連記事:PythonでAI開発を始める方法|環境構築から実装まで / Pythonデータ分析入門|pandas・matplotlibの使い方
初学者向け学習ロードマップ|3ヶ月で機械学習エンジニアを目指す
以下は、プログラミング経験者が3ヶ月で機械学習の基礎を習得するためのロードマップです。
第1ヶ月:Python基礎 + データ操作
- NumPy・pandas・matplotlibの基本操作
- CSVデータの読み込み・集計・可視化
- Kaggleの入門コンペ(Titanic)でデータ分析体験
第2ヶ月:scikit-learnで教師あり学習
- 分類(ロジスティック回帰・決定木・ランダムフォレスト)
- 回帰(線形回帰・Ridge・Lasso)
- 交差検証・ハイパーパラメータチューニング(GridSearchCV)
第3ヶ月:発展と実践
- 教師なし学習(K-means・主成分分析)
- TensorFlow/Keras または PyTorch での深層学習入門
- 実際の業務データを想定したエンドツーエンドプロジェクト
機械学習の学習において「サンプルコードを写経してから少しずつアレンジする」というアプローチが定着への近道です。最初からオリジナルモデルを作ろうとするよりも、まず動くコードを手元で再現することを優先しましょう。
TensorFlow・PyTorchとの使い分け
scikit-learnは構造化データ(表形式)の古典的機械学習に強みがあります。一方、画像認識・自然言語処理などのディープラーニングにはTensorFlow(Keras)やPyTorchが適しています。
| ライブラリ | 得意領域 | 特徴 |
|---|---|---|
| scikit-learn | 表形式データ・古典的ML | API統一・実装が簡単 |
| TensorFlow/Keras | 深層学習・画像・NLP | 本番向け・Google製 |
| PyTorch | 研究・深層学習 | 動的グラフ・柔軟性高 |
初学者はまずscikit-learnで機械学習の概念を習得し、深層学習への関心が高まった段階でKerasまたはPyTorchに移行することを推奨します。
よくある質問(FAQ)
Q1. Pythonで機械学習を始めるには数学の知識が必要ですか?
最初のうちはscikit-learnのAPIを使いこなす段階では高度な数学は不要です。線形代数・確率統計の基礎(行列・平均・分散など)があると理解が深まりますが、まず実装から入って後から数学を補完するアプローチで問題ありません。
Q2. scikit-learnとTensorFlowはどう違いますか?
scikit-learnは表形式データを使った古典的機械学習(ランダムフォレスト・SVMなど)に特化しています。TensorFlowは深層学習(ニューラルネットワーク)に対応しており、画像・テキスト・音声など非構造化データの処理が得意です。学習の順序としてはscikit-learn → TensorFlow/PyTorchが一般的です。
Q3. 機械学習エンジニアになるにはどれくらいの期間が必要ですか?
プログラミング(Python)の基礎があれば、scikit-learnで基本的な機械学習を実装できるレベルに達するまで3〜6ヶ月が目安です。実務レベルのMLエンジニアを目指すには、データエンジニアリング・モデル評価・MLOpsの知識も必要で、1〜2年の継続学習が一般的です。
Q4. Google Colabで機械学習を学べますか?
はい、Google Colabは無料で使えるJupyterノートブック環境であり、GPU/TPUの利用も可能です。NumPy・pandas・scikit-learn・TensorFlowなど主要ライブラリがプリインストールされているため、ローカル環境構築なしにすぐ機械学習の実習を始められます。初学者に最適な環境です。
Q5. scikit-learnで大規模データは扱えますか?
scikit-learnはメモリに乗るサイズのデータ(目安として数GB以内)を主な対象としています。大規模データにはpartial_fitメソッド(逐次学習)の利用や、Apache Spark + MLlibへの移行が選択肢です。数十万件程度のデータであればscikit-learnで十分対応可能です。
