復習:データを整えて予測
CoddyのMachine Learningジャーニー「教師あり学習」セクションの一部。レッスン 49/58。
チャレンジ
中級どのキャンパーが戻ってくるでしょうか? camp.csvには文字列、数値、欠損値が混在しています。スターターコードはデータを分割し、キャンパーの情報を読み込みます。
- 章の完全なパイプラインを構築します。
cabinとactivityをワンホットエンコードし、数値には欠損値を中央値で補完してからスケーリングする処理を適用し、最後にロジスティック回帰を使います。 - 訓練データの行に対する5分割CV精度の平均と標準偏差を出力します。
- 訓練データの行で学習し、テスト精度と、そのキャンパーが戻ってくる確率を出力します。
別のキャンプのキャンパー。10、lakeside、archery、21、-、4:
CV accuracy: mean 0.707, std 0.065
Test accuracy: 0.740
Chance of coming back: 0.91ダッシュは評価の欠損値です。パイプラインが他の欠損値と同じように補完します。
自分で試してみよう
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.compose import ColumnTransformer
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
# 去年の夏のキャンプ参加者:今年も参加した (1) か、しなかった (0) か?
campers = pd.read_csv("camp.csv")
X = campers.drop(columns="came_back")
y = campers["came_back"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# 新しいキャンプ参加者について、1 行に 1 つずつ回答。ダッシュ (-) は数値が欠けていることを示す
answers = []
for i in range(6):
answers.append(input())
numbers = []
for i in [0, 3, 4, 5]:
if answers[i] == "-":
numbers.append(np.nan)
else:
numbers.append(float(answers[i]))
camper = pd.DataFrame({"age": [numbers[0]], "cabin": [answers[1]], "activity": [answers[2]],
"nights": [numbers[1]], "rating": [numbers[2]], "friends_made": [numbers[3]]})
# 以下にコードを書いてください
教師あり学習のすべてのレッスン
自分で練習してみよう: Pythonオンラインコンパイラ