input: Write a python function to classify data using K-Nearest Neighbors with distance weighting. 
  assert knn_classify(np.array([[1, 2], [2, 3], [3, 4]]), np.array([0, 1, 1]), 2).predict(np.array([[1.5, 2.5]])) == np.array([0])
  assert knn_classify(np.array([[1, 1], [2, 2], [3, 3]]), np.array([0, 1, 1]), 3).predict(np.array([[2, 2]])) == np.array([1])
  assert knn_classify(np.array([[0, 0], [1, 1], [0, 1]]), np.array([0, 1, 0]), 1).predict(np.array([[0.5, 0.5]])) == np.array([0])
output: def knn_classify(X, y, k):
      from sklearn.neighbors import KNeighborsClassifier
      import numpy as np
  
      class KNNWithDistanceWeighting:
          def __init__(self, X, y, k):
              self.X = X
              self.y = y
              self.k = k
              self.model = KNeighborsClassifier(n_neighbors=k, weights='distance')
              self.model.fit(X, y)
  
          def predict(self, X_new):
              return self.model.predict(X_new)
  
      return KNNWithDistanceWeighting(X, y, k)