<jupyter_start><jupyter_text>Introdução Representação dos Dados ![image.png](attachment:image.png)<jupyter_code>import pandas as pd
import numpy as np
from sklearn import model_selection
from sklearn import neighbors<jupyter_output><empty_output><jupyter_text>Carregamento do dataset<jupyter_code>df = pd.read_csv('iris-dataset.csv', header=None)
df.columns = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'class']
df.head()<jupyter_output><empty_output><jupyter_text>Separação dos dados entre atributos (X) e rótulo (y)<jupyter_code>X = df.values[:, :-1]
y = df.values[:, -1]<jupyter_output><empty_output><jupyter_text>Treinamento do modelo<jupyter_code>model = neighbors.KNeighborsClassifier(n_neighbors=3)
model.fit(X, y)
model.score(X, y)<jupyter_output><empty_output><jupyter_text>- Que score é esse? O que é isso?- Esse modelo é burro ou o que?- Que coisa mais sem graça tentar predizer o que já é conhecido.Caminho possível: como não temos novos dados para avaliar se o modelo realmente é bom, podemos simular isso dividindo nosso conjunto de dados em 2 partes:- Parte para treino do modelo (conjunto de treino)- Parte para avaliação do modelo (conjunto de teste)  Ajuste do modelo e Predição ![image.png](attachment:image.png)  Validação cruzada holdoutConsiste em dividir o conjunto de dados inicial em um conjunto de dados de treinamento e outro de teste. O primeiro é usado para treinamento de modelo e o último é usado para estimar seu desempenho de generalização.  Passos: Fit e Predict  Passos ![image.png](attachment:image.png)  Passos detalhados: ![image.png](attachment:image.png) ![image.png](attachment:image.png)<jupyter_code>n = df.shape[0]
perc_train = 2/3
idx_train = np.arange(n * perc_train, dtype=int)
idx_test = np.arange(n * perc_train, n, dtype=int)
idx_train, idx_test
X_train = X[idx_train]
y_train = y[idx_train]
X_test = X[idx_test]
y_test = y[idx_test]
X_train.shape, X_test.shape, y_train.shape, y_test.shape
model = neighbors.KNeighborsClassifier(n_neighbors=3)
model.fit(X_train, y_train)
model.score(X_test, y_test)<jupyter_output><empty_output><jupyter_text>- Meu Deus!!! Por que o resultado foi tão trágico?- Parece que o modelo é burro mesmo, né? Especialmente para dados "novos".- O que fazer agora?  Embaralhando os dados - buscando ordem a partir do caos...<jupyter_code>rand = np.random.RandomState(42)
indices = np.arange(X.shape[0])
print(indices)
rand.shuffle(indices)
print(indices)
X_ = X[indices]
y_ = y[indices]
X_.shape, y_.shape
X_train = X_[idx_train]
y_train = y_[idx_train]
X_test = X_[idx_test]
y_test = y_[idx_test]
X_train.shape, X_test.shape, y_train.shape, y_test.shape
model = neighbors.KNeighborsClassifier(n_neighbors=3)
model.fit(X_train, y_train)
model.score(X_test, y_test)
model.score(X_train, y_train)<jupyter_output><empty_output><jupyter_text>Criação do modelo final<jupyter_code>model = neighbors.KNeighborsClassifier(n_neighbors=3)
model.fit(X, y)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.10950134770889487, 'fraction_numerical': 0.004380053908355795, 'mean_word_length': 6.854497354497354, 'pattern_counts': {'":': 0, '<': 29, '<?xml version=': 0, '>': 29, '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': '7', 'dir': 'jupyter-structured-clean-dedup', 'id': '177939', 'license': 'MIT', 'n_tokens_mistral': 1158, 'n_tokens_neox': 1122, 'n_words': 279, 'path': '2019/05-Metricas_de_Avaliacao/1-Introducao.ipynb', 'repo_name': 'Sandromesquita/imersao-ciencia-de-dados', 'size': '2968'}