#!/usr/bin/env python # coding: utf-8 # Задача 12. Предсказать сорт винограда из которого сделано вино, используя результаты химических анализов, c помощью KNN - метода k ближайших соседей с тремя различными метриками. Построить график зависимости величины ошибки от числа соседей k. # # # In[7]: import sklearn.neighbors import sklearn.model_selection import sklearn.metrics import sklearn.preprocessing import numpy as np import pandas as pd import matplotlib.pyplot as plt get_ipython().run_line_magic('matplotlib', 'inline') # In[ ]: Считываем данные: # In[11]: data=pd.read_csv('wine.data') data.columns = ['Class', 'Alcohol', 'Malic acid', 'Ash', 'Alcalinity of ash', 'Magnesium', 'Total phenols' , 'Flavanoids', 'Nonflavanoid phenols', 'Proanthocyanins', 'Color intensity', 'Hue', 'OD/OD of diluted wines', 'Proline '] data[:10] # In[ ]: Обрабатываем данные # In[12]: wine_data=data[data.columns[data.columns!='Class']] wine_class=data['Class'] # In[ ]: Обучение и подсчет ошибки # In[13]: neighbours=range(1,20) metrics=['euclidean', 'manhattan', 'chebyshev'] X_train,X_test,y_train,y_test=sklearn.model_selection.train_test_split(wine_data, wine_class,test_size=0.5) # In[ ]: Построение графика зависимости ошибки от количества соседей для 3 различных метрик # In[14]: error=[] for i in range(3): error.append([]) for k in range(1,20): neighbor = sklearn.neighbors.KNeighborsClassifier(n_neighbors = k, metric= metrics[i]) neighbor.fit(X_train,y_train) predictions = neighbor.predict(X_test) accuracy = sklearn.metrics.accuracy_score(y_test, predictions) error[i].append(1-accuracy) # In[ ]: Построение графика зависимости ошибки от количества соседей для 3 различных метрик # In[16]: plt.figure() for i in range(3): plt.plot(neighbours,error[i], label=metrics[i]) plt.legend() plt.xlabel('Количество соседей') plt.ylabel('Ошибка') plt.show() # In[ ]: