 # KNN Algortihm In Python

In this model we will use the Social_Networks_Ads.csv record which contains data about the customers like Gender, Age, Salary. The Purchased portion contains the imprints for the customers. This is a twofold course of action (we have two classes). If the imprint is 1 it suggests that the customer has bought thing X and 0 techniques the customers hasn’t bought that specific thing.

In this model we will use the going with libraries: numpy, pandas, sklearn and motplotlib.

The underlying advance is to import out dataset.

# Importing the libraries

import numpy as np

import matplotlib.pyplot as plt

import pandas as pd# Importing the dataset

dataset = pd.read_csv(‘Social_Network_Ads.csv’)

X = dataset.iloc[:, [2, 3]].values

y = dataset.iloc[:, 4].values

This is a basic task, considering the way that the pandas library contains the read_csv system which examines our information and extras it in an information structure called DataFrame.

By far most of the calculations from the sklearn library requires that the characteristics and the imprints are in disconnected elements, so we have to parse our information.

In this model (since we have to address the information in 2-D graph) we will use simply the Age and the Salary to set up our model. If you open the archive, you can see that the underlying two portions are the ID and the Gender of the customer. We would favor not to take these properties in thought.

X contains the properties. Since we would favor not to take in thought the underlying two sections, we will copy simply portion 2 and 3 (see line 8).

The imprints are in the fourth portion, so we will copy this segment in factor y (see line 9).

The ensuing stage is to part our information in two interesting pieces, one will be used to set up our information and one will be use to test the results of our model (the test attributes will be the weighty observations and the foreseen name will be differentiated and the names from the test set).

# Splitting the dataset into the Training set and Test set

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)

This is another basic endeavor, in light of the fact that sklearn has the strategy called train_test_split, which will part our informational file returning 4 characteristics, the train attributes (X_train), test qualities (X_test), train names (y_train) and the test names (y_test). A standard course of action is to use 25% of the informational record for test and 75% for train. You can use other plan, if you like.

By and by look again over the informational file. You can see that the characteristics from the Salary area are much higher than in the Age section. This can be an issue, in light of the fact that the impact of the Salary area will be significantly higher. Just think about it, if you have two close compensation rates like 10000 and 9000, calculating the detachment between them will achieve 10000–9000 = 1000. By and by if you take the Age area with values like 10 and 9, what is important is 10–9=1, which has lower influence (10 is minuscule diverged from 1000, it takes after you have weighted qualities).

from sklearn.preprocessing import StandardScaler

sc = StandardScaler()

X_train = sc.fit_transform(X_train)

X_test = sc.transform(X_test)

# Fitting classifier to the Training set

from sklearn.neighbors import KNeighborsClassifier

classifier = KNeighborsClassifier(n_neighbors = 2)

classifier.fit(X_train, y_train)

# Predicting the Test set outcomes

y_pred = classifier.predict(X_test)

# Making the Confusion Matrix

from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_test, y_pred)

# Visualizing the Training set outcomes

from matplotlib.colors import ListedColormap

X_set, y_set = X_train, y_train

X1, X2 = np.meshgrid(np.arange(start = X_set[:, 0].min() – 1, stop = X_set[:, 0].max() + 1, venture = 0.01),

np.arange(start = X_set[:, 1].min() – 1, stop = X_set[:, 1].max() + 1, venture = 0.01))

plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(), X2.ravel()]).T).reshape(X1.shape),

alpha = 0.75, cmap = ListedColormap((‘red’, ‘green’)))

plt.xlim(X1.min(), X1.max())

plt.ylim(X2.min(), X2.max())

for I, j in enumerate(np.unique(y_set)):

plt.scatter(X_set[y_set == j, 0], X_set[y_set == j, 1],

c = ListedColormap((‘red’, ‘green’))(i), name = j)

plt.title(‘Classifier (Training set)’)

plt.xlabel(‘Age’)

plt.ylabel(‘Estimated Salary’)

plt.legend()

plt.show() 