Makine Öğrenmesi Sınıflandırma Algoritmaları İçin Veri Setini Düzenleme

ibrahimcanerdogan
3 min readDec 23, 2020

--

Makine Öğrenmesinde sınıflandırma (classification) algoritmaları için veri setini düzenleyeceğiz, regresyon analizindeki veri düzenlemesinden farklarına bakacağız. Sınıflandırma algoritmalarında burada düzenlediğimiz veri setini kullanacağız :)

Yazının Konu Anlatım Videosu

Yazının Github Reposu

Yazının Konu Anlatım Oynatma Listesi

1- Veri Setinin Yüklenmesi

Buradan indirdiğimiz dosyayı “read_csv” ile okuyup atadığımız değişkeni bir dataframe haline getiriyoruz. İlk 4 değişkeni girdi olarak “train” değişkenine, son değişken sütununu da bizim sınıflandıracağımız sütun olduğundan çıktı olarak “test” değişkenine atıyoruz.

Burada regresyon algoritmasından farklı olarak “species” sütununu üç değişken ve string formatında olduğundan dolayı 0–1–2 dönüşümü yapmamıza gerek yoktur. Sınıflandırma algoritmalarının avantajıdır.

Oluşturduğumuz değişkenleri x_train, x_test, y_train ve y_test olarak ayırmak için “train_test_split” kullanıyoruz. Burada x’ler girdileri y’ler çıktıları oluşturur.

“test_size” değişkenimizi modelimizde fazlaca örnek bulunmadığından dolayı bu değeri düşük tutarız yani modelimizin doğruluğunu test edeceğimiz, train için kullanılmayacak verimizi (satır sayımızı) az miktarda ayırmış olduk. “ramdom state” ile bu ayrımda verileri ne kadar karıştıracağını belirtiyoruz.

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split

data = pd.read_csv("IRIS.csv")
data = pd.DataFrame(data)

train = data.iloc[:,0:4]
test = data.iloc[:,4:5]

x_train, x_test, y_train, y_test = train_test_split(train, test, test_size=0.20, random_state=20)

print(data)

2- EDA (Explorer Data Analysis)

EDA, bizim veri setimizi tanımaya çalıştığımız, bilgi toplama çalıştığımız uygulamalar bütünüdür.

Veri setimizde tüm sütunlarımızda kaç tane null değeri olduğunu bulmak için aşağıdaki kod bloğunu kullanırız.

Veri setimize göre bu “null” değerlere karşı önlem alabiliriz. Kullandığımız veri setimizde “null” değeri olsaydı, mesela “null” değerler yerine 0 atamak yerine burada sütunun ortalamasını atamak, veri setimizin yapısında benzer değerlerin tekrar ettiğinden dolayı daha mantıklı bir tercih olacaktır.

data.isnull().sum()

Aşağıki tabloda “sepal_width” sütununun türlere göre ölçülerinin sınıflandığını görüyoruz. Burada “sepal_width” verilerin birbiri arasında tekrarlandığını görüyoruz çünkü tekrarlanma olmasaydı x ekseni çok daha uzun olacaktır.

graph = data[‘sepal_width’].value_counts().plot.bar(color=[‘#CD7F32’,’#FFDF00',’#D3D3D3']) graph.set_title(‘sepal_width By species’) 
graph.set_ylabel(‘Count’)
plt.show()

Seaborn içinden “heatmap” yani ısı haritası ile verilere data.corr() yani girdi verilerinin birbiri arasındaki uyumu yani değişkenlerin birbiri arasındaki ilişkisinin gücünü ve yönünü görüyoruz.

Tablomuza baktığımızda “sepal” verilerin birbiriyle aynı yönde ilerleyen ve aynı değişimleri gösteren değişkenler olduğunu, “petal” değişkenlerine baktığımızda aynı durumda olduğunu görüyoruz.

Örnek olarak “petal_length” ile “sepal_width” arasındaki -0.42 değeri bize bu değerlerin birbirinden “0.42"den dolayı orta şiddetli bir korelasyonun olduğunu, “-”den dolayı ise eksi yönlü bir ilişkinin olduğunu anlamış oluyoruz.

sns.heatmap(data.corr(), annot=True, cmap='RdYlGn', linewidths=0.2)
fig=plt.gcf()
fig.set_size_inches(10,8)
plt.show()

Burada bıraktığım iki link sayesinde EDA hakkında fazlaca bilgi sahibi olabilir, daha karmaşık veri setlerine uygulayabilirsiniz;

Umarım faydalı olmuştur. Diğer algoritmalarda görüşmek üzere :)

Önceki Yazı (Tüm Regresyon Algoritmaları)

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