Computer >> Máy Tính >  >> Lập trình >> Python

Vẽ đồ thị ranh giới quyết định k-NN trong Matplotlib

Để tạo ranh giới quyết định k-NN trên biểu đồ trong matplotlib, chúng ta có thể thực hiện các Bước sau.

Các bước

  • Đặt kích thước hình và điều chỉnh phần đệm giữa và xung quanh các ô con.

  • Khởi tạo một biến n_neighbors cho số hàng xóm.

  • Tải và trả lại iris tập dữ liệu (phân loại).

  • Tạo x y điểm dữ liệu.

  • Lập danh sách các màu sáng và tối.

  • Bộ phân loại thực hiện bỏ phiếu k-hàng xóm gần nhất.

  • Tạo xmin, xmax, ymin ymax điểm dữ liệu.

  • Tạo một hình mới hoặc kích hoạt một hình hiện có.

  • Tạo một biểu đồ đường viền.

  • Tạo biểu đồ phân tán với tập dữ liệu X.

  • Đặt x y nhãn trục, tiêu đề và tỷ lệ của trục.

  • Để hiển thị hình này, hãy sử dụng Show () phương pháp.

Ví dụ

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.colors import ListedColormap
from sklearn import neighbors, datasets

plt.rcParams["figure.figsize"] = [7.00, 3.50]
plt.rcParams["figure.autolayout"] = True

n_neighbors = 15
iris = datasets.load_iris()
X = iris.data[:, :2]
y = iris.target
h = .02

cmap_light = ListedColormap(['orange', 'cyan', 'cornflowerblue'])
cmap_bold = ['darkorange', 'c', 'darkblue']


clf = neighbors.KNeighborsClassifier(n_neighbors, weights='uniform')
clf.fit(X, y)

x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
np.arange(y_min, y_max, h))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

plt.figure()

plt.contourf(xx, yy, Z, cmap=cmap_light)

sns.scatterplot(x=X[:, 0], y=X[:, 1], hue=iris.target_names[y],
palette=cmap_bold, alpha=1.0, edgecolor="black")

plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())

plt.title("3-Class classification (k = %i, 'uniform' = '%s')"
% (n_neighbors, 'uniform'))

plt.xlabel(iris.feature_names[0])
plt.ylabel(iris.feature_names[1])

plt.Show()

Đầu ra

Nó sẽ tạo ra kết quả sau -

Vẽ đồ thị ranh giới quyết định k-NN trong Matplotlib