PythonでAI・機械学習を始める完全ガイド【2026年版】scikit-learn・PyTorch・LLM APIの活用まで

PythonとAI・機械学習の関係

Pythonは2026年現在もAI・機械学習分野で圧倒的なシェアを誇ります。豊富なライブラリエコシステム(NumPy、Pandas、scikit-learn、PyTorch、TensorFlow)と読みやすい構文が、研究者・エンジニア双方に支持される理由です。

環境構築:Python + 主要ライブラリのセットアップ

# 仮想環境の作成
python -m venv .venv
source .venv/bin/activate  # Linuxzsh/Mac
.venv/Scripts/activate     # Windows

# 基本ライブラリのインストール
pip install numpy pandas matplotlib seaborn scikit-learn
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install transformers datasets accelerate
pip install openai anthropic jupyter

データ前処理の基礎(NumPy・Pandas)

import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler, LabelEncoder
from sklearn.model_selection import train_test_split

# データ読み込み
df = pd.read_csv('data.csv')
print(df.head())
print(df.info())
print(df.describe())

# 欠損値の処理
df['age'].fillna(df['age'].median(), inplace=True)
df.dropna(subset=['target'], inplace=True)

# カテゴリ変数のエンコード
le = LabelEncoder()
df['category_encoded'] = le.fit_transform(df['category'])

# 数値特徴量の正規化
scaler = StandardScaler()
features = ['age', 'salary', 'experience']
df[features] = scaler.fit_transform(df[features])

# 学習データとテストデータの分割
X = df.drop('target', axis=1)
y = df['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

scikit-learnで機械学習モデルを作成する

from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
from sklearn.model_selection import cross_val_score, GridSearchCV

# ランダムフォレストの学習
rf_model = RandomForestClassifier(
    n_estimators=100,
    max_depth=10,
    random_state=42,
    n_jobs=-1
)
rf_model.fit(X_train, y_train)

# 予測と評価
y_pred = rf_model.predict(X_test)
print(f'精度: {accuracy_score(y_test, y_pred):.4f}')
print(classification_report(y_test, y_pred))

# クロスバリデーション
cv_scores = cross_val_score(rf_model, X_train, y_train, cv=5)
print(f'CV精度: {cv_scores.mean():.4f} (+/- {cv_scores.std():.4f})')

# ハイパーパラメータチューニング
param_grid = {
    'n_estimators': [100, 200, 300],
    'max_depth': [None, 10, 20],
    'min_samples_split': [2, 5, 10]
}
grid_search = GridSearchCV(rf_model, param_grid, cv=5, n_jobs=-1)
grid_search.fit(X_train, y_train)
print(f'最良パラメータ: {grid_search.best_params_}')

PyTorchでニューラルネットワークを構築する

import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset

# デバイスの設定
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
print(f'Using device: {device}')

# ニューラルネットワークの定義
class ClassificationNet(nn.Module):
    def __init__(self, input_dim, hidden_dim, output_dim, dropout=0.3):
        super().__init__()
        self.network = nn.Sequential(
            nn.Linear(input_dim, hidden_dim),
            nn.BatchNorm1d(hidden_dim),
            nn.ReLU(),
            nn.Dropout(dropout),
            nn.Linear(hidden_dim, hidden_dim // 2),
            nn.BatchNorm1d(hidden_dim // 2),
            nn.ReLU(),
            nn.Dropout(dropout),
            nn.Linear(hidden_dim // 2, output_dim)
        )
    
    def forward(self, x):
        return self.network(x)

# 学習ループ
model = ClassificationNet(input_dim=20, hidden_dim=128, output_dim=2).to(device)
optimizer = optim.AdamW(model.parameters(), lr=1e-3, weight_decay=1e-4)
scheduler = optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=50)
criterion = nn.CrossEntropyLoss()

for epoch in range(100):
    model.train()
    for batch_X, batch_y in train_loader:
        optimizer.zero_grad()
        outputs = model(batch_X.to(device))
        loss = criterion(outputs, batch_y.to(device))
        loss.backward()
        optimizer.step()
    scheduler.step()

OpenAI/Claude APIを活用したLLMアプリ開発

import openai
import anthropic

# OpenAI GPT-4活用
client = openai.OpenAI(api_key='your-api-key')

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[
        {'role': 'system', 'content': 'あなたは優秀なPythonエンジニアです。'},
        {'role': 'user', 'content': 'バブルソートをPythonで実装してください'}
    ],
    temperature=0.7,
    max_tokens=1000
)
print(response.choices[0].message.content)

# Anthropic Claude API活用
claude = anthropic.Anthropic(api_key='your-api-key')
message = claude.messages.create(
    model='claude-opus-4-5',
    max_tokens=1024,
    messages=[{'role': 'user', 'content': 'コードをレビューしてください'}]
)
print(message.content[0].text)

# RAG(検索拡張生成)の基本パターン
from langchain.vectorstores import Chroma
from langchain.embeddings import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter

# ドキュメントのベクトル化と保存
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
docs = text_splitter.split_documents(documents)
vectorstore = Chroma.from_documents(docs, OpenAIEmbeddings())

# 類似文書の検索
query = 'Pythonの非同期処理とは?'
related_docs = vectorstore.similarity_search(query, k=3)

まとめ:Python×AIで次世代エンジニアへ

  • ✅ NumPy・Pandasでデータ前処理をマスター
  • ✅ scikit-learnで機械学習モデルの基礎を習得
  • ✅ PyTorchでディープラーニングの実装力をつける
  • ✅ LLM APIを活用してAIアプリを開発できる

AI・機械学習は急速に進化していますが、Pythonの基礎をしっかり固め、実際にコードを書いて実験することが最も大切です。本記事のサンプルコードを実際に動かして、AI開発の世界に踏み出してみましょう。

投稿者 kasata

IT企業でエンジニアとして勤務後、テクノロジー情報メディア「Tech Athletes(テック・アスリート)」を運営。プログラミング、クラウドインフラ(AWS/GCP/Azure)、AI活用、Webサービス開発を専門とする。エンジニア・ビジネスパーソン向けに、実際に使ってみた経験をもとに信頼できる技術情報を発信中。資格:AWS認定ソリューションアーキテクト、Python 3 エンジニア認定試験合格。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です