Рубрики
Без рубрики

Что такое алгоритм KNN?

Что такое алгоритм KNN? Одинаково известный как K-ближайший сосед, является одним из наиболее распространенных алгоритмов в … Теги с машиной, Python, Knn.

Что такое алгоритм KNN?

Одинаково известный как К-ближайший сосед , является одним из наиболее распространенных алгоритмов в машинном обучении и широко используется в регрессии и проблемах классификации.

Эта статья предполагает, что у вас есть некоторое знакомство с контролируемое обучение, Если нет, пожалуйста, посетите здесь Отказ

Быть более точным, KNN падает под экземпляром обучения. Следовательно, Есть еще один ключевой вопрос: «Что такое Обучение на основе экземпляра »?

Обучение на основе экземпляра или обучения на основе экземпляра или обучения на основе на основе памяти или путем сердечного обучения является одним из наиболее распространенных алгоритмов, используемых в машинном обучении. В экземпляре, основанном на изучении, система учится у моделей и оперативно использует шаблон сходства, положительно идентифицирует возможное решение для нового набора данных.

Давайте вернемся на наше внимание на Knn.

KNN использует сходство для прогнозирования результата новых точек данных. Он указывает на то, что данные будут назначены значение, основанное на том, насколько тесно это относится к точкам в наборе обучения.

Это нормально, если вы не получите полное понимание KNN, мы понимаем Это больше с помощью набора данных ириса. Данные IRIS доступны здесь Отказ Это доступ к несколько раз у машинного обучения новичками и энтузиастами.

Реализация KNN (Python)

Я использую Pycharm, чтобы написать код, но тоже можно использовать Jupyter.

import numpy as np
import pandas as pd

file_name = '/Users/ashutosh/Downloads/iris_data.csv'

dataset = pd.read_csv(file_name)
print(len(dataset))

# Only shows First 5 Lines
print(dataset.head())

Выполнить вышеуказанную программу, и вы получите следующий вывод

> 150
>   Sepal_Length(CM) Sepal_Width(CM) ... Petal_Width (CM)   Species
> 0        5.1       3.5 ...        0.2 Iris-setosa
> 1        4.9       3.0 ...        0.2 Iris-setosa
> 2        4.7       3.2 ...        0.2 Iris-setosa
> 3        4.6       3.1 ...        0.2 Iris-setosa
> 4        5.0       3.6 ...        0.2 Iris-setosa
> [5 rows x 5 columns]

Напечатать информацию

# Print the info
print('---------- Info -------------')
print(dataset.info())
print('---------- Info Ends Here -------------')

Выполнение вышеуказанного кода даст следующий выход:

> ---------- Info -------------
> 
> RangeIndex: **150 entries**, 0 to 149
> Data columns (total 5 columns):
> Sepal_Length(CM)   150 non-null float64
> Sepal_Width(CM)   150 non-null float64
> Petal_Length (CM)  150 non-null float64
> Petal_Width (CM)   150 non-null float64
> Species       150 non-null object
> dtypes: float64(4), object(1)
> memory usage: 6.0+ KB
> None
> --------------- Info Ends Here ----------

В базе данных IRIS у нас есть 150 записей, а индекс начинается с 0.

Согласно документации Python, Опишите () Функция в пандах Создать статистику, которые суммируют центральную тенденцию, дисперсию и Форма распределения набора данных, исключая Нан ценности. Анализируются как Числовые и объектные серии, а также Dataframe Комплексные наборы смешанного типы данных. Выход будет варьироваться в зависимости от того, что предоставляется.

# Describe dataset
print("\n----- Describe ------\n")
print(dataset.describe())
print('-------------- Describe Ends Here ----------')

-- Output --

----- Describe ------

Sepal_length (cm) sepal_width (cm) petal_length (см) petal_width (см) count 150.000000 150.000000 150.000000 150.000000 Среднее 5.843333 3.054000 3.758667 1.198667 STD 0.828066 0.433594 1.764420 0,763161 мин 4.300000 2.000000 1.000000 0,100000 25% 5.100000 2,800000 1.600000 0.300000 50% 5.800000 3.000000 4.350000 1.300000 75% 6.400000 3.300000 5.100000 1.800000 Max Max 7,900000 4,400000 6.900000 2.500000 —————– Описать заканчивается здесь – ———-

Для того, чтобы проверить уникальные виды в набор данных

print(dataset['Species'].unique())

После выполнения команды, если вы получите следующий вывод [«IRIS-Setosa» Iris-Versicolor ” Iris-Virginica ‘], Ты на правильном пути.

Следующий шаг – импортировать следующие функции из Sklearn библиотека.

Импорт matplotlib.pyplot как PLT

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import confusion_matrix, accuracy_score
from sklearn.neighbors import KNeighborsClassifier
attributes = ['Sepal_Length(CM)', 'Sepal_Width(CM)', 
    'Petal_Length (CM)', 'Petal_Width (CM)', 'Species'
]
features = ['Sepal_Length(CM)', 'Sepal_Width(CM)', 
    'Petal_Length (CM)', 'Petal_Width (CM)'
]

«Атрибуты» – это список Python, состоящий из всех заголовков в файле CSV. Если есть Никаких заголовков в файле CSV Отказ Пожалуйста, добавьте его. «Особенности» – это список Python состоит из параметров ириса.

def plot_hist_graph(data):
    data.hist(bins=50)
    plt.figure(figsize=(15, 10))
    plt.show()


def plot_parallel_coordinates(data, attr):
    plt.figure(figsize=(15, 10))
    parallel_coordinates(data[attr], "Species")
    plt.title(
        'Iris Parallel Coordinates Plot', 
        fontsize=20, fontweight='bold'
    )
    plt.xlabel('Attributes', fontsize=15)
    plt.ylabel('Values', fontsize=15)
    plt.legend(
        loc=1, 
        prop={'size': 15}, 
        frameon=True, 
        facecolor="white", 
        edgecolor="black")
    plt.show()
data_values = dataset[features].values

plot_hist_graph(dataset)

Однако мы хотим начать с реализации алгоритма KNN Но есть один хрупкий, KNN не подтверждает или не позволяет Строка ярлыки. Следовательно, нам нужно преобразовать строку в целочисленные этикетки.

Мы помним, у нас есть только три уникальных вида в наборе данных, поэтому мы Может легко пометить их как «0», «1» и «2». Чтобы установить этикетки у нас есть LabelenCoder () от Sklearn Библиотека * Отказ * Вот реализация.

def set_label_encoding(data_species):
    le = LabelEncoder()
    return le.fit_transform(data_species)
feature_values = set_label_encoding(dataset['Species'].values)

Как только данные маркируются, теперь пришло время реализовать алгоритм KNN.

def test_train_data_split(data, data_species, test_ratio, state):
    return train_test_split(
        data, data_species, test_size=0.33, random_state=42
    )
def get_knn_classifier(k, x_train, y_train):
    classifier = KNeighborsClassifier(n_neighbors=k)
    return classifier.fit(x_train, y_train)
# Train the dataset
x_train_set, x_test_set, y_train_set, y_test_set = 
    test_train_data_split(
        data_values, feature_values, 0.2, 0
    )
# KNN Classification
# K = 3
knn_classifier = get_knn_classifier(3, x_train_set, y_train_set)

# Predicting the test result
prediction = knn_classifier.predict(x_test_set)

print('--- Prediction ---')
print(prediction)
To check the model accuracy, we need to build the confusion matrix.# Confusion Matrix
c_matrix = confusion_matrix(y_test_set, prediction)

print(c_matrix)

accuracy = accuracy_score(y_test_set, prediction) * 100

print(accuracy)

Выполнить вышеуказанную программу. Реализация вышеуказанного, мы получаем точность около 96,67%.

Важная ссылка я следовал:

DataSet Iris: https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data

Ann Algorithm: https://kevinzakka.github.io/2016/07/13/k-nearest-neighbor/

Knn Algo Введение: [ https://www.analyticsvidhya.com/blog/2018/03/ Введение-K-соседи-алгоритм-кластеризация/] (

Оригинал: “https://dev.to/akuks/what-is-knn-algorithm-1ph7”