YÖNTEM

Photo by NEW DATA SERVICES on Unsplash

Bu gönderimde ML projelerinde izlenen yönteme ve sürece bakacağız.

ML projelerinde genel olarak belli bir şablon takip edilir. Bunlardan en popüleri CRISP-DM’dir. Aşağıdaki görselde bu metoda ait süreç adımları bulunuyor. İlgilenenler http://leylatilki.com/crisp-dm-metodolojisi-nedir/ veya http://kodlayarakhayat.com/yazilima-dair/crisp-dm-metadolojisi/ adreslerinden detay bilgi alabilir.


Photo by Sebastian Herrmann on Unsplash

Things going on in Python

You must have encountered this famous line and got the shock thinking what on earth it might have mean? After some googling the chances are you ended up in stackoverflow.

So, in a nutshell, when you run the program directly, the value of the __main__ attribute(“__main__”) is assigned to __name__ attribute which evaluates to the name of the current module, otherwise the name of the module is assigned to __name__ attribute. With this line, we just try to find out if the module has been run directly or it has been imported into another module.

if __name__ == '__main__'…

3.yazıdayız, hala kod yok, kodlar nerde?

Ben konuları anlatırken temeli derin kazmayı tercih ediyorum. O yüzden 2 belki 3 gönderide daha kod görmeyeceksiniz. Aksi halde kod yazarken bazı şeyler havada kalabiliyor. Bununla birlikte sadece teorik bilgi de birşey ifade etmeyebiliyor, bunun da farkındayım, ama yine de aklınızda bazı bilgi kırıntıları kalacağından da eminim. O yüzden burdaki bilgilere kodlama konusunda deneyim kazandıktan sonra tekrar gelip bakılmasında fayda var.

Cross-Validation(CV)

Özet

Bir önceki gönderimde belirttiğim gibi, modelimizin overfit edip etmediğini anlama yollarında biri de cross validation(cv) uygulamaktır. Burdaki amaç özetle şudur: Eğitim setini farklı kombinasyonlarla pure eğitim ve validasyon(aslında bu da bir nevi test setidir) setlerine ayırıp, her biri için…


Photo by Tim Mossholder on Unsplash

Bu bölümde makinenin öğrenim sürecine ve öğrenirken yaşadığı problemere değineceğiz.

Öğrenme(ve öğretme) denen şey ne?

Öğrenme, kısaca matematiksel bir denklem oluşturmaktan başka birşey değildir. Yani, çıktımız inputların bir fonksiyonudur. Bu nihai fonksiyonu elde ederken aslında bir amaç fonksiyonumuz vardır, bunu minimize(loss function ise) veya maksimize(utility function ise) etmeye çalışırız. Bu konuya biraz aşağıda değineceğiz.

Peki tam olarak süreç nasıl işliyor? ML tanımında bahsettiğimiz, “açıkça programlanmadan” ifadesi ne anlama geliyor, en nihayetinde öğrenen şey ne, öğrendiği şey ne ve öğrendiği şeyi öğrenmesi ne anlamalı geliyor?

Algoritmaların detayına bakmadan önce burada işin teoriğini anlamanız, birçok işi ezbere yapmamanız adına önemli. Çoğu eğitim materyalinin işin felsefesini anlatmadığını düşündüğüm…


ÖNSÖZ

Herhangi bir dili öğrenirken derli toplu çalışmayı seviyorum. Çalışma notlarım öyle bir düzen içinde olur ki, sanki bunları sonradan birisine anlatmam gerekirmiş gibi tutarım. Bu notlar birçok kaynağın derlemesi + kendi deneyimlerimden oluştuğu için bir süre sonra faydalı bir kaynağa dönüşür. www.excelinefendisi.com sitesi de bu şekilde ortaya çıkmıştı. Bundan sonra Python için tuttuğumu notlar ve arkasından numpy/pandas için tuttuğumu notları da derleyip mediumda yayınlamıştım.

Sırada Makine Öğrenimi notlarım vardı ama bunlar büyük lokmaydı. Bunlar için tuttuğum word dosyası şimdiden 150 sayfayı buldu, üstelik hiç kod yok. Kodların olduğu notebook da o kadar şişti ki, açılması birkaç dakika sürüyor. Notları tek…


Photo by Cristina Gottardi on Unsplash

Say you have A,B,C values in a feature in the train set. And surprisingly your test set does not contain A in that feature, furthermore it has D additionally.

If you go into a solution containing pandas’ get_dummies method, well, enjoy the trip.

I prefer using sklearn’s OneHotEncoder with the help of some utility function. Here is my solution…(You could find the notebook here)

Note: I got the data template from here.

import pandas as pd
from sklearn.preprocessing import OneHotEncoder
import mlextension as ml #for the function returning onehot columns
#train set
df_train = pd.DataFrame([["London", "car", 20]…

When we have an imbalanced(say %90 A’s, %10 B’s in the label) data set, we should be careful with the “train/test splitting” step(and also cross validation)

There are 3 things to do:

  • Split the sets such a way that your test set should have the same proportions in the whole set. Otherwise, by pure randomness, your test set may completely consist of A’s, which causes our model to predict only A’s. If we arrange the correct proportions our model can make predictions for B’s as well.
  • Do some oversampling for the minority class for a fair training, (and also undersampling…

You must have seen this diagram very often, if you are already in ML world. Almost every tutorial refers to it. But this is only the constitution, we need a much more detailed law book, which tells us what to do when specifically.

Here is my tangible course of actions:

First parts are for both ML models and Data Analysis works.

NOTE: when I say “if needed/necessary”, I mean both if your data needs some action and also if your algorithm requires it. …


Photo by Jelleke Vanooteghem on Unsplash

Küçük çocuğu olan ailelerin kabusudur tablet ve telefon düşkünlüğü. Hatta sadece küçük çocukların değil, büyük çocuklarda bile bu bir sorun olabilmekte. Herkesin kendince bazı önlemleri olabilir. Ben de burada kendi deneyimlerimi paylaşmak istedim.

Tabii ki ilk önerim, çocuklara küçük yaşta tablet almamanızdır. Ama diyelim ki bu hataya düştünüz, o zaman aşağıdaki önlemleri alabilirsiniz. (Burada klasik pedagog önerilerine girmiycem, “onlarla vakit geçirin, ev oyunları oynayın v.s”, evet bunları zaten yapın, benim önerilerim biraz daha teknik öneriler olacak)

Öncelikle, çocuğunuz bilgisayar kullanıyorsa bir aile hesabı açın. Çocuklarınıza outlook hesabı açmanız gerekecek. Sonra https://account.microsoft.com/family/ adresine girin. Burada yapacağınız iki ayar var:

  • Çocukların hangi…

  • Anlat bana unutayım
  • Öğret bana hatırlayayım
  • Beni dahil et(Yaptır bana), öğreneyim.

Benjamin Franklin’in bu mottosunu hayatımın birçok alanına uygulamaya çalışıyorum. İlk Python konulu gönderimde bahsettiğim gibi, önce kendime notlar şeklinde aldığım notları derleyip yayınlamaya devam ediyorum, bu şekilde kendim de öğrenmiş oluyorum.

Bu ikinci gönderimin konusu Veri Analizi ve Veri Bilimi. İlk gönderide olduğu gibi Medium makale standartlarına göre çok uzun(yaklaşık 200 sayfa oldu) olduğu için onu da bir notebook olarak hazırladım.

  • Notebook’a Github üzerinden doğrudan ulaşmak için buraya tıklayın
  • Nbviewer üzerinden çalışmış haline ulaşmak için buraya tıklayabilirsiniz.
  • Mybinder üzerinden interaktif bir şekilde, yani kodu hiç bilgisayarınıza indirmeden browser üzerinden…

Volkan Yurtseven

I’m a self taught Data Science Enthusiast

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store