Bu eğitimde Titanic veri kümesini inceleyecek, analiz edecek ve sonuçları gerçek yarışmaya göndereceğiz. Veriyi nasıl çekeceğinizi ve Kaggle Notebook’unuza nasıl aktaracağınızı zaten bu eğitimde öğrendiniz. Şimdi veri bilimi defteri olarak DataLab’i kullanacağız. Böylece her iki aracı da farklı platformlarda kullanmayı öğrenerek favorinizi seçebileceksiniz.
Önce Kaggle’daki "Competitions" bölümüne gidin ve Titanic’i arayın (Şekil 5.4). Doğrudan not defterine geçmeden önce "Description and Rules" bölümlerinde paylaşılan tüm bilgileri anladığınızdan emin olun. Çözümle ilgili daha fazla fikir verebileceği için diğer kullanıcıların not defterlerini incelemek de önemlidir.
Şekil 5.4: Titanic - Felaketten Makine Öğrenimi
Yarışmanın konusu, Titanic gemi kazasında hangi yolcuların hayatta kaldığını tahmin eden bir makine öğrenimi modeli oluşturmaktır. Ad, cinsiyet, yaş vb. gibi yolcu bilgilerini içeren bir veri kümesi kullanacağız. Kullanacağımız 2 farklı veri kümesi olacak. İlki 'train.csv' başlığını taşıyor. Bu veri kümesinde yolcu bilgilerinin yanı sıra 'survived' ve 'not survived' gibi gerçek değerler de bulunur. 'test.csv' başlıklı ikinci veri kümesinde ise, bunları bizim tahmin edip sonuçlarımızı göndermemiz istendiği için herhangi bir ground truth değeri yer almaz.
Gönderim dosyası yalnızca 2 sütun içerecektir: PassengerId ve Survived. 2’den fazla değer içeren bir dosya yüklemeye çalışırsanız gönderim sistemi hata üretir. Lütfen günde 10 gönderim yapabileceğinizi unutmayın.
"Competition Description" bölümünde verilen bilgilerle bir sonraki adım, verileri DataLab’e çekmek ve analiz etmektir.
Öncelikle Data sekmesine giderek (Şekil 5.5) Data Explorer’da veri kümesini indirmelisiniz. Hem 'train.csv' hem de 'test.csv' dosyalarını indirmelisiniz.
Dosyaları indirdikten sonra DataLab’e gitmelisiniz. Önce bir hesap oluşturmanız gerektiğini unutmayın. Hesap oluşturmak ve DataLab’i kullanmak ücretsizdir.
Dosyaları not defterinin sol tarafına kolayca sürükleyip bırakabilirsiniz (Şekil 5.6).
Şekil 5.5: Veri Kümesinin İndirilmesi
Şekil 5.6: Veri Kümesinin DataLab’e Eklenmesi
Bir sonraki adım, veri kümesi açıklamasındaki veri sözlüğünü kontrol etmektir. Bu, hangi sütunları görselleştireceğimize karar vermemize yardımcı olacaktır.
survival: Hayatta kalma
pclass: Bilet sınıfı
sex: Cinsiyet
Age: Yaş (yıl)
sibsp: Titanic’teki kardeş/eş sayısı
parch: Titanic’teki ebeveyn/çocuk sayısı
ticket: Bilet numarası
fare: Yolcu ücreti
cabin: Kamara numarası
embarked: Biniş limanı
Verilerin İçe Aktarılması
Jupyter not defterlerinde, hücrenin başına ünlem işareti koyarak bash komutlarını kullanabilirsiniz. Yüklenen veri kümesi dosyalarının konumunu pwd ve ls komutlarıyla kontrol edeceğiz.
Pandas, veriyi işleme ve veri analizi süreçlerinde kullanılan bir Python kütüphanesidir. Artık Ticket, Name ve PassengerId sütunlarını, anlamlı sayısal veya kategorik veri içermedikleri için kaldırdık. Şimdi kullanılacak diğer özellikleri görebileceksiniz.
Sonraki birkaç satırda eğitim ve test veri kümesi dosyaları Pandas’ın read_csv yöntemiyle okunur. Survived ve PassengerId sütunlarının sırasıyla train ve test veri çerçevelerine eklendiğine dikkat edin. Modeli, columns_to_be_added_as_features içindeki özellikleri ve Survived sütunundaki etiketleri ayrı ayrı kullanarak besleyeceğiz. Ancak ön işleme adımlarını basitleştirmek için şimdilik bunları birleştirebiliriz. test_df_matcher değişkeni PassengerId’yi de içerir. Bunu, PassengerId’yi test kümesi tahminleriyle eşleştirip Kaggle’a sonuç olarak yükleyeceğimiz CSV dosyasını üretmek için kullanacağız.
head() yöntemiyle ilk 5 satırı, sütun adlarıyla birlikte görebiliriz. head() yönteminin içine parametre olarak kaç satır gösterileceğini belirleyebilirsiniz. Aşağıdaki hücrede eğitim ve test kümelerindeki satır sayıları sırasıyla yazdırılır.
print("Number of rows in training set: {}".format(len(train_df)))print("Number of rows in test set: {}".format(len(test_df)))Altyapı:
Eğitim kümesindeki satır sayısı: 891 Test kümesindeki satır sayısı: 418
Ön İşleme
Modelde özellik olarak kullanılacak değerlerin türünü float’a dönüştürmeliyiz. Bu dönüşüm, veriyi normalize ederken bazı sayısal işlemleri yapmamıza olanak tanır.
for column_title in columns_to_be_added_as_features:if column_title in['Embarked',"Sex"]:continue
train_df[column_title]= pd.to_numeric(train_df[column_title], downcast="float")
test_df[column_title]= pd.to_numeric(test_df[column_title], downcast="float")
train_df["Survived"]= pd.to_numeric(train_df["Survived"], downcast="float")Altyapı:
Modeli sayısal değerlerle beslememiz gerekir. Aşağıdaki kod parçasında dizgiler sayısal değerlere dönüştürülüyor
Tüm boş değerler 0 ile değiştirilecektir; bu tercih zaman kazandırmak amacıyla yapılmıştır. Ancak, eksik değerlerin makine öğreniminde nasıl ele alınacağını öğrenmek için bu eğitimi okuyabilirsiniz.
Aşağıda doğrulama oranı 0,2 olarak ayarlanmıştır; bu da verinin %20’sinin doğrulama için kullanılacağı anlamına gelir. Veri kümesini eğitim ve doğrulama setlerine ayırmak için Sklearn’in train_test_split yöntemini kullanacağız. Ardından, aşağıdaki kod parçasının son 4 satırında gösterildiği gibi özellikleri ve etiketleri ayıracağız.
validation_set_ratio =0.2
validation_set_size =int(len(train_df)*validation_set_ratio)
training_set_size =len(train_df)- validation_set_size
print("Total set size: {}".format(len(train_df)))print("Training set size: {}".format(training_set_size))print("Validation set size: {}".format(validation_set_size))from sklearn.model_selection import train_test_split
train, val = train_test_split(train_df, test_size=validation_set_ratio)
train_X = train[columns_to_be_added_as_features]
train_Label = train[['Survived']]
val_X = val[columns_to_be_added_as_features]
val_Label = val[['Survived']]Altyapı:
Eğitim
Destek vektör makineleri, sınıflandırma ve regresyon analizi için kullanılan denetimli öğrenme modelleridir. Bu model aşağıdaki parametrelerle seçilmiştir. Farklı parametre kombinasyonlarıyla diğer modelleri de denemelisiniz. Bir parametreyi değiştirmek veya başka bir modeli denemek istediğinizde her seferinde kodu başlatıp durdurmanıza gerek yoktur; bu süreci otomatikleştirebilirsiniz. Destek Vektör Makineleriyle ilgileniyorsanız DataCamp’teki Scikit-learn ile Destek Vektör Makineleri eğitimine göz atabilirsiniz.
Bu bölümde modele doğrulama kümesi özelliklerini verip tahminleri alacağız. Ardından bunları gerçek değerlerle karşılaştıracağız. Doğruluk hesabını kolaylaştırmak için Sklearn’in metrics.accuracy_score yöntemi kullanıldı. Doğrulama kümesi doğruluğu 0,799 olarak hesaplandı; bu iyi bir başlangıç.
from sklearn import metrics
y_pred = svm_model.predict(val_X)print("Accuracy:",metrics.accuracy_score(val_Label, y_pred))Altyapı:
Accuracy: 0.7988826815642458
Test Kümesi Tahminlerinin Alınması
Şimdi gerçek test kümesi için tahminleri almaya geçiyoruz. Test kümesi için gerçek değerler olmadığından, doğruluğu yalnızca tahmin dosyası Kaggle’a yüklendikten sonra öğrenebiliriz.
PassengerId sütunu test_df_matcher adlı dataframe’den alınır. Doğrudan döndürüldüğünde dönüş değerinin türü Series olacaktır. Bu nedenle, bunu Pandas DataFrame türüne dönüştüreceğiz. Ardından test kümesi tahminlerini dataframe’in ikinci sütunu olarak ekleyeceğiz.
result = pd.DataFrame(test_df_matcher['PassengerId'])print(result.head(10))Altyapı:
Son olarak çıktı formatı hazır. Son adımda index parametresine False vererek indeks değerleri kaldırılacaktır. Artık oluşturulan dosyayı indirip Kaggle’a yükleyebilirsiniz. Bu şekilde test kümesi doğruluğunu öğrenecek ve ardından sıralama tablosunda yerinizi alacaksınız.
Şimdi yarışma sayfasına dönüp "Submit Predictions" butonuna tıklayacak ve ardından tahmin dosyasını yükleyeceğiz. Birkaç saniye sonra test doğruluğunuzu alacaksınız (Şekil 5.12).
Şekil 5.12: Test Kümesinin Doğruluğu
Sonuç
Bu eğitimde bir veri kümesini nasıl analiz edeceğinizi ve sonuçlarınızı bir Kaggle yarışmasına nasıl göndereceğinizi öğrendiniz. Veri bilimi yarışmalarını seviyorsanız DataCamp Competitions hakkında daha fazla bilgiyi buradan edinebilirsiniz.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Bu eğitimde Titanic veri kümesini inceleyecek, analiz edecek ve sonuçları gerçek yarışmaya göndereceğiz. Veriyi nasıl çekeceğinizi ve Kaggle Notebook’unuza nasıl aktaracağınızı zaten bu eğitimde öğrendiniz. Şimdi veri bilimi defteri olarak DataLab’i kullanacağız. Böylece her iki aracı da farklı platformlarda kullanmayı öğrenerek favorinizi seçebileceksiniz.
Önce Kaggle’daki "Competitions" bölümüne gidin ve Titanic’i arayın (Şekil 5.4). Doğrudan not defterine geçmeden önce "Description and Rules" bölümlerinde paylaşılan tüm bilgileri anladığınızdan emin olun. Çözümle ilgili daha fazla fikir verebileceği için diğer kullanıcıların not defterlerini incelemek de önemlidir.
Yarışmanın konusu, Titanic gemi kazasında hangi yolcuların hayatta kaldığını tahmin eden bir makine öğrenimi modeli oluşturmaktır. Ad, cinsiyet, yaş vb. gibi yolcu bilgilerini içeren bir veri kümesi kullanacağız. Kullanacağımız 2 farklı veri kümesi olacak. İlki 'train.csv' başlığını taşıyor. Bu veri kümesinde yolcu bilgilerinin yanı sıra 'survived' ve 'not survived' gibi gerçek değerler de bulunur. 'test.csv' başlıklı ikinci veri kümesinde ise, bunları bizim tahmin edip sonuçlarımızı göndermemiz istendiği için herhangi bir ground truth değeri yer almaz.
Gönderim dosyası yalnızca 2 sütun içerecektir: PassengerId ve Survived. 2’den fazla değer içeren bir dosya yüklemeye çalışırsanız gönderim sistemi hata üretir. Lütfen günde 10 gönderim yapabileceğinizi unutmayın.
"Competition Description" bölümünde verilen bilgilerle bir sonraki adım, verileri DataLab’e çekmek ve analiz etmektir.
Öncelikle Data sekmesine giderek (Şekil 5.5) Data Explorer’da veri kümesini indirmelisiniz. Hem 'train.csv' hem de 'test.csv' dosyalarını indirmelisiniz.
Dosyaları indirdikten sonra DataLab’e gitmelisiniz. Önce bir hesap oluşturmanız gerektiğini unutmayın. Hesap oluşturmak ve DataLab’i kullanmak ücretsizdir.
Dosyaları not defterinin sol tarafına kolayca sürükleyip bırakabilirsiniz (Şekil 5.6).
Bir sonraki adım, veri kümesi açıklamasındaki veri sözlüğünü kontrol etmektir. Bu, hangi sütunları görselleştireceğimize karar vermemize yardımcı olacaktır.
Verilerin İçe Aktarılması
Jupyter not defterlerinde, hücrenin başına ünlem işareti koyarak bash komutlarını kullanabilirsiniz. Yüklenen veri kümesi dosyalarının konumunu pwd ve ls komutlarıyla kontrol edeceğiz.
/work/files/workspace
notebook.ipynb test.csv train.csv
Pandas, veriyi işleme ve veri analizi süreçlerinde kullanılan bir Python kütüphanesidir. Artık Ticket, Name ve PassengerId sütunlarını, anlamlı sayısal veya kategorik veri içermedikleri için kaldırdık. Şimdi kullanılacak diğer özellikleri görebileceksiniz.
Sonraki birkaç satırda eğitim ve test veri kümesi dosyaları Pandas’ın read_csv yöntemiyle okunur. Survived ve PassengerId sütunlarının sırasıyla train ve test veri çerçevelerine eklendiğine dikkat edin. Modeli, columns_to_be_added_as_features içindeki özellikleri ve Survived sütunundaki etiketleri ayrı ayrı kullanarak besleyeceğiz. Ancak ön işleme adımlarını basitleştirmek için şimdilik bunları birleştirebiliriz. test_df_matcher değişkeni PassengerId’yi de içerir. Bunu, PassengerId’yi test kümesi tahminleriyle eşleştirip Kaggle’a sonuç olarak yükleyeceğimiz CSV dosyasını üretmek için kullanacağız.
head() yöntemiyle ilk 5 satırı, sütun adlarıyla birlikte görebiliriz. head() yönteminin içine parametre olarak kaç satır gösterileceğini belirleyebilirsiniz. Aşağıdaki hücrede eğitim ve test kümelerindeki satır sayıları sırasıyla yazdırılır.
Eğitim kümesindeki satır sayısı: 891 Test kümesindeki satır sayısı: 418
Ön İşleme
Modelde özellik olarak kullanılacak değerlerin türünü float’a dönüştürmeliyiz. Bu dönüşüm, veriyi normalize ederken bazı sayısal işlemleri yapmamıza olanak tanır.
Modeli sayısal değerlerle beslememiz gerekir. Aşağıdaki kod parçasında dizgiler sayısal değerlere dönüştürülüyor
Aşağıda tüm özellikler normalize ediliyor; bu durumda 0 ile 1 arasına ölçekleniyor demektir.
Veri kümesi eğitim ve doğrulamaya bölüneceğinden, tek bir sette gruplaşmaları önlemek için önce veri kümesini karıştıracağız.
Tüm boş değerler 0 ile değiştirilecektir; bu tercih zaman kazandırmak amacıyla yapılmıştır. Ancak, eksik değerlerin makine öğreniminde nasıl ele alınacağını öğrenmek için bu eğitimi okuyabilirsiniz.
Aşağıda doğrulama oranı 0,2 olarak ayarlanmıştır; bu da verinin %20’sinin doğrulama için kullanılacağı anlamına gelir. Veri kümesini eğitim ve doğrulama setlerine ayırmak için Sklearn’in train_test_split yöntemini kullanacağız. Ardından, aşağıdaki kod parçasının son 4 satırında gösterildiği gibi özellikleri ve etiketleri ayıracağız.
Eğitim
Destek vektör makineleri, sınıflandırma ve regresyon analizi için kullanılan denetimli öğrenme modelleridir. Bu model aşağıdaki parametrelerle seçilmiştir. Farklı parametre kombinasyonlarıyla diğer modelleri de denemelisiniz. Bir parametreyi değiştirmek veya başka bir modeli denemek istediğinizde her seferinde kodu başlatıp durdurmanıza gerek yoktur; bu süreci otomatikleştirebilirsiniz. Destek Vektör Makineleriyle ilgileniyorsanız DataCamp’teki Scikit-learn ile Destek Vektör Makineleri eğitimine göz atabilirsiniz.
Doğrulama Kümesi Tahminlerinin Alınması
Bu bölümde modele doğrulama kümesi özelliklerini verip tahminleri alacağız. Ardından bunları gerçek değerlerle karşılaştıracağız. Doğruluk hesabını kolaylaştırmak için Sklearn’in metrics.accuracy_score yöntemi kullanıldı. Doğrulama kümesi doğruluğu 0,799 olarak hesaplandı; bu iyi bir başlangıç.
Accuracy: 0.7988826815642458
Test Kümesi Tahminlerinin Alınması
Şimdi gerçek test kümesi için tahminleri almaya geçiyoruz. Test kümesi için gerçek değerler olmadığından, doğruluğu yalnızca tahmin dosyası Kaggle’a yüklendikten sonra öğrenebiliriz.
Çıktı DataFrame’inin Oluşturulması
PassengerId sütunu test_df_matcher adlı dataframe’den alınır. Doğrudan döndürüldüğünde dönüş değerinin türü Series olacaktır. Bu nedenle, bunu Pandas DataFrame türüne dönüştüreceğiz. Ardından test kümesi tahminlerini dataframe’in ikinci sütunu olarak ekleyeceğiz.
Çıktı Dosyasının Oluşturulması
Son olarak çıktı formatı hazır. Son adımda index parametresine False vererek indeks değerleri kaldırılacaktır. Artık oluşturulan dosyayı indirip Kaggle’a yükleyebilirsiniz. Bu şekilde test kümesi doğruluğunu öğrenecek ve ardından sıralama tablosunda yerinizi alacaksınız.
Şimdi yarışma sayfasına dönüp "Submit Predictions" butonuna tıklayacak ve ardından tahmin dosyasını yükleyeceğiz. Birkaç saniye sonra test doğruluğunuzu alacaksınız (Şekil 5.12).
Sonuç
Bu eğitimde bir veri kümesini nasıl analiz edeceğinizi ve sonuçlarınızı bir Kaggle yarışmasına nasıl göndereceğinizi öğrendiniz. Veri bilimi yarışmalarını seviyorsanız DataCamp Competitions hakkında daha fazla bilgiyi buradan edinebilirsiniz.