파이프라인
Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 45번째.
실제 테이블에는 빈칸, 단어, 서로 다른 척도가 섞여 있습니다. 이 장에서는 데이터를 정리하고 예측하는 하나의 객체인 파이프라인을 만듭니다:
작게 시작해 보세요: 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은 학습 행에서 스케일링 방법을 학습한 다음, 모델을 학습시킵니다. 이후의 모든 행은 같은 방식으로 자동으로 스케일링됩니다.
챌린지
중급열기구 회사는 매일 저녁 다음 날이 비행 가능한 날인지 결정합니다. 기본 코드는 수작업으로 스케일링합니다. 테스트 정확도는 괜찮지만, 예측값은 전혀 스케일링되지 않으므로 어떤 날씨에도 yes라고 답합니다.
- 이를 파이프라인으로 바꾸세요. 스케일러 다음에 k-NN을 적용하고, 학습 행으로 학습시키세요.
- 파이프라인의 테스트 정확도를 출력하고, 이를 사용해 예측을 판단하세요.
또 다른 회사의 날씨: 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")
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러