Menu
CoddyTech

혼합 열

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

대부분의 표에는 단어와 숫자가 섞여 있으며, 각 유형에는 별도의 단계가 필요합니다. ColumnTransformer는 각 열을 해당 단계로 보내고 결과를 결합합니다:

제목이 입력 4개 열, 출력 7개 열인 다이어그램. 장르, 상태, 가격, 연도가 있는 비닐 레코드 3개. 장르와 상태는 OneHotEncoder를 거쳐 0/1 열 5개(재즈, 록, 양호, 민트급, 사용감 있음)로 변환됩니다. 가격과 연도는 StandardScaler를 거쳐 스케일링된 열 2개로 변환됩니다

레코드 매장의 경우, 코드에서는 다음과 같습니다.

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder

prep = ColumnTransformer([
    ("words", OneHotEncoder(), ["genre", "condition"]),
    ("numbers", StandardScaler(), ["price", "year"]),
])
pipe = make_pipeline(prep, LogisticRegression(max_iter=1000))

각 항목은 이름, 단계 및 해당 열로 구성됩니다. get_dummies와 달리 인코더는 학습 범주를 기억하므로 새 레코드 하나도 동일한 7개의 열을 갖습니다.

challenge icon

챌린지

중급

체스 동아리는 각 플레이어의 경기 전 승리 확률을 알고 싶어 합니다. 시작 코드는 chess.csv를 분할하고 오늘 밤 경기 정보를 읽습니다.

  1. opening과 color를 인코딩하고, rating_gap과 minutes를 스케일링한 다음, 훈련 행을 사용해 몇 개의 열이 만들어지는지 출력하세요.
  2. 로지스틱 회귀와 연결하고, 학습한 다음, 테스트 정확도를 출력하세요.
  3. 오늘 밤 경기의 승리 확률을 출력하세요.

또 다른 동아리, 세 가지 오프닝, 그리고 sicilian, black, 50, 15:

Columns after preparing: 7
Test accuracy: 0.805
Win chance: 0.66

직접 해보기

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline

# 체스 동호회의 대국 기록: 오프닝, 플레이어의 기물 색, 플레이어의 레이팅에서
# 상대의 레이팅을 뺀 값, 시계에 남은 시간(분), 승리 여부(승리 1, 패배 0)
games = pd.read_csv("chess.csv")
X = games[["opening", "color", "rating_gap", "minutes"]]
y = games["won"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

# 오늘 밤의 대국: 동일한 열로 구성된 한 행
game = pd.DataFrame({"opening": [input()], "color": [input()],
                     "rating_gap": [int(input())], "minutes": [int(input())]})

# 아래에 코드를 작성하세요
quiz icon실력 점검

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

지도 학습의 모든 레슨

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