Để 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 và 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 và 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 và 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 -