Veri hazırlama
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 93/112
- 7 dk
Regresyon için veriyi hazırlarsın.
Proje: hastalık ilerlemesi
Bu projede 442 diyabet hastasının yaş, cinsiyet, vücut kitle indeksi, kan basıncı ve 6 kan ölçümünden, bir yıl sonraki hastalık ilerlemesini (sayısal bir skor) tahmin edeceksin. Bu bir regresyon problemidir.
from sklearn.datasets import load_diabetes
d = load_diabetes()
print(d.data.shape) # (442, 10)
print(d.feature_names) # ['age', 'sex', 'bmi', 'bp', 's1', ...]
print(d.target[:5]) # [151. 75. 141. 206. 135.]Bu veri setinde özellikler önceden ölçeklenmiştir: her sütunun ortalaması 0'a yakındır.
Hedefi tanımak
Bir regresyon projesinde hedefin aralığı ve dağılımı, hatanın büyüklüğünü yorumlamak için gereklidir: 50'lik bir MAE, hedef 25-350 aralığındaysa farklı, 0-60 aralığındaysa farklı anlam taşır.
print(y.min(), y.max()) # 25.0 346.0
print(round(y.mean(), 1), round(y.std(), 1))Temel çizgi olarak "her hastaya ortalamayı tahmin et" modelinin MAE'si hesaplanır; model bunu geçmelidir.
Uygulama Eğitim ve test kümeleri
Veriyi test_size=0.2, random_state=0 ile böl. Eğitim ve test boyutlarını aynı satırda, ardından eğitim hedefinin ortalamasını round(..., 1) ile yazdır.
Başlangıç kodu
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
X, y = load_diabetes(return_X_y=True)
# buraya yazÖrnek çözüm
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
X, y = load_diabetes(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
print(len(X_train), len(X_test))
print(round(y_train.mean(), 1))Beklenen çıktı
353 89 151.6
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bu projede hangi metrik ailesi kullanılmalıdır?
- Doğruluk, F1
- Karmaşıklık matrisi
- Kesinlik, duyarlılık
- MAE, RMSE, R² Doğru cevap
Açıklama: Hedef sürekli bir skor olduğu için regresyon metrikleri kullanılır.
2 Verinin %20'sini teste ayır.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=____, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
Açıklama: Regresyonda stratify kullanılmaz; sınıf yoktur.
3 Bilgileri eşleştir.
| Kavram | Anlamı |
|---|---|
442 |
Hasta sayısı |
10 |
Özellik sayısı |
bmi |
Vücut kitle indeksi |
target |
Bir yıllık ilerleme |