human
Solve the following python programming problem given the following code:
# Here's the definition of a new class for our classifier.
# Notice the constructor is called __init__
# All methods take in an explicit parameter "self". 
# It's like C++'s 'this', except in C++ it's not an explicit parameter.
class kNNClassifier:
    # We only need to remember the number of neighbors.
no other initialization
    def __init__(self, k):
        # Setting a member variable is as simple as assigning one. You don't even need to declare it anywhere.
        self.n_neighbors = k
    
    # Remember we don't need to do much here except save the data.
    # We'll assume our data is in the form of a numpy multidimensional array.
    def fit(self, data, target):
        self.data = data
        self.labels = target
    
    # Take in some data points X and return a numpy array of predictions.
    def predict(self, X):
        k = self.n_neighbors
        predictions = []
        # CODE HERE
        return np.array(predictions)
Given the above code, generate some markdown instructions for it.
assistant
#Here is the Python code you requested.

Bonus: Implementing kNN
In class we implemented $k$-nearest neighbors with $k=1$. Let's now implement a $k$NN classifier that can use other $k$ values. In the process you'll also learn about Python's object-oriented features. The only method you'll need to finish is predict.
Functions you may find useful:
- sklearn.metrics.pairwise.euclidean_distances or scipy.spatial.distance.euclidean
- numpy.argpartition to find the $k$ shortest distances. Alternatively, you could use Python bisect module.
- numpy.bincount and numpy.argmax