혼합 열
Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 46번째.
대부분의 표에는 단어와 숫자가 섞여 있으며, 각 유형에는 별도의 단계가 필요합니다. ColumnTransformer는 각 열을 해당 단계로 보내고 결과를 결합합니다:
레코드 매장의 경우, 코드에서는 다음과 같습니다.
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개의 열을 갖습니다.
챌린지
중급체스 동아리는 각 플레이어의 경기 전 승리 확률을 알고 싶어 합니다. 시작 코드는 chess.csv를 분할하고 오늘 밤 경기 정보를 읽습니다.
opening과color를 인코딩하고,rating_gap과minutes를 스케일링한 다음, 훈련 행을 사용해 몇 개의 열이 만들어지는지 출력하세요.- 로지스틱 회귀와 연결하고, 학습한 다음, 테스트 정확도를 출력하세요.
- 오늘 밤 경기의 승리 확률을 출력하세요.
또 다른 동아리, 세 가지 오프닝, 그리고 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())]})
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러