es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo hacer que KNN sea más rápido?

Tengo un conjunto de datos de forma (700000, 20) y quiero aplicar KNN a él.

Sin embargo, al probarlo, lleva mucho tiempo, ¿puede alguien experto por favor ayudarme a saber cómo puedo reducir el tiempo de predicción de KNN?

¿Hay algo como GPU-KNN o algo así? Por favor, ayúdame a saber.

A continuación se muestra el código que estoy usando.

”’python
import os
os.chdir(os.path.dirname(os.path.realpath(file)))

import tensorflow as tf
import pandas as pd
import numpy as np
from joblib import load, dump
import numpy as np
from scipy.spatial import distance
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import classification_report
from dtaidistance import dtw

window_length = 20
n = 5

X_train = load(‘X_train.pth’).reshape(-1,20)
y_train = load(‘y_train.pth’).reshape(-1)
X_test = load(‘X_test.pth’).reshape(-1,20)
y_test = load(‘y_test.pth’).reshape(-1)

#custom metric
def DTW(a, b):
return dtw.distance(a, b)

clf = KNeighborsClassifier(metric=DTW)
clf.fit(X_train, y_train)

#evaluate
y_pred = clf.predict(X_test)
print(classification_report(y_test, y_pred))
”’

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una forma de potencialmente reducir el tiempo de predicción de KNN es utilizar técnicas de reducción de dimensionalidad. Es decir, reducir el número de características en el conjunto de datos para incluir solo las más importantes. Esto se puede hacer utilizando PCA u otras técnicas de selección de características.

    Además, si tienes acceso a una GPU, puedes utilizar bibliotecas como cuBLAS o cuSOLVER para acelerar los cálculos de KNN. Scikit-learn también tiene una versión acelerada por GPU de KNN llamada “cuML”.

    Finalmente, también puedes ajustar los parámetros de KNN, como el número de vecinos a considerar o la métrica de distancia utilizada para encontrar vecinos, para mejorar la velocidad del algoritmo. GridSearchCV se puede utilizar para encontrar los mejores hiperparámetros para KNN.

Comments are closed.