fork download
  1. from sklearn.datasets import load_iris
  2. from sklearn.model_selection import train_test_split
  3. from sklearn.neighbors import KNeighborsClassifier
  4. from sklearn.model_selection import KFold
  5. from sklearn.model_selection import cross_val_score
  6. from sklearn import metrics
  7. import matplotlib.pyplot as plt
  8.  
  9. iris = load_iris()
  10.  
  11. X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=11, test_size=0.20)
  12.  
  13. #metodo1
  14. k_range = range(1, 30)
  15. scores = {}
  16. scores_list = []
  17. for k in k_range:
  18. knn = KNeighborsClassifier(n_neighbors=k) #Creating the Model
  19. knn.fit(X=X_train, y=y_train) #Training the Model
  20. y_pred = knn.predict(X_test)
  21. scores[k] = metrics.accuracy_score(y_test, y_pred)
  22. scores_list.append(metrics.accuracy_score(y_test, y_pred))
  23.  
  24. print(f'Acurácia Máxima = {max(scores_list):.2f} com \nK = {scores_list.index(max(scores_list)) + 1}')
  25. #Atenção: k não começa em zero mas o indice da lista sim!
  26. #aqui o valor encontrado de k foi k =5 com Acurácia Máxima de 0.97
  27.  
  28.  
  29.  
  30. #metodo2
  31. neighbors = range(1, 30)
  32. cv_scores = []
  33.  
  34. n_splits = 20
  35. kfold = KFold(n_splits=n_splits, shuffle=True)#random_state=11
  36.  
  37. for k in neighbors:
  38. knn = KNeighborsClassifier(n_neighbors=k)
  39. scores = cross_val_score(estimator=knn, X=iris.data, y=iris.target, cv=kfold,
  40. scoring='accuracy') # X-train y_train
  41. cv_scores.append(scores.mean())
  42.  
  43.  
  44. print(f'cv scores = {cv_scores}')
  45.  
  46. cv_scores = [round(valor, 2) for valor in cv_scores]
  47. acc_max = round(max(cv_scores), 2)
  48.  
  49. print(f'Acurácia Máxima = {acc_max:.2f} com \nK = {cv_scores.index(acc_max) + 1}')
  50. ##aqui o valor encontrado de k foi k =14 com Acurácia Máxima de 0.98
Success #stdin #stdout 2.25s 83052KB
stdin
Standard input is empty
stdout
Acurácia Máxima = 0.97 com  
K = 5
cv scores = [0.9616071428571429, 0.9455357142857144, 0.9598214285714286, 0.9607142857142857, 0.9625, 0.9669642857142857, 0.9660714285714287, 0.9598214285714286, 0.9598214285714286, 0.9598214285714286, 0.9669642857142857, 0.9660714285714287, 0.9598214285714286, 0.9723214285714287, 0.9732142857142858, 0.9642857142857144, 0.9794642857142858, 0.9732142857142858, 0.9794642857142858, 0.9732142857142858, 0.9669642857142857, 0.9607142857142857, 0.9732142857142858, 0.9607142857142857, 0.9607142857142857, 0.9491071428571429, 0.9589285714285716, 0.9455357142857144, 0.9482142857142858]
Acurácia Máxima = 0.98 com  
K = 17