Makine Öğrenmesi İçin Veri Setini Düzenleme (Regresyon)
Makine Öğrenmesinde tahmin algoritmaları olarak da bilinen regresyon algoritmalarında ortalama bir veri setini nasıl düzenleyeceğimiz, kullanabileceğimiz hale getirmek için aşağıdaki adımların hepsi veya birkaçını uygulamanız gerekebilir.
1- Verisetinin Yüklenmesi
Seaborn içinden bahşiş veri setini “data” değişkenine atıyoruz ve pandas ile data değişkenimizi dataframe haline getiriyoruz ve bunu “df” adında bir değişkene atama işlemi yapıyoruz.
import seaborn as sns
import pandas as pd
data = sns.load_dataset("tips")
df = pd.DataFrame(data)
print(df)
2- Eksik Verileri Doldurma
Sklearn.imputer içinde SimpleImputer ile veri setimizde oluşacak “NaN” değerleri yok etmek için fonksiyonumuza missing_values özelliğe np.nan ve strategy özelliğine ise tespit edilen NaN değerlerine karşı nasıl bir çözüm uygulayacağını seçiyoruz, burada “mean” ile NaN değer tespit edilen sütunda o sütunun ortalama değeri eklenmesini istediğimizi belirtmiş oluyoruz.
Oluşturduğumuz “imputer” değişkene veri setimizde sayısal olup NaN değer olduğunu düşündüğümüz, bildiğimiz sütunu df[[“total_bill”]] şeklinde yolluyoruz. Ve df[[“total_bill”]] bu sütunu belirlediğimiz imputer ile dönüşümünü sağlıyoruz.
from sklearn.impute import SimpleImputer
import numpy as npimputer = SimpleImputer(missing_values=np.nan, strategy="mean")
imputer = imputer.fit(df[["total_bill"]])
df[["total_bill"]] = imputer.transform(df[["total_bill"]])
3- Kategorik Olmayan Değişkenler
Veri setine baktığımızda belli birkaç sayı ile ifade edilmeyen sutunlar bizim kategorik olmayan değişkenlerimizdir ve bu değişkenlere herhangi bir değişiklik uygulanmadan da kullanılabilir. Standartlaştırma işlemi (Standart Scaler, MaxMin Scaler, Robust Scaler) istenilirse uygulanabilir.
Size değişkeni aslında kategorik bir değişken olmasına rağmen sayısal olduğu için tahmin algoritmaları tarafından algılanacaktır bu yüzden herhangi bir işleme yine de tabi tutmaya gerek yoktur.
total_bill = df[["total_bill"]]
tip = df[["tip"]]
size = df[["size"]]
4- Kategorik Değişkenler
Smoker ve Time sütunları hem string olması hem de smoker’ın Yes ve No olarak 2 farklı değişkeni ve time’ın 4 farklı değişkene sahip olması bunların kategorik olduğunu gösterir.
Burdaki kategorileşme tahmin algoritmaları tarafından kullanılması için pandas “get_dummies” ile 0 ve 1 dönüşümleri yapılmalıdır.
import pandas as pd
smoker = pd.get_dummies(df[["smoker"]])
time = pd.get_dummies(df[["day"]])
5- Kukla Değişkeni Kaldırma
Kukla değişken 2 tane kategorinin olduğu sütunlarda birbirinin aynısı bilgisi, birisi 0 ile gösterirken diğerinin 1 ile göstermesi sonucu birbirini taklit eden değişkenlerdir.
Smoker sütundan get_dummies ile “smoker_No” ve “smoker_Yes” olarak 2 kukla sütundan “smoker_Yes” değişkenini aşağıda olduğu gibi kaldırıyoruz.
smoker = smoker.drop("smoker_Yes", axis=1)
6- Verileri Birleştirme
Pandas ile “concat” fonksiyonunu kullanarak istenilen hale getirilen bütün sütunları birleştirip bunu artık “new_data” adında bir değişkene atayarak kullanmaya başlayabiliriz.
!! Birleştirme işleminde tahmin algoritmalarıyla tahmin etmek isteğiniz değişkeni (bizim tips verisetinde tip değişkeni) son sütuna eklemeniz sizin için kolaylık sağlayacaktır.
import pandas as pdnew_data = pd.concat([total_bill, size, smoker, time, tip], axis=1)print(new_data)
7- Train ve Test Belirleme
Burada “iloc” fonksiyonu ile ilk 7 sutunu yani tahmin etmek için girdi değerlerini bir değişkene (genelde X olur), tahmin edilecek yani çıktı değişkenini (genelde y olur) bir değişkene atıyoruz.
training = new_data.iloc[:, 0:7]
testing = new_data.iloc[:, 7:8]
Train ve Test Ayırma
sklearn.model_selection içinden train_test_split ile tahminlerde kullanacağımız x_train, x_test, y_train, y_test değişkenlerinin yolluyoruz, test_size ile veriseti içinden test_size olarak belirlenecek oranı ve random_state ile train ve test işlemlerindeki ayrımın karışıklık oranını veriyoruz.
from sklearn.model_selection import train_test_splitx_train, x_test, y_train, y_test = train_test_split(training, testing, test_size=0.30, random_state=42)print(x_train)
print(y_train)
print(x_test)
Bu şekilde artık tahminlerde kullanılacak olan verileri elde etmiş oluyoruz. Bu verileri ilerki yazılarımda regresyon algoritmalarında kullanacağım. Umarım faydalı olmuştur.
Sonraki Yazı (Lineer Regresyon)