Les K plus proches voisins
Définition
Le knn est un algorithme d'apprentissage supervisé
La régression linéaire est un modèle de régression linéaire est un modèle de régression qui cherche à établir une relation linéaire entre une variable, dite expliquée, et une ou plusieurs variables, dites explicatives.
Wikipédia : https://fr.m.wikipedia.org/wiki/R%C3%A9gression_lin%C3%A9aire
La régression linéaire repose sur l'hypothèse d'une relation linéaire entre la variable dépendante y et les prédicteurs X. La valeur de y serait donc une combinaison linéaire des prédicteurs.
La solution d'une régression est obtenue grâce à la méthode des moindres carrés ordinaires qui consiste à minimiser les erreurs de prédictions.
On appelle résidu (ou erreur) la différence entre la valeur prédite et la valeur réelle. On note epsilon = y - ŷ
https://scikit-learn.org/stable/modules/linear_model.html#ordinary-least-squares
Importer KNeighborsClassifier
Code complet
# coding : utf-8
'''
Scikit-learn Challenge
#01 : K Nearest Neighbors
'''
# Packages
import pickle
from sklearn.datasets import load_iris
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# Get data
X, y = load_iris(return_X_y=True)
# Design model
clf = KNeighborsClassifier(n_neighbors=5)
# Train model
clf.fit(X, y)
# Evaluate model
y_pred = clf.predict(X)
score = accuracy_score(y, y_pred)
print('Accuracy score: ', round(score, 2))
# Inference
output = clf.predict([[1.5, 0.24, 2.6, 0.1]])[0]
print('Predcited class: ', output)
# Save model
with open('output/model.pkl', 'wb') as f:
pickle.dump(obj=clf, file=f)
Classification
Dans le cadre d'une classification, on va classifier les points en fonction de leur espèce.
Évaluation
k_values = [2, 3, 4, 5, 6, 7, 8]
train_scores = []
test_scores = []
for k in k_values:
knn = KNeighborsRegressor(n_neighbors=k)
knn.fit(X_train, y_train)
train_scores.append(knn.score(X_train, y_train))
test_scores.append(knn.score(X_test, y_test))
plt.plot(k_values, train_scores)
plt.plot(k_values, test_scores)
Évaluation
k_values = [2, 3, 4, 5, 6, 7, 8]
train_scores = []
test_scores = []
for k in k_values:
knn = KNeighborsClassifier(n_neighbors=k)
knn.fit(X_train, y_train)
train_scores.append(knn.score(X_train, y_train))
test_scores.append(knn.score(X_test, y_test))
plt.plot(k_values, train_scores)
plt.plot(k_values, test_scores)
Classification
Dans le cadre d'une classification
Références
Pour signaler un problème que vous avez rencontré durant l'exécution des cahiers, merci de créer une issue
. Assurez-vous que vous avez les bonnes versions des packages*