quarta-feira, 4 de janeiro de 2023

Reconhecimento de padrões e classificação com o uso do dataset BreastCancer do pacote mlbench (da linguagem R)

Introdução

O dataset BreastCancer, disponível no pacote "mlbench", contém 699 observações de 11 variáveis, sendo uma delas ("Class") a variável dependente (ou alvo), que rotula a lesão como sendo um câncer ou não ("benign" ou "malignant").

As características do dataframe puderam ser conferidas com os comandos str(BreastCancer), summary(BreastCancer) e ?BreastCancer.


As variáveis independentes foram convertidas em numéricas gravando-se o dataset em arquivo "csv" e realizando-se sua leitura com o comando read.table("bc.csv", header=TRUE, sep=",", stringsAsFactors=FALSE).

As bibliotecas utilizadas na análise foram sendo instaladas e chamadas conforme a necessidade e estão indicadas no código, que pode ser conferido no meu GitHub.


Objetivo: reconhecimento de padrões

Realizar análises de reconhecimento de padrões no conjunto BreastCancer.


Desenvolvimento

Para o reconhecimento de padrões no conjunto de dados foi preciso supor que a variável “Class” não era conhecida. Um novo dataframe foi criado após a exclusão da coluna-alvo.

Usamos a técnica do PCA (Principal Component Analysis) para a redução do número de variáveis do conjunto de dados, de forma a poder plotar as observações, na tentativa de constatar visualmente os padrões.

Foi visto que os dois componentes principais explicavam 74,17% das variâncias, sendo suficientes para a análise que se pretendia fazer.

Aplicada a técnica, foram plotados os “scores” e gerado o “biplot”, sendo possível delinear os agrupamentos.

Na sequência, usando o “autoplot” da biblioteca “ggfortify”, agora com a variável “Class” para a coloração das observações, foi possível relacionar os grupos delineados às lesões benignas (em vermelho) e malignas (em azul).

Por fim, o gráfico gerado permitiu conhecer a contribuição de cada variável para a geração dos componentes principais, havendo um destaque visual para as mitoses, com menor correlação com as demais variáveis.



Objetivo: classificação

Realizar análises de classificação com o mesmo conjunto de dados.


Desenvolvimento

Para a tarefa de classificação, a variável dependente “Class” foi modificada para o tipo “factor”, que informa ao “R” tratar-se de uma variável categórica.

O dataset foi dividido entre treino e teste, na proporção de 80 e 20%, respectivamente. Essa providência é necessária no campo da aprendizagem de máquina supervisionada para a medição da performance do modelo.

Foram usados os algoritmos de árvore de classificação, floresta aleatória com o “mtry” (quantidade de variáveis sorteadas por árvore) de valor 4 e Naive Bayes, com acurácias medidas de, respectivamente, 0,9489, 0,9635 e 0,9562, constatadas a partir da matriz de confusão.



Conclusão

Os algoritmos disponíveis no pacote “R” permitiram o emprego da técnica do PCA para redução da dimensionalidade do dataset analisado e a plotagem bidimensional das observações favoreceu a identificação visual de padrões no conjunto de dados.

Além disso, o algoritmo de floresta aleatória mostrou ser o mais performático para a tarefa de classificação do conjunto de dados analisado.


Referências:

CRAN.R.PROJECT.ORG. Plotting PCA (Principal Component Analysis). Disponível em: https://cran.r-project.org/web/packages/ggfortify/vignettes/plot_pca.html. Acesso em: 3 Jan. 2023.

MONIZ, Paulo. Uma abordagem prática para avaliar o desempenho de algoritmos para um problema de classificação binária em um projeto de machine learning. Disponível em: https://rpubs.com/PMONIZ80/506010. Acesso em: 3 Jan. 2023.

MORETTIN, Pedro Alberto; SINGER, Júlio da Morra. Estatística e ciência de dados, 1ª. ed., Rio de Janeiro: LTC, 2022. 

PÉREZ, Fernando L. MLExemplo09: regressão logística. Disponível em: http://leg.ufpr.br/~lucambio/CE225/20211S/MLGExemplo09.html. Acesso em: 3 Jan. 2023.

SAMINATHAN. Breast Cancer Classification Problem Analysis. 29 mar. 2018. Disponível em: https://rstudio-pubs-static.s3.amazonaws.com/374852_57bcde1cc74f4950ab66a6a6d58781a5.html. Acesso em: 3 Jan. 2023.


Erro de SSL na instalação de pacotes do Anaconda

O OpenSSL é uma biblioteca escrita em C, de código aberto, dos protocolos SSL e TSL, que implementam criptografia. Inclui os módulos libssl (que implementa o protocolo TLS), libcrypto (biblioteca criptográfica de propósito geral) e openlss (ferramenta de linha de comando considerada o “canivete suíço” para tarefas bibliográficas).

É comum aos usuários do Anaconda enfrentarem problemas de SSL na instalação de alguns pacotes, observando-se a seguinte mensagem de erro:

 


A solução para o problema consiste em copiar os arquivos libcrypto-1_1-x64.* e libssl-1_1-x64.*, já presentes no S.O. ou no diretório Library\bin do Anaconda, para a pasta DLL do Anaconda, conforme a figura abaixo.



quarta-feira, 21 de dezembro de 2022

Python, R e Octave no Jupyter Notebook (rodando no Mac com chip M1)

 1) Crie um ambiente virtual com o gerenciador conda (no caso, optei por especificar a versão do Python que pretendo usar no ambiente):

conda create --name py39 python=3.9


2) Em seguida, ative o ambiente criado:

conda activate py39


3) Instale o Jupyter no ambiente criado:

conda install jupyter


4) Instale o kernel do R

conda install -c conda-forge r-base

Obs.:Após a instalação, você já poderá rodar o R a partir do terminal. Basta digitar “R”. 



5) No terminal, rodando R, instale o IRkernel

install.packages('IRkernel')

IRkernel::installspec()


6) Saia do R, com q() e enter.


7) Instale o kernel do Octave

brew install octave



8) Abra o Jupyter Notebook. Os kernels do Python, R e do Octave estarão disponíveis.




sexta-feira, 18 de novembro de 2022

Boxplot (diagrama de caixa)

O boxplot – ou diagrama de caixa – é uma ferramenta gráfica da estatística descritiva que facilita a análise de variáveis quantitativas. Por ele se obtém informações sobre posição, dispersão, assimetria e valores extremos ou atípicos (outliers).

A construção do boxplot utiliza cinco medidas estatísticas: mínimo, máximo, mediana, primeiro quartil e terceiro quartil.

A caixa é delimitada pelos primeiro e terceiro quartis e é cortada pela mediana. As linhas são conhecidas como caudas da distribuição e indicam os limites superior e inferior da variável, isto é,  maior e menor valores desconsiderados os outliers.

Dado um conjunto ordenado de dados, o 1º quartil (ou quartil inferior) representa o valor observado aos 25% dos valores; o 2º quartil é a mediana (50% das observações são menores e 50% são maiores do que a mediana); e o 3º quartil (ou quartil superior) é o valor que aparece aos 75% da amostra.  

R facilita a criação do boxplot a partir de um vetor, conforme a figura abaixo.



Algoritmo Bubble Sort: implementação em R

O bubble sort é um algoritmo de ordenação simples e pouco eficiente.

Dado um vetor de tamanho n, percorrem-se seus elementos n-1 vezes, comparando-se os elementos adjacentes de 2 a 2. 

Se o segundo elemento desta comparação for menor do que o primeiro, o algoritmo troca a posição de ambos. 

A operação se repete até que todos os elementos estejam ordenados.

Abaixo, a implementação em R, em duas versões.

Observe que, na segunda, o programa testa condição para verificar se foi feita alguma troca na passagem e se encerra antecipadamente no caso de o vetor já estar completamente ordenado.




domingo, 6 de novembro de 2022

Rodando o RStudio no Docker

1. Tendo o Docker Desktop instalado no seu computador(1), baixe a imagem escolhida. No caso, vamos usar a rocker/rstudio. Então, no terminal (prompt de comando), digite:

docker pull rocker/rstudio


2. Instale e rode o contêiner digitando o seguinte comando no prompt de comando:


docker run --name rstudio01 -d -p 8787:8787 -v C:\Users\jepim\Desktop\ufv:/home/rstudio -e PASSWORD=rstudio rocker/rstudio


Obs.:

Nomeie o contêiner como preferir. No caso, usamos rstudio01

Substitua C:\Users\jepim\Desktop\ufv pelo caminho da pasta local que será acessada pelo contêiner


- -name: dá um nome para o contêiner

-d: “detached” (execução em segundo plano, sem os logs)

-p: seleção das portas (local e do contêiner)

-v: volumes (relaciona uma pasta local à uma pasta do contêiner)

-e: define variáveis de ambiente




3. Abra o navegador e acesse o RStudio em http://localhost:8787/


Username > rstudio


Password > rstudio






sexta-feira, 4 de novembro de 2022

Como usar o 'R' no Google Colab

Por padrão, o Google Colab roda o Python nas linhas de código.

Para criar um notebook com o interpretador R, basta usar o seguinte link e editar normalmente o seu código:

https://colab.research.google.com/notebook#create=true&language=r