التحليل التمييزي التربيعي في بايثون (خطوة بخطوة)
التحليل التمييزي التربيعي هو طريقة يمكنك استخدامها عندما يكون لديك مجموعة من المتغيرات المتوقعة وتريد تصنيف متغير الاستجابة إلى فئتين أو أكثر.
ويعتبر المعادل غير الخطي للتحليل التمييزي الخطي .
يقدم هذا البرنامج التعليمي مثالاً خطوة بخطوة لكيفية إجراء التحليل التمييزي التربيعي في بايثون.
الخطوة 1: تحميل المكتبات الضرورية
أولاً، سنقوم بتحميل الوظائف والمكتبات اللازمة لهذا المثال:
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: تحميل البيانات
في هذا المثال، سوف نستخدم مجموعة بيانات iris من مكتبة sklearn. يوضح التعليمة البرمجية التالية كيفية تحميل مجموعة البيانات هذه وتحويلها إلى Pandas DataFrame لسهولة الاستخدام:
#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
يمكننا أن نرى أن مجموعة البيانات تحتوي على 150 ملاحظة في المجموع.
في هذا المثال، سنقوم ببناء نموذج تحليل تمييزي تربيعي لتصنيف الأنواع التي تنتمي إليها زهرة معينة.
سوف نستخدم المتغيرات المتوقعة التالية في النموذج:
- طول سيبال
- عرض سيبال
- طول البتلة
- عرض البتلة
وسنستخدمها للتنبؤ بمتغير استجابة الأنواع ، الذي يدعم الفئات الثلاثة المحتملة التالية:
- سيتوسا
- المبرقشة
- فرجينيا
الخطوة 3: ضبط نموذج QDA
بعد ذلك، سوف نلائم نموذج QDA مع بياناتنا باستخدام وظيفة QuadraticDiscriminantAnalsys الخاصة بـ sklearn:
#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)
الخطوة 4: استخدم النموذج لعمل تنبؤات
بمجرد تركيب النموذج باستخدام بياناتنا، يمكننا تقييم أداء النموذج باستخدام التحقق المتبادل الطبقي المتكرر.
في هذا المثال، سوف نستخدم 10 طيات و3 تكرارات:
#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
يمكننا أن نرى أن النموذج حقق متوسط دقة 97.33% .
يمكننا أيضًا استخدام النموذج للتنبؤ بالفئة التي تنتمي إليها الزهرة الجديدة، بناءً على القيم المدخلة:
#define new observation new = [5, 3, 1, .4] #predict which class the new observation belongs to model. predict ([new]) array(['setosa'], dtype='<U10')
نرى أن النموذج يتنبأ بأن هذه الملاحظة الجديدة تنتمي إلى نوع يسمى سيتوسا .
يمكنك العثور على كود Python الكامل المستخدم في هذا البرنامج التعليمي هنا .