Menu
CoddyTech

İşlem Hattında Eksik Değerleri Tamamlama

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

Gerçek günlüklerde boşluklar vardır ve çoğu model bunları kabul etmez. Bir SimpleImputer, her boşluğu sütununun ortalaması, medyanı veya en sık görülen değeriyle doldurur.

Dilimlemeden önce doldur ve test satırlarının bu değerin seçilmesine katkıda bulunmasına izin ver: bu bir sızıntıdır. Yedi dalış derinliği ve bir boşluk:

8 dalış derinliğinden oluşan bir sütunun iki kopyası; son iki satır test satırı olarak işaretlenmiş ve bir hücre boş. Solda, doldur sonra böl: boşluğa 21.3 yazılır; test satırları da sayılarak bilinen 7 derinliğin ortalaması alınır, bu bir sızıntıdır. Sağda, böl sonra ardışık düzen: boşluğa 18.0 yazılır; yalnızca eğitim satırlarının ortalaması alınır

Bir işlem hattında, fit doldurma değerlerini yalnızca eğitim satırlarından öğrenir:

from sklearn.impute import SimpleImputer

pipe = make_pipeline(SimpleImputer(strategy="median"), StandardScaler(), model)
pipe.fit(X_train, y_train)
print(pipe[0].statistics_)  # ilk adımın eksik değerleri doldurmak için kullandığı değerler

Bir dalış kaydı (derinlik, dakika, su sıcaklığı) için bu, şunu yazdırır:

[19. 44. 21.]

Sözcükler için de, sayıların adımları ColumnTransformer içinde tek bir şerit haline gelir:

lane = make_pipeline(SimpleImputer(strategy="median"), StandardScaler())
("numbers", lane, ["depth_m", "minutes"])
challenge icon

Görev

Orta

Bir orman hizmetleri kurumu, hangi yıldırım düşmelerinin yangın başlattığını tahmin ediyor, ancak bazı ölçümler eksik. Başlangıç kodu wildfire.csv dosyasını böler ve mean ya da median stratejisini okur.

  1. Bu stratejiye sahip bir eksik değer tamamlayıcı, bir ölçekleyici ve lojistik regresyondan oluşan bir boru hattı eğit. Test doğruluğunu yazdır.
  2. Her sütun için boru hattının doldurma değerini ve X içindeki tüm satırların vereceği değeri 1 ondalık basamakla yazdır.

Başka bir orman, median ile:

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.0

İkisinin farklı olduğu her durumda, bölmeden önce doldurmak test satırlarının eğitim verilerini şekillendirmesine izin vermiş olurdu.

Kendin dene

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

# Kuru bir ormana yıldırım düştü: Bu yıldırım yangın başlattı mı (1), başlatmadı mı (0)?
# Bazı hava durumu ölçümleri eksik.
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()

# 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