İlk deneme için
scikit-learn içindeki örnek veri kümeleri, makine öğrenmesi kodunu gerçek bir veri toplama süreci olmadan denemek için hazırlanmış küçük veri kümeleridir.
En sık kullanılan alanlar şunlardır:
Veri kümesini seçerken önce yapmak istediğiniz denemeyi belirleyin. Sınıflandırmada hedef, sınıf etiketi olur; regresyonda ise sayısal bir değer tahmin edilir. Hazır veri kümeleri eğitim amacıyla kullanışlıdır, ancak küçük ve düzenlenmiş oldukları için gerçek bir üretim verisinin davranışını kanıtlamaz.
Ön koşul olarak Python ortamında scikit-learn kurulu olmalıdır. Kurulu değilse terminalde şu komutu çalıştırın:
Ardından aşağıdaki adımları uygulayın:
Çalıştırıldığında ilk çıktı, özellik matrisinin boyutunu ve sınıf adlarını gösterir. Iris için beklenen boyut
Modelin döndürdüğü
Tahmin ve gerçek ad aynıysa o satır doğru sınıflandırılmıştır. Farklıysa model o örneği başka bir sınıfa atamıştır. Bu çıktı yalnızca seçilen test bölümünü açıklar; modelin her yeni veride aynı doğruluğu göstereceğini kanıtlamaz.
Yüksek test doğruluğu, bu veri bölme yöntemiyle ayrılan örneklerde modelin iyi sonuç verdiğini gösterir. Tek başına modelin gerçek hayatta güvenilir olduğunu, veri kümesinin tarafsız olduğunu veya başka bir veri kümesinde aynı sonucu vereceğini göstermez.
Düşük doğruluk görürseniz önce
Örnek veri kümesiyle çalışan kodun bir sonraki adımı, aynı akışı kendi verinize uyarlamaktır: tabloyu
sklearn.datasets içindeki hazır veri kümesini yükleyip özellikleri X, hedef değerleri y olarak ayırın; ardından veriyi eğitim ve test bölümlerine ayırarak bir model çalıştırın. Aşağıdaki örnek, Iris veri kümesini kullanarak sınıflandırma modelinin nasıl kurulacağını ve test sonucunun nasıl okunacağını gösterir.Hazır veri kümeleri ne içerir?
scikit-learn içindeki örnek veri kümeleri, makine öğrenmesi kodunu gerçek bir veri toplama süreci olmadan denemek için hazırlanmış küçük veri kümeleridir.
load_iris(), load_digits() ve load_wine() gibi işlevler veriyi genellikle Bunch adı verilen, sözlük ve nesne özelliklerini birlikte kullanan bir yapı içinde döndürür.En sık kullanılan alanlar şunlardır:
data: Modelin girdi olarak kullanacağı özellik matrisi.target: Her satır için tahmin edilmesi beklenen hedef değer.feature_names: Özelliklerin adları varsa bunları içerir.target_names: Sınıflandırma problemindeki sınıf adlarını içerir.
data matrisi 150 satır ve 4 özellik içerir; target ise her satırın ait olduğu üç sınıftan birini gösterir.Hangi veri kümesini seçmelisiniz?
Veri kümesini seçerken önce yapmak istediğiniz denemeyi belirleyin. Sınıflandırmada hedef, sınıf etiketi olur; regresyonda ise sayısal bir değer tahmin edilir. Hazır veri kümeleri eğitim amacıyla kullanışlıdır, ancak küçük ve düzenlenmiş oldukları için gerçek bir üretim verisinin davranışını kanıtlamaz.
| Veri kümesi türü | Örnek işlev | Uygun kullanım |
|---|---|---|
| Küçük yerleşik sınıflandırma verisi | load_iris() | İlk sınıflandırma denemeleri |
| Görüntü benzeri sayısal veri | load_digits() | El yazısı rakam sınıflandırma denemeleri |
| Başka bir yerleşik sınıflandırma verisi | load_wine() | Ön işleme ve model karşılaştırması |
| İnternetten alınan veri | fetch_* işlevleri | İndirme, ağ erişimi ve veri koşullarını ayrıca yönetme |
load_* işlevleri veriyi doğrudan paketle birlikte veya yerleşik kaynaklardan alırken fetch_* işlevleri dış kaynaktan veri indirmeyi gerektirebilir. Bu nedenle ilk denemede yerleşik bir load_* veri kümesiyle başlamak daha öngörülebilirdir.Iris veri kümesiyle çalışan en küçük örnek
Ön koşul olarak Python ortamında scikit-learn kurulu olmalıdır. Kurulu değilse terminalde şu komutu çalıştırın:
Kod:
python -m pip install scikit-learn
Ardından aşağıdaki adımları uygulayın:
- Veri kümesini yükleyin.
load_iris()işlevi veri kümesini döndürür;datavetargetalanlarını model girdisi ve hedefi olarak alın. - Veriyi eğitim ve test bölümlerine ayırın.
test_size=0.2, verinin yüzde 20'sini test için ayırır.random_state=42, örneği tekrar çalıştırdığınızda aynı bölmenin kullanılmasına yardımcı olur. - Modeli kurup eğitin. Ölçekleme ile lojistik regresyonu bir işlem hattında birleştirin; böylece test verisinin bilgisi eğitim aşamasına sızmaz.
- Test tahminlerini değerlendirin. Doğruluk değeri, test bölümündeki doğru sınıf tahminlerinin oranını gösterir.
Python:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
iris = load_iris()
X = iris.data
y = iris.target
print("Özellik matrisi:", X.shape)
print("Hedef sınıfları:", iris.target_names)
X_train, X_test, y_train, y_test = train_test_split(
X,
y,
test_size=0.2,
random_state=42,
stratify=y
)
model = make_pipeline(
StandardScaler(),
LogisticRegression(max_iter=200)
)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print("Test doğruluğu:", accuracy_score(y_test, y_pred))
Çalıştırıldığında ilk çıktı, özellik matrisinin boyutunu ve sınıf adlarını gösterir. Iris için beklenen boyut
(150, 4) biçimindedir. Test doğruluğu ise 0 ile 1 arasında bir değer olur; örneğin 0.9, ayrılan test satırlarının yüzde 90'ında sınıfın doğru tahmin edildiği anlamına gelir.Tahmin sonucunu sınıf adıyla görmek
Modelin döndürdüğü
y_pred değerleri sınıf adının kendisi değil, hedef sınıf indeksleridir. Bunları insan tarafından okunabilir adlara çevirmek için aynı veri kümesinin target_names alanını kullanabilirsiniz:
Python:
for predicted_class, actual_class in zip(y_pred[:5], y_test[:5]):
print(
"Tahmin:", iris.target_names[predicted_class],
"Gerçek:", iris.target_names[actual_class]
)
Tahmin ve gerçek ad aynıysa o satır doğru sınıflandırılmıştır. Farklıysa model o örneği başka bir sınıfa atamıştır. Bu çıktı yalnızca seçilen test bölümünü açıklar; modelin her yeni veride aynı doğruluğu göstereceğini kanıtlamaz.
Sonucu doğru yorumlama
Yüksek test doğruluğu, bu veri bölme yöntemiyle ayrılan örneklerde modelin iyi sonuç verdiğini gösterir. Tek başına modelin gerçek hayatta güvenilir olduğunu, veri kümesinin tarafsız olduğunu veya başka bir veri kümesinde aynı sonucu vereceğini göstermez.
Düşük doğruluk görürseniz önce
X.shape, y.shape ve hedef sınıflarını yazdırarak verinin beklediğiniz biçimde yüklenip yüklenmediğini kontrol edin. Daha sonra eğitim-test bölmesinin rastgeleliğini ve sınıfların dengeli dağılımını inceleyin. Farklı bir veri kümesi veya model karşılaştırırken yalnızca tek bir doğruluk değerine bakmak yerine aynı bölme düzenini kullanın; aksi hâlde modelleri adil biçimde karşılaştırmak zorlaşır.Örnek veri kümesiyle çalışan kodun bir sonraki adımı, aynı akışı kendi verinize uyarlamaktır: tabloyu
X özellik matrisi ve y hedef dizisi biçimine getirin, eğitim sırasında yalnızca eğitim verisinden öğrenilen ön işleme adımlarını kullanın ve son değerlendirmeyi daha önce görülmemiş test verisiyle yapın.
Son düzenleme: