Use KNN for Car Evaluation
1 download car.data
The column heading need to change with features: buying,maint,doors,persons,lug_boot,safety,class
https://archive.ics.uci.edu/ml/datasets/car+evaluation
2 download sklearn
https://scikit-learn.org/stable/install.html
3 KNN
https://scikit-learn.org/stable/modules/neighbors.html
4 code
import numpy as np
import pandas as pd
from sklearn import neighbors, metrics
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
# read file
data = pd.read_csv('car.data')
# only choose 3 very important features
X = data[[
'buying',
'maint',
'safety'
]].values
y = data[['class']]
# converting the feature data to machine readable
Le = LabelEncoder()
for i in range(len(X[0])):
X[:, i] = Le.fit_transform(X[:, i])
# transforming class data
label_mapping = {
'unacc':0,
'acc':1,
'good':2,
'vgood':3
}
y['class'] = y['class'].map(label_mapping)
y = np.array(y)
# create model
knn = neighbors.KNeighborsClassifier(n_neighbors=25, weights='uniform')
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
knn.fit(X_train, y_train)
prediction = knn.predict(X_test)
accuracy = metrics.accuracy_score(y_test, prediction)
print("prediction: ", prediction)
print("accuracy: ", accuracy)
5 result:
prediction: [0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 1 2 1 1 1 0 1 0 1 0 1 0 0 2 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0
1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1
0 0 0 0 0 1 1 0 1 3 0 0 0 0 0 1 0 2 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 1 1 0
0 0 0 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 2 1 0 0 2 0 0 0 1 1 0
0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 0 0 1 2 2 0 0 0 0 0 0 0 0 0 0 2
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0
0 2 0 0 0 0 0 0 0 0 1 0 1 0 2 1 1 2 0 0 1 0 0 0 0 2 1 0 0 0 1 0 0 1 0 0 1
0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 2 0 0 1 0 0 1 1 1 0 0 0 0
0 0 1 0 0 0 0 0 1 0 0 0 0]
accuracy: 0.7485549132947977