Makine Öğrenmesi İçin Veri Setini Düzenleme (Regresyon)

ibrahimcanerdogan
3 min readDec 15, 2020

--

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.

Yazının Konu Anlatım Videosu

Yazının Github Reposu

Yazının Konu Anlatım Oynatma Listesi

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 np
imputer = 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)

MY GITHUB PROFILE

MY YOUTUBE CHANNEL

MY LINKEDIN PROFILE

--

--

ibrahimcanerdogan
ibrahimcanerdogan

Written by ibrahimcanerdogan

Hi, My name is Ibrahim, I am developing ebebek android app within Ebebek. I publish various articles in the field of programming and self-improvement.

No responses yet