Python Makine Öğrenmesi
Makine öğrenmesi tahmin modellerini kullanarak Covid Türkiye verilerini modelleştirelim. Öncelikle kullanacağımız veriyi bulmamız gerekiyor. İnternette bununla ilgili birçok kaynak vardı. Özellikle “Kaggle”da istenilen kaynak dataset kolaylıkla bulunulabilir.
Bazı verilere baktıktan sonra bu veri üzerinde karar kıldım. Şimdi Python ile kodlama kısmına geçebiliriz.
Öncelikle makine öğrenmesinde her seferinde kullandığımız pandas ve numpy kütüphanelerini import ederek başlamalıyız.
Pandas kütüphanesinin read_csv fonksiyonu ile verimizi içeri aktarabiliriz.
Verileri incelediğimizde 260. satıra kadar “Cases” verilerinin yer almadığını ve son 3 satırda bazı değerlerin NaN olduğunu görebiliriz.Bu yüzden bu satırları çıkartmamız gerekir.
Veri kümemizi düzenlediğimize göre şimdi bağımlı ve bağımsız değişkenlerimizi belirleyebiliriz. Ben, bağımlı değişken olarak ölüm sayısını(deaths) seçtim. Bağımsız değişken olarak da geriye kalan tüm kolonları seçecektim fakat bazı sütunlar NaN değerler içeriyordu,bir sütunda tarih verileri yer alıyordu(tarih verilerini kullanmamıza gerek yok çünkü index ile aynı işlevi görmüş oluyor) , bir sütunda da yüzdelik değer belirtiliyordu. Bu yüzdelik değer %3.2 gibi belirtiliyordu. Bu sütunu kullanmak için % sembolünün kaldırılması gerekirdi çünkü makine öğrenmesi tahmin modeli algoritmalarında veriler float türden olmalıydı. Eğer istersek bu sütunu şu şekilde düzenleyebiliriz:
Burada index numarasını 260'tan başlattık çünkü kullanacağımız verilerde index 260'tan başlıyordu.
Şimdi bağımsız(x) ve bağımlı(y) değişkenleri tanımlayalım.
Makine öğrenmesinde genellikle x ve y Pandas olarak , X ve Y Numpy olarak belirtilir . Bu yüzden kodlamalarda X=x.values şeklinde belirtiliyor genellikle veya doğrudan Y=veriler.iloc[:,2:3].values şeklinde de yapılabilirdi fakat kolay okunabilmesi için bu şekilde kullandım.
Şimdi makine öğrenmesi tahmin modellerini ekleyebiliriz fakat öncesinde modelleri karşılaştırabilmemiz için R2 Score’u ve modelleri değerlendirip iyileştirmek için statsmodels.api’yi kullanalım.
Not:Veriler train ve test kümesi olarak bölünebilirdi fakat veri kümesi pek büyük olmadığı için bölmedim.Bölmek istenirse kullanılacak kod örneği:
Şimdi sırası ile modelleri ekleyebiliriz.
LinearRegression
PolynomialRegression
SVR
SVR veriler konusunda hassasiyete sahiptir. Bu yüzden veriler standardize edilmeli.
RandomForest
Model Değerlendirmesi
Yukarıda bazı modeller kullanılmıştır.Bu modellerde verilen değerler değiştirilerek model sonucunun iyileşmesi sağlanabilir. model.summary() fonksiyonu ile modele ait sonuçları görebiliriz. Bu sonuçlarda kolonların P value değerlerine bakılarak bazı sütunlar çıkarılıp tekrar model sonuçlarına bakılarak düzenleme yapılabilir.
Kolonların birbirleri ile olan ilişkisini görebilmek için :
kullanılabilir. Burada kolonların birbirine olan etkisi görünebilir. Bu sonuca göre daha kolay yorum yapılabilir.
Modelin İyileştirilmesi
Modeli iyileştirmek için modele verdiğimiz değerleri değiştirerek denemeler yapabiliriz fakat bu yorucu olabilir. Bu yüzden GridSearchCV fonksiyonunu kullanabiliriz.Bu fonksiyonda hangi model için hangi değerleri denemek istediğimizi belirliyoruz,sonuç olarak bize en iyi parametreyi ve en yüksek skor değerini geri dönderebiliyor.
Burada p değişkeni dictionary türünde bulunuyor. Buraya kullanacağımız modelin alabileceği değişkenleri ve denenmesini istedğimiz değerleri girebiliyoruz. Deneyeceğimiz değerlerde maksimum aralıktan başlayp minimuma düşürmeliyiz(Giant-Baby). Örneğin başlangıçta RandomForest için “n_estimators” değerini [2,10,20,50,80] gibi yapıp sonuca göre adımları küçültebiliriz.