Python'da i̇kinci dereceden diskriminant analizi (adım adım)
İkinci dereceden diskriminant analizi, bir dizi öngörücü değişkeniniz olduğunda ve bir yanıt değişkenini iki veya daha fazla sınıfa sınıflandırmak istediğinizde kullanabileceğiniz bir yöntemdir.
Doğrusal diskriminant analizinin doğrusal olmayan eşdeğeri olarak kabul edilir.
Bu eğitimde Python’da ikinci dereceden diskriminant analizinin nasıl gerçekleştirileceğine ilişkin adım adım bir örnek sunulmaktadır.
Adım 1: Gerekli Kitaplıkları Yükleyin
Öncelikle bu örnek için gereken fonksiyonları ve kütüphaneleri yükleyeceğiz:
from sklearn. model_selection import train_test_split
from sklearn. model_selection import RepeatedStratifiedKFold
from sklearn. model_selection import cross_val_score
from sklearn. discriminant_analysis import QuadraticDiscriminantAnalysis
from sklearn import datasets
import matplotlib. pyplot as plt
import pandas as pd
import numpy as np
2. Adım: Verileri yükleyin
Bu örnek için sklearn kütüphanesindeki iris veri setini kullanacağız. Aşağıdaki kod, bu veri kümesinin nasıl yükleneceğini ve kullanım kolaylığı için onu bir pandas DataFrame’e nasıl dönüştüreceğinizi gösterir:
#load iris dataset iris = datasets. load_iris () #convert dataset to pandas DataFrame df = pd.DataFrame(data = np.c_[iris[' data '], iris[' target ']], columns = iris[' feature_names '] + [' target ']) df[' species '] = pd. Categorical . from_codes (iris.target, iris.target_names) df.columns = [' s_length ', ' s_width ', ' p_length ', ' p_width ', ' target ', ' species '] #view first six rows of DataFrame df. head () s_length s_width p_length p_width target species 0 5.1 3.5 1.4 0.2 0.0 setosa 1 4.9 3.0 1.4 0.2 0.0 setosa 2 4.7 3.2 1.3 0.2 0.0 setosa 3 4.6 3.1 1.5 0.2 0.0 setosa 4 5.0 3.6 1.4 0.2 0.0 setosa #find how many total observations are in dataset len(df.index) 150
Veri setinin toplamda 150 gözlem içerdiğini görebiliriz.
Bu örnekte, belirli bir çiçeğin ait olduğu türleri sınıflandırmak için ikinci dereceden bir diskriminant analiz modeli oluşturacağız.
Modelde aşağıdaki tahmin değişkenlerini kullanacağız:
- Sepal uzunluğu
- Sepal genişliği
- Petal uzunluğu
- Yaprak genişliği
Bunları, aşağıdaki üç potansiyel sınıfı destekleyen Tür yanıt değişkenini tahmin etmek için kullanacağız:
- setosa
- çok renkli
- Virjinya
3. Adım: QDA modelini ayarlayın
Daha sonra, sklearn’in QuadraticDiscriminantAnalsys fonksiyonunu kullanarak QDA modelini verilerimize uyarlayacağız:
#define predictor and response variables X = df[[' s_length ',' s_width ',' p_length ',' p_width ']] y = df[' species '] #Fit the QDA model model = QuadraticDiscriminantAnalysis() model. fit (x,y)
Adım 4: Tahminlerde bulunmak için modeli kullanın
Verilerimizi kullanarak modeli yerleştirdikten sonra, tekrarlanan katmanlı k-katlı çapraz doğrulamayı kullanarak modelin performansını değerlendirebiliriz.
Bu örnek için 10 katlama ve 3 tekrar kullanacağız:
#Define method to evaluate model
cv = RepeatedStratifiedKFold(n_splits= 10 , n_repeats= 3 , random_state= 1 )
#evaluate model
scores = cross_val_score(model, X, y, scoring=' accuracy ', cv=cv, n_jobs=-1)
print( np.mean (scores))
0.97333333333334
Modelin ortalama %97,33 doğruluk oranına ulaştığını görebiliyoruz.
Modeli, giriş değerlerine dayanarak yeni bir çiçeğin hangi sınıfa ait olduğunu tahmin etmek için de kullanabiliriz:
#define new observation new = [5, 3, 1, .4] #predict which class the new observation belongs to model. predict ([new]) array(['setosa'], dtype='<U10')
Modelin bu yeni gözlemin setosa adı verilen türe ait olduğunu öngördüğünü görüyoruz.
Bu eğitimde kullanılan Python kodunun tamamını burada bulabilirsiniz.