Menu
CoddyTech

Pipeline

Termasuk bagian Pembelajaran Terawasi dalam perjalanan Machine Learning di Coddy. Pelajaran 45 dari 58.

Tabel nyata biasanya memiliki celah, kata-kata, dan skala yang beragam. Di bab ini, kamu akan membuat satu object yang membersihkan data tersebut dan membuat prediksi, yaitu pipeline:

Diagram berjudul Kolom mentah masuk, prediksi keluar. Angka yang memiliki celah mengalir di satu jalur. SimpleImputer mengisi celah tersebut, lalu StandardScaler memprosesnya. Kata-kata mengalir di jalur lain. OneHotEncoder mengubahnya menjadi 0 dan 1. Kedua jalur bertemu di model. Kotak bergaris putus-putus yang mengelilingi langkah-langkah tersebut bertuliskan satu pipeline: latih, lalu buat prediksi

Mulailah dari yang sederhana: make_pipeline menghubungkan scaler dan model:

from sklearn.pipeline import make_pipeline

pipe = make_pipeline(StandardScaler(), KNeighborsClassifier())
pipe.fit(X_train, y_train)
print(pipe.score(X_test, y_test))

Untuk 200 hasil uji pengelasan, baik kuat maupun lemah, ini mencetak 0.86, dibandingkan dengan 0.74 tanpa penskalaan.

fit mempelajari penskalaan dari baris pelatihan, lalu melakukan pelatihan. Setiap baris berikutnya diskalakan dengan cara yang sama secara otomatis.

challenge icon

Tantangan

Sedang

Sebuah perusahaan balon udara memutuskan setiap malam apakah besok menjadi hari terbang. Kode awal melakukan penskalaan secara manual: akurasi pengujiannya baik, tetapi prakiraan tidak pernah diskalakan, sehingga kode itu menjawab yes untuk cuaca apa pun.

  1. Ganti dengan pipeline, scaler lalu k-NN, yang dilatih menggunakan baris data pelatihan.
  2. Cetak akurasi pengujiannya dan nilai prakiraan dengannya.

Perusahaan lain, hari 20, 32, 7000, 9:

Test accuracy: 0.880
Flying day: no

Coba sendiri

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline

# Hari-hari sebelumnya di perusahaan balon udara: hari penerbangan (1) atau bukan (0)
days = pd.read_csv("balloons.csv")
X = days[["wind_kmh", "gusts_kmh", "visibility_m", "passengers"]].to_numpy()
y = days["flying_day"].to_numpy()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

# Prakiraan cuaca besok: angin, hembusan angin, jarak pandang, penumpang yang sudah memesan
day = np.array([[float(input()), float(input()), float(input()), float(input())]])

# Penskalaan secara manual: skornya terlihat baik, tetapi data prakiraan tidak pernah diskalakan
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
model = KNeighborsClassifier()
model.fit(X_train_scaled, y_train)
print(f"Test accuracy: {model.score(X_test_scaled, y_test):.3f}")
if model.predict(day)[0] == 1:
    print("Flying day: yes")
else:
    print("Flying day: no")
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pembelajaran Terawasi

Latihan sendiri: Compiler Python online