UFPB - PPGMDS
Página do FuzzyClass no CRAN.R
Página do FuzzyClass no GitHub
Há três regras inter-relacionadas que tornam um conjunto de dados arrumados (tidy):
Cada variável deve ter sua própria coluna.
Cada observação deve ter sua própria linha.
Cada valor deve ter sua própria célula.
Exemplos no R?
DataSet utilizado: iris
link: https://www.kaggle.com/datasets/saurabh00007/iriscsv
Problemática: Através dos comprimentos das Sépalas e Pétalas, classificar corretamente as flores.
DataSet utilizado: iris
O Banco é composto por 6 variáveis que são detalhados a seguir.
Se o arquivo estiver em .csv, é possível ler a base de dados da seguinte forma
# Lendo Base de dados
dados <- read.csv("dataset/iris.csv",sep = ",")
# Visualizando um cabeçalho dos dados
dados |>
head(n = 10) Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species
1 1 5.1 3.5 1.4 0.2 Iris-setosa
2 2 4.9 3.0 1.4 0.2 Iris-setosa
3 3 4.7 3.2 1.3 0.2 Iris-setosa
4 4 4.6 3.1 1.5 0.2 Iris-setosa
5 5 5.0 3.6 1.4 0.2 Iris-setosa
6 6 5.4 3.9 1.7 0.4 Iris-setosa
7 7 4.6 3.4 1.4 0.3 Iris-setosa
8 8 5.0 3.4 1.5 0.2 Iris-setosa
9 9 4.4 2.9 1.4 0.2 Iris-setosa
10 10 4.9 3.1 1.5 0.1 Iris-setosa
Para facilitar, criar uma base em paralelo apenas com as variáveis que vai utilizar na aplicação do modelo.
Neste caso vamos retirar a primeira coluna de Id, ela não é necessária neste caso.
Abaixo são descritos os métodos de acordo com as abordagens de Zadeh e Buckley
| Fuzzy - Zadeh | Fuzzy Buckley |
|---|---|
| FuzzyBetaNaiveBayes | ExpNBFuzzyParam |
| FuzzyBinomialNaiveBayes | GauNBFuzzyParam |
| FuzzyExponentialNaiveBayes | PoiNBFuzzyParam |
| FuzzyGammaNaiveBayes | |
| FuzzyGaussianNaiveBayes | |
| FuzzyPoissonNaiveBayes | |
| FuzzyTrapezoidalNaiveBayes | |
| FuzzyTriangularNaiveBayes |
e o FuzzyNaiveBayes que trabalha com dados qualitativos de não assume dist. de probabilidade.
ou
Página do FuzzyClass no CRAN.R
Vamos selecionar um método de Zadeh e um de Buckley para execução, pois o procedimento com os outros são iguais.
Vamos utilizar:
FuzzyTrapezoidalNaiveBayes;e
FuzzyBetaNaiveBayes;Fazendo transformação de dados para utilização da Beta
set.seed(2)
dados_editado_beta <- dados_editado
for(i in 1:(ncol(dados_editado)-1)) dados_editado_beta[,i] <- dados_editado_beta[,i]/ max(dados_editado_beta[,i])
# Separando entre treinamento e teste
split <- caTools::sample.split(t(dados_editado_beta[,1]), SplitRatio = 0.7) # 70% para o Treinamento
# -----
TrainB <- subset(dados_editado_beta, split == "TRUE")
TestB <- subset(dados_editado_beta, split == "FALSE")
# ---------------- SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species
1 0.6455696 0.7954545 0.2028986 0.08 Iris-setosa
2 0.6202532 0.6818182 0.2028986 0.08 Iris-setosa
3 0.5949367 0.7272727 0.1884058 0.08 Iris-setosa
[1] 150
[1] 105
[1] 45
Criando uma nova variável sem a coluna verdadeira da classificação com a parte de Test
Verificando a eficácia dos algoritmos utilizados nesse estudo
# --------------------------------------------------
# Fuzzy Trapezoidal Naive Bayes
caret::confusionMatrix(classificacao, factor(Test[,5]))Confusion Matrix and Statistics
Reference
Prediction Iris-setosa Iris-versicolor Iris-virginica
Iris-setosa 16 2 0
Iris-versicolor 0 11 1
Iris-virginica 0 1 14
Overall Statistics
Accuracy : 0.9111
95% CI : (0.7878, 0.9752)
No Information Rate : 0.3556
P-Value [Acc > NIR] : 1.048e-14
Kappa : 0.8661
Mcnemar's Test P-Value : NA
Statistics by Class:
Class: Iris-setosa Class: Iris-versicolor
Sensitivity 1.0000 0.7857
Specificity 0.9310 0.9677
Pos Pred Value 0.8889 0.9167
Neg Pred Value 1.0000 0.9091
Prevalence 0.3556 0.3111
Detection Rate 0.3556 0.2444
Detection Prevalence 0.4000 0.2667
Balanced Accuracy 0.9655 0.8767
Class: Iris-virginica
Sensitivity 0.9333
Specificity 0.9667
Pos Pred Value 0.9333
Neg Pred Value 0.9667
Prevalence 0.3333
Detection Rate 0.3111
Detection Prevalence 0.3333
Balanced Accuracy 0.9500
# --------------------------------------------------
# Fuzzy Beta Naive Bayes
caret::confusionMatrix(classificacao_Beta, factor(TestB[,5]))Confusion Matrix and Statistics
Reference
Prediction Iris-setosa Iris-versicolor Iris-virginica
Iris-setosa 16 0 0
Iris-versicolor 0 11 2
Iris-virginica 0 3 13
Overall Statistics
Accuracy : 0.8889
95% CI : (0.7595, 0.9629)
No Information Rate : 0.3556
P-Value [Acc > NIR] : 1.581e-13
Kappa : 0.833
Mcnemar's Test P-Value : NA
Statistics by Class:
Class: Iris-setosa Class: Iris-versicolor
Sensitivity 1.0000 0.7857
Specificity 1.0000 0.9355
Pos Pred Value 1.0000 0.8462
Neg Pred Value 1.0000 0.9062
Prevalence 0.3556 0.3111
Detection Rate 0.3556 0.2444
Detection Prevalence 0.3556 0.2889
Balanced Accuracy 1.0000 0.8606
Class: Iris-virginica
Sensitivity 0.8667
Specificity 0.9000
Pos Pred Value 0.8125
Neg Pred Value 0.9310
Prevalence 0.3333
Detection Rate 0.2889
Detection Prevalence 0.3556
Balanced Accuracy 0.8833
O que podemos concluir de forma breve até esse momento com o estudo:
OBRIGADO!
Slide produzido com quarto

Utilização do Pacote FuzzyClass - FuzzyClass