<jupyter_start><jupyter_text>KNN 59======<NAME> - TAA Marzo 2019En esta entrega tenemos un conjunto de datos formado por imágenes en escala de grises que representan cincos y nueves de forma manuscrita. Usando estos datos analizaremos el comportamiento del clasificador perezoso K-NN, tratando de encontrar el K óptimo. Para ello se usa Python con el módulo sklearn.neighbors.<jupyter_code>import pandas as pd
import numpy as np
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import KFold
entrenae = pd.read_csv("entrenae59.csv")
entrenae_x = entrenae.drop("digito",axis=1)
entrenae_y = entrenae["digito"]
pruebae = pd.read_csv("pruebae59.csv")
pruebae_x = pruebae.drop("digito",axis=1)
pruebae_y = pruebae["digito"]
res = dict()
cv = KFold(10)
for k in range(1,11,2):
    c = KNeighborsClassifier(n_neighbors=k)
    i = 0
    acumula = 0
    cv_iter = cv.split(entrenae_x,entrenae_y)
    for train, test in cv_iter:
        c.fit(entrenae_x.iloc[train],entrenae_y.iloc[train])
        aciertos = c.score(entrenae_x.iloc[test],entrenae_y.iloc[test])
        i += 1
        acumula += aciertos
    print("K=%d Tasa acierto: %f" % (k,acumula/i))
res = dict()
for k in range(1,11,2):
    c = KNeighborsClassifier(n_neighbors=k)
    c.fit(entrenae_x,entrenae_y)
    res[k] = c.score(pruebae_x,pruebae_y)
res
import math
math.sqrt((res[5]*(1-res[5]))/pruebae_y.shape[0])<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.11834733893557423, 'fraction_numerical': 0.02030812324929972, 'mean_word_length': 4.8806584362139915, 'pattern_counts': {'":': 0, '<': 6, '<?xml version=': 0, '>': 6, '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': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '546426', 'license': 'Unlicense', 'n_tokens_mistral': 614, 'n_tokens_neox': 591, 'n_words': 127, 'path': 'KNN-59.ipynb', 'repo_name': 'aarroyoc/AprendizajeAutomatico', 'size': '1441'}