Análise discriminante quadrática em python (passo a passo)


A análise discriminante quadrática é um método que você pode usar quando possui um conjunto de variáveis preditoras e deseja classificar uma variável de resposta em duas ou mais classes.

É considerado o equivalente não linear da análise discriminante linear .

Este tutorial fornece um exemplo passo a passo de como realizar análise discriminante quadrática em Python.

Etapa 1: carregue as bibliotecas necessárias

Primeiro, carregaremos as funções e bibliotecas necessárias para este exemplo:

 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

Etapa 2: carregar dados

Para este exemplo, usaremos o conjunto de dados iris da biblioteca sklearn. O código a seguir mostra como carregar este conjunto de dados e convertê-lo em um DataFrame do pandas para facilitar o uso:

 #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

Podemos ver que o conjunto de dados contém 150 observações no total.

Para este exemplo, construiremos um modelo de análise discriminante quadrática para classificar as espécies às quais pertence uma determinada flor.

Usaremos as seguintes variáveis preditoras no modelo:

  • Comprimento da sépala
  • Largura da sépala
  • Comprimento da pétala
  • Largura da pétala

E vamos usá-los para prever a variável de resposta Species , que suporta as três classes potenciais a seguir:

  • setosa
  • versicolor
  • Virgínia

Etapa 3: ajuste o modelo QDA

A seguir, ajustaremos o modelo QDA aos nossos dados usando a função QuadraticDiscriminantAnalsys do 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)

Etapa 4: use o modelo para fazer previsões

Depois de ajustar o modelo usando nossos dados, podemos avaliar o desempenho do modelo usando validação cruzada estratificada repetida de k-folds.

Para este exemplo usaremos 10 dobras e 3 repetições:

 #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

Podemos observar que o modelo alcançou uma precisão média de 97,33% .

Também podemos usar o modelo para prever a qual classe pertence uma nova flor, com base nos valores de entrada:

 #define new observation
new = [5, 3, 1, .4]

#predict which class the new observation belongs to
model. predict ([new])

array(['setosa'], dtype='<U10')

Vemos que o modelo prevê que esta nova observação pertence à espécie chamada setosa .

Você pode encontrar o código Python completo usado neste tutorial aqui .

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *