#!/usr/bin/env python
# coding: utf-8
#
#
#
# Iris Verisini Kullanarak kNN ve Karar Ağacı Sınıflandırma Algoritmalarının Karşılaştırması
#
# In[1]:
from IPython.display import Image,HTML
HTML("""""")
# In[2]:
Image(filename="C:\\Users\\ceakn\\Desktop\\site-resimler\\iris.png")
#
# Scikit-learn Üzerinden Iris Dataset' i İçe Aktarma
#
# In[3]:
import numpy as np
from sklearn import datasets
iris = datasets.load_iris()
# In[4]:
print(iris.feature_names)
# In[5]:
print(iris.target_names)
# In[6]:
iris.data
# In[7]:
print(iris.target)
# In[8]:
print(type(iris.data))
print(type(iris.target))
print(type(iris))
print(iris.data.shape)
# In[9]:
np.isnan(iris.data).any()
np.isnan(iris.target).any()
# In[10]:
X = iris.data
y = iris.target
#
#
# Gerekli Kütüphanenin İçe Aktarılması
#
# In[11]:
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
#
#
# Eğitim ve Test Kümelerine Ayırma (Train/Test split)
#
# In[12]:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=4)
# In[13]:
print(X_train.shape ,X_test.shape)
# In[14]:
print(y_train.shape ,y_test.shape)
#
# KNN Algoritması
#
#
# K = 1 Değeri İçin Tahmin Yapalım
#
# In[15]:
kNN = KNeighborsClassifier(n_neighbors=1)
kNN.fit(X_train, y_train)
y_pred = kNN.predict(X_test)
# In[16]:
from sklearn.metrics import accuracy_score,confusion_matrix
# Hata Oranını Bulalım
# In[17]:
print("\nTest Değeri ve Tahmin Edilen Değerler")
error_matrix = confusion_matrix(y_test, y_pred)
print("\n",error_matrix)
print("\nHata Oranı =",accuracy_score(y_test, y_pred))
# ### Hata Matrisinin Yorumlanması
# 1. satırda 23 değer varmış ve hepsi doğru tahmin edilmiş.
# 2. satırda 12 değer varmış 11 tanesi doğru 1 tanesi yanlış tahmin edilmiş.
# 3. satırda 15 değer varmış 14 tanesi doğru 1 tanesi yanlış tahmin edilmiş.
#
# Not: 23 + 12 + 15 = 50. Bizim test için ayırdığımız sayıya eşit.
#
#
# K = 5 (Default Value) Değeri İçin Tahmin Yapalım
#
# In[18]:
kNN = KNeighborsClassifier(n_neighbors=5)
kNN.fit(X_train, y_train)
y_pred = kNN.predict(X_test)
# Hata Oranına tekrar bakalım
# In[19]:
print("\nTest Değeri ve Tahmin Edilen Değerler")
error_matrix = confusion_matrix(y_test, y_pred)
print("\n",error_matrix)
print("\nHata Oranı =",accuracy_score(y_test, y_pred))
# In[20]:
iris_classifier = DecisionTreeClassifier(max_leaf_nodes=10, random_state=0)
# In[21]:
iris_classifier.fit(X_train,y_train)
# In[22]:
y_pred = iris_classifier.predict(X_test)
# In[23]:
print("\nTest Değeri ve Tahmin Edilen Değerler")
error_matrix = confusion_matrix(y_test, y_pred)
print("\n",error_matrix)
print("\nHata Oranı =",accuracy_score(y_test, y_pred))
# kNN (K=5) ve DecisonTree aynı oranda başarı yakalarken, kNN k=1'de 0.02 oranında daha az bir başarı oranına sahip.