3 underrated strategies to deal with Missing Values | by Vagif Aliyev | Oct, 2020


Photo By Wikipedia

This methodology basically used KNN, a machine learning algorithm, to impute the lacking values, with every worth being the imply of the n_neighbors samples present in proximity to a pattern.

If you don’t know the way KNN works, you may try my article on it, the place I break it down from first ideas. Bu basically, the KNNImputer will do the next:

  1. Measures the space between the brand new pattern and the N closest samples(as specified by the n_neighbours parameter)
  • Based on its closest neighbour(s), it should take the imply worth of the N closest non-null neighbors to the lacking worth.

KNNImputer in Action

Let’s see a easy instance of KNNImputer getting used:

import pandas as pd
import numpy as np
from sklearn.impute import KNNImputer
df = pd.read_csv('https://uncooked.githubusercontent.com/datasciencedojo/datasets/grasp/titanic.csv')

We will use the well-known Titanic Dataset as our instance dataset.

Next, we examine which options have lacking values:

passengerId 0
Survived 0
Pclass 0
Name 0
Sex 0
Age 177
SibSp 0
Parch 0
Ticket 0
Fare 0
Cabin 687
Embarked 2
dtype: int64

Using this methodology, we are able to see what values want to be imputed.

df = df.drop(['PassengerId','Name'],axis=1)
df = df[["Survived", "Pclass", "Sex", "SibSp", "Parch", "Fare", "Age"]]
df["Sex"] = [1 if x=="male" else 0 for x in df["Sex"]]

Here, we drop some unneeded options and rapidly One-hot-encode our Sex characteristic.

NOTE: normally one would do some characteristic engineering and transformation, however this isn’t the aim of the article, due to this fact I’m skipping this half. However, in a traditional mission, you need to all the time look at and clear your knowledge correctly.

Next, we instantiate our KNNImputer, and giving it a n_neighbours worth of 5.

imputer = KNNImputer(n_neighbors=5)

Now all that’s left to do is rework the info in order that the values are imputed:


And there you’ve it; KNNImputer. Once once more, scikit-learn makes this course of quite simple and intuitive, however I like to recommend trying on the code of this algorithm on Github to get a greater sense of what the KNNImputer actually does.

Advantages of the KNNImputer:

  • Can be far more correct than the imply, median or the mode(It depends upon the dataset).

Disadvantages of the KNNImputer:

  • Computationally costly, because it shops in the complete dataset in reminiscence.
  • Is fairly delicate to outliers, so imputed values could trigger the mannequin to not carry out in addition to attainable.
  • You have to specify the variety of neighbors
Photo may be discovered from StackOverflow

This is a really highly effective algorithm that mainly works by choosing one characteristic with lacking values because the goal variable and utilises a regression mannequin to impute the lacking values based mostly on all the opposite variables within the dataset.

It then repeats this course of in a round-robin trend, which means that every characteristic with lacking values might be regressed towards all the opposite options.

A bit complicated? Yep. That’s why its … Analogy time!

Photo by Bonnie Kittle on Unsplash

Let’s suppose that you’ve dataset with the next options:

And every characteristic, besides Gender, has lacking values. In this state of affairs, The MICE algorithm would do the next:

  1. For every characteristic with lacking values(Age,BMI,Income), you fill in these values with some short-term “place holder”. This is normally the imply of all of the values within the characteristic, so, on this case, we might fill within the lacking Age with imply Age of the info, the lacking BMI with the imply BMI, and many others.
  2. Set again to lacking one characteristic that you’ll like to impute. So, if we had been to select to impute Age, then age could be the one characteristic with lacking values, as we imputed the opposite options within the earlier step.
  3. Regress age on all(or some) of the options. To make this step work, drop all NaN values that age could include. Essentially, we’re becoming Linear Regression, with Age being the goal characteristic, and the opposite options being the impartial options.
  4. Use the beforehand fitted regression mannequin to predict the lacking values for Age.(Important Note: when age will in a while be used as an impartial variable to predict lacking values of different options, each the noticed and predicted values might be used). A random element can be added to this prediction.
  5. Repeat Steps 2–four for all options which have lacking knowledge(on this case, BMI & Income)


Source hyperlink

Write a comment