<jupyter_start><jupyter_text>Modelos de Machine LearningApós a falha nos testes de modelos de ML com redução da dimensionalidade na etapa anterior, foi realizado o treinamento dos modelos de machine learning com o dataset completo. Para tanto, foi utilizado o Google Colab devido a limitações de hardware da máquina local.<jupyter_code>import numpy as np
import sklearn
from scipy import sparse
from google.colab import drive
from google.colab import drive

drive.mount('/content/drive')<jupyter_output>Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remount=True).<jupyter_text>Carregamento dos datasets de treino e teste<jupyter_code>X_train = sparse.load_npz('drive/MyDrive/''Colab Notebooks''/X_train_blc_sparse.npz')
y_train = np.loadtxt('drive/MyDrive/''Colab Notebooks''/y_train_balanced.csv', delimiter=',')
X_test = sparse.load_npz('drive/MyDrive/''Colab Notebooks''/X_test_sparse.npz')
y_test = np.loadtxt('drive/MyDrive/''Colab Notebooks''/y_test.csv', delimiter=',')<jupyter_output><empty_output><jupyter_text>Escolha do modelo de machine learningNa primeira etapa, de acordo com a recomendação do scikit-learn, foram testados os algoritmos Linear SVC e Naive Bayes, que apresentaram acurácia de 55% e 48%, respectivamente.Nesta etapa serão testados mais modelos de ML para comparação de desempenho.  Modelo KNN<jupyter_code>from sklearn.neighbors import KNeighborsClassifier
mod_knn = KNeighborsClassifier()
%%time
mod_knn.fit(X_train, y_train)<jupyter_output>CPU times: user 133 ms, sys: 11 ms, total: 144 ms
Wall time: 144 ms<jupyter_text>Teste do modelo KNN<jupyter_code>%%time
mod_knn.score(X_test, y_test)
from sklearn.metrics import plot_confusion_matrix
plot_confusion_matrix(mod_knn, X_test, y_test);<jupyter_output>/usr/local/lib/python3.7/dist-packages/sklearn/utils/deprecation.py:87: FutureWarning: Function plot_confusion_matrix is deprecated; Function `plot_confusion_matrix` is deprecated in 1.0 and will be removed in 1.2. Use one of the class methods: ConfusionMatrixDisplay.from_predictions or ConfusionMatrixDisplay.from_estimator.
  warnings.warn(msg, category=FutureWarning)<jupyter_text>Grid search para otimização do KNN.<jupyter_code>from sklearn.model_selection import GridSearchCV
knn = KNeighborsClassifier()
param = {'n_neighbors': [3, 5, 7, 10]}
param
clf = GridSearchCV(knn, param, scoring='accuracy')
clf.fit(X_train, y_train)
clf.cv_results_
clf.best_params_
clf.best_score_
knn_best = clf.best_estimator_
# Testando com o dataset de teste
knn_best.score(X_test, y_test)<jupyter_output><empty_output><jupyter_text>Nota-se que o algoritmo KNN não apresenta vantagens de acurácia em relação aos outros dois modelos testados anteriormente. **Interessante observar pela matriz de confusão que o erro está muito concentrado na categoria 2**.  Modelo RandomForest<jupyter_code>from sklearn.ensemble import RandomForestClassifier
mod_RF = RandomForestClassifier()
mod_RF.fit(X_train, y_train)
mod_RF.score(X_test, y_test)
plot_confusion_matrix(mod_RF, X_test, y_test)<jupyter_output>/usr/local/lib/python3.7/dist-packages/sklearn/utils/deprecation.py:87: FutureWarning: Function plot_confusion_matrix is deprecated; Function `plot_confusion_matrix` is deprecated in 1.0 and will be removed in 1.2. Use one of the class methods: ConfusionMatrixDisplay.from_predictions or ConfusionMatrixDisplay.from_estimator.
  warnings.warn(msg, category=FutureWarning)<jupyter_text>O modelo de RandomForest apresentou um aumento de acurácia em relação aos modelos anteriores testados. A próximo passo é verificar se este modelo pode ser otimizado através do GridSearch.  Otimização do RandomForest através do GridSearch<jupyter_code>RF = RandomForestClassifier()
param = {'n_estimators': [50, 100, 500]}
clf = GridSearchCV(RF, param, scoring='accuracy')
clf.fit(X_train, y_train)
clf.best_params_
clf.best_score_
RF_best = clf.best_estimator_
RF_best.score(X_test, y_test)
plot_confusion_matrix(RF_best, X_test, y_test);<jupyter_output>/usr/local/lib/python3.7/dist-packages/sklearn/utils/deprecation.py:87: FutureWarning: Function plot_confusion_matrix is deprecated; Function `plot_confusion_matrix` is deprecated in 1.0 and will be removed in 1.2. Use one of the class methods: ConfusionMatrixDisplay.from_predictions or ConfusionMatrixDisplay.from_estimator.
  warnings.warn(msg, category=FutureWarning)<jupyter_text>A otimização com o grid search conseguiu melhorar em 0,6% a acurácia do modelo random forest original, resultando no total de 65,7% de acurácia para o modelo de 500 árvores.<jupyter_code><jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.08210890233362143, 'fraction_numerical': 0.013180639585133967, 'mean_word_length': 7.192920353982301, 'pattern_counts': {'":': 0, '<': 28, '<?xml version=': 0, '>': 28, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '8', 'dir': 'jupyter-structured-clean-dedup', 'id': '575662', 'license': 'MIT', 'n_tokens_mistral': 1661, 'n_tokens_neox': 1579, 'n_words': 424, 'path': '08-Treinamento_modelos_ML-5.ipynb', 'repo_name': 'rafaelschena/redefining_cancer_treatment', 'size': '4628'}