Menu
CoddyTech

파이프라인

Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 45번째.

실제 테이블에는 빈칸, 단어, 서로 다른 척도가 섞여 있습니다. 이 장에서는 데이터를 정리하고 예측하는 하나의 객체인 파이프라인을 만듭니다:

원시 열 입력, 예측 출력이라는 제목의 다이어그램. 빈칸이 있는 숫자는 한 경로로 내려가고, SimpleImputer가 빈칸을 채운 다음 StandardScaler가 처리합니다. 단어는 다른 경로로 내려가고, OneHotEncoder가 단어를 0과 1로 바꿉니다. 두 경로는 모델에서 만납니다. 단계들을 둘러싼 점선 상자에는 하나의 파이프라인: fit한 다음 predict라고 적혀 있습니다

작게 시작해 보세요: make_pipeline은 스케일러와 모델을 연결합니다:

from sklearn.pipeline import make_pipeline

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

강하거나 약한 테스트 용접부 200개에 대해, 이 코드는 스케일링하지 않았을 때의 0.74와 비교하여 0.86을 출력합니다.

fit은 학습 행에서 스케일링 방법을 학습한 다음, 모델을 학습시킵니다. 이후의 모든 행은 같은 방식으로 자동으로 스케일링됩니다.

challenge icon

챌린지

중급

열기구 회사는 매일 저녁 다음 날이 비행 가능한 날인지 결정합니다. 기본 코드는 수작업으로 스케일링합니다. 테스트 정확도는 괜찮지만, 예측값은 전혀 스케일링되지 않으므로 어떤 날씨에도 yes라고 답합니다.

  1. 이를 파이프라인으로 바꾸세요. 스케일러 다음에 k-NN을 적용하고, 학습 행으로 학습시키세요.
  2. 파이프라인의 테스트 정확도를 출력하고, 이를 사용해 예측을 판단하세요.

또 다른 회사의 날씨: 20, 32, 7000, 9:

Test accuracy: 0.880
Flying day: no

직접 해보기

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

# 열기구 회사의 지난날 기록: 비행한 날 (1) 또는 비행하지 않은 날 (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)

# 내일의 예보: 풍속, 돌풍, 가시거리, 예약한 승객 수
day = np.array([[float(input()), float(input()), float(input()), float(input())]])

# 수동 스케일링: 점수는 괜찮아 보이지만 예보 데이터에는 스케일링이 적용되지 않음
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 icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

지도 학습의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러