# How to impute missing class labels using nearest neighbours in Python?

This recipe helps you impute missing class labels using nearest neighbours in Python
In [1]:
```## How to impute missing class labels using nearest neighbours in Python
def Kickstarter_Example_28():
print()
print(format('How to impute missing class labels using nearest neighbours in Python', '*^82'))

import warnings
warnings.filterwarnings("ignore")

import numpy as np
from sklearn.neighbors import KNeighborsClassifier

# Create Feature Matrix
# Create feature matrix with categorical feature
X = np.array([[0, 2.10, 1.45],
[2, 1.18, 1.33],
[0, 1.22, 1.27],
[1, 1.32, 1.97],
[1, -0.21, -1.19]])

# Create Feature Matrix With Missing Values
# Create feature matrix with missing values in the categorical feature
X_with_nan = np.array([[np.nan, 0.87, 1.31],
[np.nan, 0.37, 1.91],
[np.nan, 0.54, 1.27],
[np.nan, -0.67, -0.22]])

# Train k-Nearest Neighbor Classifier
clf = KNeighborsClassifier(3, weights='distance')
trained_model = clf.fit(X[:,1:], X[:,0])

# Predict missing values' class
imputed_values = trained_model.predict(X_with_nan[:,1:])
print(); print(imputed_values)

# Join column of predicted class with their other features
X_with_imputed = np.hstack((imputed_values.reshape(-1,1), X_with_nan[:,1:]))
print(); print(X_with_imputed)

# Join two feature matrices
print(); print(np.vstack((X_with_imputed, X)))

Kickstarter_Example_28()
```
```******How to impute missing class labels using nearest neighbours in Python*******

[2. 1. 2. 1.]

[[ 2.    0.87  1.31]
[ 1.    0.37  1.91]
[ 2.    0.54  1.27]
[ 1.   -0.67 -0.22]]

[[ 2.    0.87  1.31]
[ 1.    0.37  1.91]
[ 2.    0.54  1.27]
[ 1.   -0.67 -0.22]
[ 0.    2.1   1.45]
[ 2.    1.18  1.33]
[ 0.    1.22  1.27]
[ 1.    1.32  1.97]
[ 1.   -0.21 -1.19]]
```