<jupyter_start><jupyter_text>Tarefa 08 - Cancer de Mama * **Autor:** *<NAME>** **Data:** *11/01/2021** **Disciplina:** *TT007** **Dataset:** *[Breast Cancer - ScikitLearn](https://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+(Diagnostic))* Classificação binária com o conjunto de dados do câncer de mama - Verifique o conjunto  de dados de diagnóstico de câncer de mama de Wisconsin que acompanha o scikit-learn. O conjunto de dados contém 569 amostras, cada uma com 30 recursos e um rótulo indicando se um o tumor era **`maligno (0)`** ou **`benigno (1)`**. Existem apenas dois rótulos, então este conjunto de dados é comumente usado para realizar classificação binária. Usando este conjunto de dados, reimplemente as  etapas do estudo de caso de classificação, usando o estimador Gaussian Naive Bayes (GaussianNB).  Importações & Dataset<jupyter_code>import matplotlib.pyplot as plt  

from sklearn.datasets import load_breast_cancer

from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import confusion_matrix, plot_confusion_matrix<jupyter_output><empty_output><jupyter_text>Exploração Dataset<jupyter_code>breast_cancer = load_breast_cancer()
print(breast_cancer.DESCR)
lin = breast_cancer.data.shape[0]
col = breast_cancer.data.shape[1]

print(f'Linhas: {lin}\nColunas: {col}')
breast_cancer.target.shape<jupyter_output><empty_output><jupyter_text>Divisão treino e teste<jupyter_code>X_train, X_test, y_train, y_test = train_test_split(breast_cancer.data, breast_cancer.target, random_state=11)
X_train.shape
X_test.shape<jupyter_output><empty_output><jupyter_text>Criando modelo<jupyter_code>clf = GaussianNB()
clf.fit(X=X_train, y=y_train)
predicted = clf.predict(X=X_test)
expected = y_test
wrong = [(p, e) for (p, e) in zip(predicted, expected) if p != e]
print(f'Previsões erradas: {len(wrong)}\n\n{wrong}')<jupyter_output>Previsões erradas: 7

[(1, 0), (1, 0), (0, 1), (1, 0), (1, 0), (1, 0), (1, 0)]<jupyter_text>Métricas para avaliação do modelo  score<jupyter_code>print(f'Acurácia: {clf.score(X_test, y_test):.2%}')<jupyter_output>Acurácia: 95.10%<jupyter_text>O método _score_ nos proporciona a acurácia do nosso modelo, ou seja, o quanto (em %) o modelo foi capaz de prever corretamente. Em outras palavras, o score ou acurária nos informa o percentual de acerto do modelo, portanto, neste caso, o modelo acertou em 95.10% das previsões.   Confusion matrix<jupyter_code>confusion = confusion_matrix(y_true=expected, y_pred=predicted)<jupyter_output><empty_output><jupyter_text>Abaixo está a matriz de confusão produzida pela chamada anterior.* As previsões corretas são mostrados na diagonal principal.* Os outros valores indicam previsões incorretas.* Cada linha representa uma classe distinta, ou seja, maligno ou benigno.* As colunas especificam quantas das amostras de teste foram classificadas em cada classe distinta.<jupyter_code>breast_cancer.target_names
plot_confusion_matrix(clf, X_test, y_test)  
plt.show()<jupyter_output><empty_output><jupyter_text>A matriz de confusão acima nos indica que ao total 7 itens foram classificados incorretamente, veja:Considerando a primeira linha:* O 6 no índice da **coluna 2** indica que seis vezes um  **`maligno` foi classificado incorretamente como `benigno`**.Considerando a segunda linha:* O 1 no índice da **coluna 1** indica que uma vez um **`benigno` foi classificado incorretamente como `maligno`**.  Validação cruzada<jupyter_code>from sklearn.model_selection import KFold, cross_val_predict
kfold = KFold(n_splits=10, random_state=11, shuffle=True)
scores = cross_val_score(estimator=clf, X=breast_cancer.data, y=breast_cancer.target, cv=kfold)<jupyter_output><empty_output><jupyter_text>A função cross_val_score retorna uma matriz de pontuações de acurácia - uma para cada subconjunto classificado.<jupyter_code>scores<jupyter_output><empty_output><jupyter_text>Depois de ter as pontuações de acurácia, você pode ter uma noção geral da precisão do modelo calculando a pontuação média de precisão e o desvio padrão entre as 10 previsões.<jupyter_code>print(f'max accuracy = {scores.max():.2%}\n')
print(f'mean accuracy = {scores.mean():.2%}')
print(f'standard deviation = {scores.std():.2%}')<jupyter_output>max accuracy = 96.49%

mean accuracy = 93.85%
standard deviation = 2.75%
{'fraction_non_alphanumeric': 0.102238633741057, 'fraction_numerical': 0.016847449803831065, 'mean_word_length': 6.98158379373849, 'pattern_counts': {'":': 0, '<': 39, '<?xml version=': 0, '>': 39, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 3, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '10', 'dir': 'jupyter-structured-clean-dedup', 'id': '442259', 'license': 'MIT', 'n_tokens_mistral': 1667, 'n_tokens_neox': 1577, 'n_words': 431, 'path': 'Aula11-machine_learn/breast-cancer.ipynb', 'repo_name': 'matheuspercario/TT007-IntroducaoDatascience', 'size': '4350'}