Menu
CoddyTech

Kolom Campuran

Termasuk bagian Pembelajaran Terawasi dalam perjalanan Machine Learning di Coddy. Pelajaran 46 dari 58.

Sebagian besar tabel mencampurkan kata dan angka, dan setiap jenis memerlukan langkahnya sendiri. ColumnTransformer mengirim setiap kolom ke langkahnya lalu menggabungkan hasilnya:

Diagram berjudul 4 kolom masuk, 7 kolom keluar. Tiga piringan hitam dengan genre, kondisi, harga, dan tahun. Genre dan kondisi diproses melalui OneHotEncoder menjadi lima kolom 0/1: jazz, rock, baik, mint, usang. Harga dan tahun diproses melalui StandardScaler menjadi dua kolom yang diskalakan

Untuk toko kaset, dalam kode:

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

Setiap entri berisi nama, langkah, dan kolomnya. Tidak seperti get_dummies, encoder mengingat kategori pelatihan, sehingga satu record baru mendapatkan 7 kolom yang sama.

challenge icon

Tantangan

Sedang

Sebuah klub catur ingin mengetahui peluang menang setiap pemain sebelum pertandingan. Kode awal memisahkan chess.csv dan membaca data pertandingan malam ini.

  1. Encode opening dan color, lakukan penskalaan pada rating_gap dan minutes, lalu cetak jumlah kolom yang dihasilkan dari baris pelatihan.
  2. Rangkai dengan regresi logistik, lakukan fitting, lalu cetak akurasi pengujian.
  3. Cetak peluang menang malam ini.

Klub lain, tiga opening, dan sicilian, black, 50, 15:

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

Coba sendiri

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

# Pertandingan sebuah klub catur: pembukaan, warna bidak pemain, rating pemain dikurangi
# rating lawan, menit yang tersisa di jam, dan apakah pemain menang (1) atau tidak (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)

# Pertandingan malam ini, satu baris dengan kolom yang sama
game = pd.DataFrame({"opening": [input()], "color": [input()],
                     "rating_gap": [int(input())], "minutes": [int(input())]})

# Tulis kodemu di bawah ini
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pembelajaran Terawasi

Latihan sendiri: Compiler Python online