機械学習を学ぶためのPythonプロジェクトの実行方法について、今回はその第二部として、実際のデータを使った機械学習モデルの構築方法を詳しく解説します。ここでは、Pythonを用いて機械学習の基本的な流れを追い、実際にモデルを訓練し、評価する手順を踏みます。このガイドは、初心者が実践的に学べるように設計されています。
1. 必要なライブラリのインストール
まず、Pythonを使用して機械学習プロジェクトを進めるために必要なライブラリをインストールします。以下のライブラリが基本的に必要です。

bashpip install numpy pandas matplotlib scikit-learn
これらのライブラリは、データ処理、可視化、機械学習アルゴリズムの実装に不可欠です。
2. データのロードと前処理
機械学習の最初のステップはデータのロードです。ここでは、pandas
を使用してデータセットを読み込みます。一般的に使われるデータセットとして、UCI Machine Learning RepositoryやKaggleからダウンロードしたCSVファイルを利用することが多いです。
pythonimport pandas as pd
# データセットの読み込み
data = pd.read_csv('data.csv')
# データの最初の5行を確認
print(data.head())
次に、データの前処理を行います。これには、欠損値の処理やカテゴリカルデータのエンコード、特徴量スケーリングが含まれます。
欠損値の処理
欠損値がある場合は、平均値や中央値で埋めるか、欠損している行を削除する方法があります。
python# 欠損値の確認
print(data.isnull().sum())
# 欠損値を平均で埋める
data.fillna(data.mean(), inplace=True)
カテゴリカルデータのエンコード
機械学習モデルは数値データを処理するため、カテゴリカルデータ(文字列)を数値に変換する必要があります。LabelEncoder
やOneHotEncoder
を使ってエンコードを行います。
pythonfrom sklearn.preprocessing import LabelEncoder
# カテゴリカルデータのエンコード
encoder = LabelEncoder()
data['category_column'] = encoder.fit_transform(data['category_column'])
特徴量スケーリング
特徴量のスケーリングも重要なステップです。StandardScaler
を使うことで、特徴量のスケールを標準化できます。
pythonfrom sklearn.preprocessing import StandardScaler
# スケーリング
scaler = StandardScaler()
data_scaled = scaler.fit_transform(data)
3. データの分割
次に、訓練データとテストデータに分けます。train_test_split
を使って、80%を訓練データ、20%をテストデータとして分割します。
pythonfrom sklearn.model_selection import train_test_split
# 特徴量とターゲット変数に分ける
X = data.drop('target_column', axis=1) # 特徴量
y = data['target_column'] # ターゲット
# 訓練データとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
4. モデルの選択と訓練
次に、機械学習アルゴリズムを選択してモデルを訓練します。ここでは、分類問題においてよく使われる決定木(Decision Tree)を例に説明しますが、他のアルゴリズム(SVM、ランダムフォレスト、ロジスティック回帰など)を使用することもできます。
pythonfrom sklearn.tree import DecisionTreeClassifier
# モデルのインスタンス化
model = DecisionTreeClassifier(random_state=42)
# 訓練データでモデルを訓練
model.fit(X_train, y_train)
5. モデルの予測と評価
モデルが訓練できたら、テストデータを使って予測を行い、その結果を評価します。精度(Accuracy)、混同行列(Confusion Matrix)、分類レポート(Classification Report)などを使って評価できます。
pythonfrom sklearn.metrics import accuracy_score, confusion_matrix, classification_report
# テストデータで予測
y_pred = model.predict(X_test)
# 精度の評価
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')
# 混同行列の表示
print('Confusion Matrix:')
print(confusion_matrix(y_test, y_pred))
# 分類レポートの表示
print('Classification Report:')
print(classification_report