Menu
CoddyTech

Karma Sütunlar

Coddy'nin Machine Learning Journey'sinin Denetimli Öğrenme bölümünün bir parçası. Ders 46 / 58.

Çoğu tablo sözcükleri ve sayıları bir arada içerir ve her tür için ayrı bir adım gerekir. Bir ColumnTransformer, her sütunu kendi adımına gönderir ve sonuçları birleştirir:

Başlığı 4 sütun giriş, 7 sütun çıkış olan bir şema. Tür, durum, fiyat ve yıl bilgilerini içeren üç plak. Tür ve durum, caz, rock, iyi, nane gibi beş adet 0/1 sütununa dönüştürülmek üzere OneHotEncoder'dan geçer. Fiyat ve yıl, ölçeklendirilmiş iki sütuna dönüştürülmek üzere StandardScaler'dan geçer

Bir plakçı için, kodda:

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))

Her girdi bir ad, bir adım ve sütunlarından oluşur. get_dummies'den farklı olarak kodlayıcı eğitim kategorilerini hatırlar; böylece yeni bir kayıt da aynı 7 sütunu alır.

challenge icon

Görev

Orta

Bir satranç kulübü, her oyuncunun maçtan önce kazanma şansını öğrenmek istiyor. Başlangıç kodu chess.csv dosyasını bölüyor ve bu akşamki maçı okuyor.

  1. opening ve color değerlerini kodlayın, rating_gap ve minutes değerlerini ölçeklendirin ve eğitim satırlarından elde edilen sütun sayısını yazdırın.
  2. Bunu lojistik regresyonla zincirleyin, modeli eğitin ve test doğruluğunu yazdırın.
  3. Bu akşamki maçın kazanma şansını yazdırın.

Başka bir kulüp, üç açılış ve sicilian, black, 50, 15 değerleri:

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

Kendin dene

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

# Bir satranç kulübünün maçları: açılış, oyuncunun taş rengi, oyuncunun puanından
# rakibinin puanının çıkarılmasıyla elde edilen fark, saatte kalan dakika ve oyuncunun kazanıp kazanmadığı (1) veya kazanmadığı (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)

# Bu akşamki maç, aynı sütunlara sahip tek bir satır
game = pd.DataFrame({"opening": [input()], "color": [input()],
                     "rating_gap": [int(input())], "minutes": [int(input())]})

# Kodunuzu aşağıya yazın
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Denetimli Öğrenme bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi