Mengisi Nilai Kosong dalam Pipeline
Termasuk bagian Pembelajaran Terawasi dalam perjalanan Machine Learning di Coddy. Pelajaran 47 dari 58.
Log nyata memiliki celah, dan sebagian besar model menolaknya. SimpleImputer mengisi setiap celah dengan nilai rata-rata, median, atau nilai yang paling sering muncul di kolomnya.
Isi sebelum pemisahan, lalu baris uji membantu memilih nilai itu: sebuah kebocoran. Tujuh kedalaman penyelaman dan satu celah:
Dalam pipeline, fit mempelajari nilai pengganti hanya dari baris pelatihan:
from sklearn.impute import SimpleImputer
pipe = make_pipeline(SimpleImputer(strategy="median"), StandardScaler(), model)
pipe.fit(X_train, y_train)
print(pipe[0].statistics_) # nilai pengisi dari langkah pertamaUntuk catatan penyelaman (kedalaman, menit, suhu air), ini mencetak:
[19. 44. 21.]Untuk kata-kata juga, langkah-langkah untuk angka menjadi satu jalur di ColumnTransformer:
lane = make_pipeline(SimpleImputer(strategy="median"), StandardScaler())
("numbers", lane, ["depth_m", "minutes"])Tantangan
SedangLayanan kehutanan memprediksi sambaran petir mana yang memicu kebakaran, tetapi beberapa pembacaan tidak tersedia. Kode awal membagi wildfire.csv dan membaca strategi, mean atau median.
- Latih pipeline yang terdiri dari imputer dengan strategi tersebut, scaler, dan regresi logistik. Cetak akurasi pengujiannya.
- Untuk setiap kolom, cetak nilai pengisian pipeline dan nilai yang akan diperoleh dari semua baris
X, dengan 1 angka desimal.
Hutan lain, dengan median:
Test accuracy: 0.840
humidity_pct: fill 46.0, all rows would give 46.0
wind_kmh: fill 29.0, all rows would give 32.0
temp_c: fill 25.0, all rows would give 26.0
days_without_rain: fill 23.0, all rows would give 23.0Di setiap bagian yang nilainya berbeda, pengisian sebelum pembagian akan membuat baris pengujian memengaruhi data pelatihan.
Coba sendiri
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline
# Sambaran petir di hutan kering: apakah sambaran itu memicu kebakaran (1) atau tidak (0)?
# Beberapa data pengamatan cuaca tidak tersedia.
strikes = pd.read_csv("wildfire.csv")
columns = ["humidity_pct", "wind_kmh", "temp_c", "days_without_rain"]
X = strikes[columns]
y = strikes["fire"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
strategy = input()
# Tulis kodemu di bawah ini
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pembelajaran Terawasi
1Model Pertamamu
Belajar dari ContohData Latih dan Data UjiMelatih dan MemprediksiMenilai ModelRangkuman: Penyortir Benih4Regresi Logistik
Prediksi Ya atau TidakAmbang KeputusanBobot sebagai BuktiBeberapa KelasRangkuman: Filter Spam7Overfitting
Underfitting dan OverfittingKurva PembelajaranRegularisasiSet ValidasiRingkasan: Menyetel Pohon10Pipeline
PipelineKolom CampuranMengisi Nilai Kosong dalam PipelineMenyetel PipelineRangkuman: Bersihkan dan Prediksi2Tetangga Terdekat
Cara k-NN MenentukanMemilih kBatas KeputusanPenskalaan untuk TetanggaRingkasan: Tetangga Wine5Mengukur Model Klasifikasi
Matriks KonfusiPresisi dan RecallSkor F1Kelas Tidak SeimbangKurva ROCRangkuman: Tes SkriningLatihan sendiri: Compiler Python online