Nếu như con người dân có kiểu học tập “nước đến chân new nhảy”, thì vào Machine Learning cũng có thể có một thuật toán như vậy.
Bạn đang xem: Sử dụng thuật toán k-NN để phân loại dữ liệu
Trong trang này:
1. Trình làng 3. Ví dụ trên Python phân tích 4. Bàn thảo1. Giới thiệu
Một mẩu truyện vui
Có một thằng bạn chuẩn bị cho ngày thi cuối kỳ. Vì chưng môn này được mở tài liệu khi thi đề nghị anh ta không chịu đựng ôn tập nhằm hiểu ý nghĩa sâu sắc của từng bài học và mối tương tác giữa các bài. Chũm vào đó, anh thu thập tất cả các tư liệu trên lớp, bao gồm ghi chép bài giảng (lecture notes), các slides và bài tập về bên + lời giải. Để cho chắc, anh ta ra thư viện và các quán Photocopy xung quanh trường tải hết toàn bộ các nhiều loại tài liệu liên quan (khá khen đến cậu này chịu khó tìm kiếm tài liệu). Cuối cùng, đứa bạn của chúng ta thu thập được một ông chồng cao tư liệu để với vào chống thi.
Vào ngày thi, anh đầy niềm tin mang ông xã tài liệu vào phòng thi. Aha, đề này tối thiểu mình đề nghị được 8 điểm. Câu 1 đồng nhất bài giảng trên lớp. Câu 2 như nhau đề thi năm kia mà giải thuật có trong tập tài liệu thiết lập ở tiệm Photocopy. Câu 3 gần giống với bài tập về nhà. Câu 4 trắc nghiệm thậm chí là cậu nhớ chính xác ba tài liệu có ghi đáp án. Câu cuối cùng, 1 câu cạnh tranh nhưng anh đã có lần nhìn thấy, chỉ là không nhớ nơi đâu thôi.
Kết trái cuối cùng, cậu ta được 4 điểm, hoàn toản điểm qua môn. Cậu làm đúng đắn câu 1 vì kiếm được ngay vào tập ghi chú bài xích giảng. Câu 2 cũng tìm kiếm được đáp án nhưng giải mã của cửa hàng Photocopy sai! Câu tía thấy tương tự bài về nhà, chỉ khác mỗi một số thôi, cậu cho hiệu quả giống như vậy luôn, vậy nhưng không ăn điểm nào. Câu 4 thì tìm kiếm được cả 3 tư liệu nhưng có hai trong số ấy cho lời giải A, cái sót lại cho B. Cậu lựa chọn A cùng được điểm. Câu 5 thì không làm được cho dù còn tới đôi mươi phút, bởi vì tìm mãi chẳng thấy đáp án đâu - những tài liệu vượt cũng mệt!!
Không cần ngẫu nhiên mà tôi dành ra tía đoạn văn để đề cập về chuyện học hành của chàng trai kia. Bây giờ tôi xin trình diễn về một phương thức trong Machine Learning, được gọi là K-nearest neighbor (hay KNN), một thuật toán được xếp vào nhiều loại lazy (machine) learning (máy lười học). Thuật toán này khá như thể với cách học/thi của anh bạn kém như mong muốn kia.
K-nearest neighbor
K-nearest neighbor là giữa những thuật toán supervised-learning dễ dàng nhất (mà kết quả trong một vài trường hợp) vào Machine Learning. Lúc training, thuật toán này không học một điều gì từ dữ liệu training (đây cũng là nguyên nhân thuật toán này được xếp vào nhiều loại lazy learning), mọi tính toán được triển khai khi nó yêu cầu dự đoán hiệu quả của dữ liệu mới. K-nearest neighbor hoàn toàn có thể áp dụng được vào cả hai các loại của câu hỏi Supervised learning là Classification cùng Regression. KNN nói một cách khác là một thuật toán Instance-based hay Memory-based learning.
Có một vài khái niệm tương ứng người-máy như sau:
Câu hỏi | Điểm dữ liệu | Data point |
Đáp án | Đầu ra, nhãn | Output, Label |
Ôn thi | Huấn luyện | Training |
Tập tài liệu mang vào phòng thi | Tập tài liệu tập huấn | Training set |
Đề thi | Tập dữ liểu kiểm thử | Test set |
Câu hỏi vào dề thi | Dữ liệu kiểm thử | Test data point |
Câu hỏi có đáp án sai | Nhiễu | Noise, Outlier |
Câu hỏi sát giống | Điểm dữ liệu gần nhất | Nearest Neighbor |
Với KNN, trong việc Classification, label của một điểm tài liệu mới (hay kết quả của câu hỏi trong bài bác thi) được suy ra thẳng từ K điểm tài liệu gần độc nhất trong training set. Label của một chạy thử data có thể được quyết định bằng major voting (bầu chọn theo số phiếu) giữa các điểm gần nhất, hoặc nó có thể được suy ra bằng cách đánh trọng số khác nhau cho từng trong những điểm sớm nhất đó rồi suy ra label. Chi tiết sẽ được nêu vào phần tiếp theo.
Trong vấn đề Regresssion, cổng đầu ra của một điểm tài liệu sẽ bởi chính cổng đầu ra của điểm dữ liệu đã biết gần nhất (trong trường hòa hợp K=1), hay là trung bình bao gồm trọng số của đầu ra của các điểm gần nhất, hoặc bởi một quan hệ dựa trên khoảng cách tới các điểm gần nhất đó.
Một cách ngắn gọn, KNN là thuật toán đi kiếm đầu ra của một điểm tài liệu mới bằng cách chỉ dựa trên thông tin của K điểm tài liệu trong training set gần nó độc nhất vô nhị (K-lân cận), không để ý đến việc gồm một vài điểm dữ liệu trong số những điểm gần nhất này là nhiễu. Hình dưới đó là một ví dụ như về KNN vào classification cùng với K = 1.

Ví dụ trên đây là bài toán Classification với 3 classes: Đỏ, Lam, Lục. Từng điểm tài liệu mới (test data point) sẽ tiến hành gán label theo màu sắc của điểm nhưng mà nó trực thuộc về. Vào hình này, có một vài ba vùng nhỏ dại xem lẫn vào các vùng to hơn khác màu. Ví dụ gồm một điểm color Lục ở ngay sát góc 11 giờ nằm trong lòng hai vùng lớn với tương đối nhiều dữ liệu màu Đỏ và Lam. Điểm này rất hoàn toàn có thể là nhiễu. Dẫn cho nếu tài liệu test lâm vào cảnh vùng này sẽ có không ít khả năng cho công dụng không chủ yếu xác.
Khoảng biện pháp trong không gian vector
Trong không khí một chiều, khoảng cách giữa hai điểm là trị tuyệt đối giữa hiệu giá trị của nhị điểm đó. Trong không khí nhiều chiều, khoảng cách giữa hai điểm có thể được định nghĩa bởi nhiều hàm số khác nhau, trong đó độ dài mặt đường thằng nổi nhì điểm chỉ là 1 trong những trường hợp quan trọng đặc biệt trong đó. Nhiều thông tin bổ ích (cho Machine Learning) có thể được tìm kiếm thấy tại Norms (chuẩn) của vector trong tab Math.
2. Phân tích toán học
Thuật toán KNN dễ dàng nắm bắt nên đã phần “Phân tích toán học” này đã chỉ tất cả 3 câu. Tôi trực tiếp đi vào những ví dụ. Có một điều đáng xem xét là KNN nên nhớ tất cả các điểm tài liệu training, việc này không được lợi về cả bộ nhớ và thời gian tính toán - giống hệt như khi cậu bạn của bọn họ không tìm được câu trả lời cho thắc mắc cuối cùng.
3. Ví dụ như trên Python
Bộ cơ sở tài liệu Iris (Iris flower dataset).
Iris flower dataset là một trong bộ dữ liệu bé dại (nhỏ hơn tương đối nhiều so cùng với MNIST. Bộ dữ liệu này bao gồm thông tin của ba loại hoa Iris (một loài hoa lan) khác nhau: Iris setosa, Iris virginica cùng Iris versicolor. Từng loại tất cả 50 nhành hoa được đo với dữ liệu là 4 thông tin: chiều dài, chiều rộng lớn đài hoa (sepal), cùng chiều dài, chiều rộng cánh hoa (petal). Dưới đấy là ví dụ về hình ảnh của tía loại hoa. (Chú ý, đây không hẳn là bộ cơ sở dữ liệu hình ảnh như MNIST, mỗi điểm tài liệu trong tập này chỉ là 1 trong những vector 4 chiều).

Bộ dữ liệu nhỏ tuổi này hay được sử dụng trong nhiều thuật toán Machine Learning trong số lớp học. Tôi sẽ lý giải lý vị không lựa chọn MNIST vào phần sau.
Thí nghiệm
Trong phần này, bọn họ sẽ tách bóc 150 tài liệu trong Iris flower dataset ra thành 2 phần, gọi là training set và test set. Thuật toán KNN sẽ dựa vào trông tin làm việc training set để tham dự đoán coi mỗi tài liệu trong test set khớp ứng với các loại hoa nào. Tài liệu được dự kiến này vẫn được đối chiếu với loại hoa thiệt của mỗi tài liệu trong test set để đánh giá kết quả của KNN.
Trước tiên, họ cần khai báo vài ba thư viện.
Iris flower dataset có sẵn trong thư viện scikit-learn.
Tiếp theo, họ load tài liệu và hiện thị lên vài dữ liệu mẫu. Các class được gán nhãn là 0, 1, và 2.
iris = datasets.load_iris()iris_X = iris.datairis_y = iris.targetprint "Number of classes: %d" %len(np.unique(iris_y))print "Number of data points: %d" %len(iris_y)X0 = iris_X
Samples from class 0:
", X0<:5,:>X1 = iris_X
Samples from class 1:
", X1<:5,:>X2 = iris_X
Samples from class 2:
", X2<:5,:>
Kết quả cho thấy thêm label dự đoán gần giống với label thật của thử nghiệm data, chỉ bao gồm 2 điểm trong những 20 điểm được hiển thị có hiệu quả sai lệch. Ở đây họ làm quen thuộc với khái niệm mới: ground truth. Một cách đối kháng giản, ground truth đó là nhãn/label/đầu ra thực sự của các điểm trong kiểm tra data. Quan niệm này được sử dụng nhiều vào Machine Learning, hi vọng lần tới chúng ta gặp thì đã nhớ tức thì nó là gì.
Để review độ đúng mực của thuật toán KNN classifier này, chúng ta xem xem bao gồm bao nhiêu điểm trong test data được dự kiến đúng. Lấy số lượng này chia cho tổng con số trong tập kiểm tra data sẽ ra độ chủ yếu xác. Scikit-learn cung cấp hàm số accuracy_score nhằm thực hiện quá trình này.
from sklearn.metrics import accuracy_scoreprint "Accuracy of 1NN: %.2f %%" %(100*accuracy_score(y_test, y_pred))
Classifier)
Nhận thấy rằng chỉ xét một điểm gần nhất rất có thể dẫn đến công dụng sai nếu đặc điểm này là nhiễu. Một cách hoàn toàn có thể làm tăng độ đúng là tăng số lượng điểm cạnh bên lên, ví dụ như 10 điểm, với xem xem vào 10 điểm sát nhất, class như thế nào chiếm nhiều phần thì dự đoán tác dụng là class đó. Kỹ thuật dựa vào phần nhiều này được call là major voting.
clf = neighbors.KNeighbors
Classifier(n_neighbors = 10, phường = 2)clf.fit(X_train, y_train)y_pred = clf.predict(X_test)print "Accuracy of 10NN with major voting: %.2f %%" %(100*accuracy_score(y_test, y_pred))
Kết trái đã tạo thêm 98%, siêu tốt!
Là một kẻ tham lam, tôi chưa muốn dừng kết quả ở đây bởi thấy rằng mình vẫn đang còn thể nâng cao được. Trong kỹ thuật major voting bên trên, mỗi trong 10 điểm gần nhất được xem là có vai trò đồng nhất và giá trị lá phiếu của mỗi điểm này là như nhau. Tôi mang lại rằng như vậy là không công bằng, vì rõ ràng rằng phần lớn điểm ngay gần hơn nên có trọng số cao hơn nữa (càng thân cận thì càng tin tưởng). Vậy đề nghị tôi vẫn đánh trọng số không giống nhau cho từng trong 10 điểm sớm nhất này. Bí quyết đánh trọng số nên thoải mãn điều kiện là một điểm càng sát điểm demo data thì cần được đánh trọng số càng tốt (tin tưởng hơn). Cách dễ dàng nhất là lấy nghịch hòn đảo của khoảng cách này. (Trong trường hợp test data trùng với cùng một điểm dữ liệu trong training data, tức khoảng cách bằng 0, ta lấy luôn luôn label của điểm training data).
Scikit-learn giúp họ đơn giản hóa vấn đề này bằng cách gán gía trị weights = "distance". (Giá trị mặc định của weights là "uniform", khớp ứng với bài toán coi tất cả các điểm sát bên có giá chỉ trị hệt nhau như ngơi nghỉ trên).
clf = neighbors.KNeighbors
Classifier(n_neighbors = 10, p. = 2, weights = "distance")clf.fit(X_train, y_train)y_pred = clf.predict(X_test)print "Accuracy of 10NN (1/distance weights): %.2f %%" %(100*accuracy_score(y_test, y_pred))
Aha, 100%.
Chú ý: không tính 2 cách thức đánh trọng số weights = "uniform" và weights = "distance" sinh sống trên, scikit-learn còn hỗ trợ cho họ một cách để đánh trọng số một cách tùy chọn. Ví dụ, một giải pháp đánh trọng số phổ biến khác vào Machine Learning là:
trong đó (mathbfx) là test data, (mathbfx_i) là 1 trong những điểm trong K-lân cận của (mathbfx), (w_i) là trọng số của điểm đó (ứng cùng với điểm dữ liệu đang xét (mathbfx)), (sigma) là một số trong những dương. Nhận ra rằng hàm số này cũng thỏa mãn điều kiện: điểm càng gần (mathbfx) thì trọng số càng cao (cao nhất bởi 1). Với hàm số này, chúng ta có thể lập trình như sau:
def myweight(distances): sigma2 = .5 # we can change this number return np.exp(-distances**2/sigma2)clf = neighbors.KNeighbors
Classifier(n_neighbors = 10, phường = 2, weights = myweight)clf.fit(X_train, y_train)y_pred = clf.predict(X_test)print "Accuracy of 10NN (customized weights): %.2f %%" %(100*accuracy_score(y_test, y_pred))
Trong trường hòa hợp này, tác dụng tương đương với nghệ thuật major voting. Để tấn công giá đúng chuẩn hơn công dụng của KNN cùng với K khác nhau, giải pháp định nghĩa khoảng chừng cách khác nhau và giải pháp đánh trọng số khác nhau, bọn họ cần thực hiện quy trình trên với nhiều cách thức chia tài liệu training với test khác biệt rồi lấy hiệu quả trung bình, bởi vì rất rất có thể dữ liệu phân chia trong một trường hợp cụ thể là tốt nhất có thể hoặc rất xấu (bias). Đây cũng là biện pháp thường được sử dụng khi review hiệu năng của một thuật toán cụ thể nào đó.
4. Thảo luận
KNN cho Regression
Với việc Regression, bọn họ cũng hoàn toàn có thể sử dụng cách thức tương tự: ước lượng đầu ra dựa vào đầu ra và khoảng cách của các điểm trong K-lân cận. Việc ước lượng như thế nào các chúng ta cũng có thể tự quan niệm tùy vào từng bài bác toán.

Chuẩn hóa dữ liệu
Khi tất cả một nằm trong tính trong dữ liệu (hay phần tử trong vector) lớn hơn các nằm trong tính khác không ít (ví dụ thay bởi vì đo bởi cm thì một hiệu quả lại tính bằng mm), khoảng cách giữa những điểm sẽ nhờ vào vào thuộc tính này khôn cùng nhiều. Để đã có được kết quả đúng mực hơn, một kỹ thuật thường được sử dụng là Data Normalization (chuẩn hóa dữ liệu) để đưa các nằm trong tính có đơn vị đo không giống nhau về thuộc một khoảng giá trị, thường xuyên là tự 0 đến 1, trước khi thực hiện KNN. Có nhiều kỹ thuật chuẩn hóa khác nhau, các các bạn sẽ được thấy khi liên tục theo dõi Blog này. Những kỹ thuật chuẩn chỉnh hóa được vận dụng với không chỉ là KNN ngoại giả với số đông các thuật toán khác.
Sử dụng những phép đo khoảng cách khác nhau
Ngoài norm 1 và norm 2 tôi trình làng trong bài bác này, còn không hề ít các khoảng cách khác nhau rất có thể được dùng. Một ví dụ dễ dàng và đơn giản là đếm con số thuộc tính khác nhau giữa nhì điểm dữ liệu. Số này càng nhỏ thì hai điểm càng sát nhau. Đây chính là giả chuẩn chỉnh 0 nhưng mà tôi đã giới thiệu trong Tab Math.
Ưu điểm của KNN
Độ phức tạp đo lường và tính toán của quá trình training là bằng 0. Việc dự đoán kết quả của dữ liệu mới rất đơn giản. Không đề xuất giả sử gì về phân phối của những class.Nhược điểm của KNN
KNN vô cùng nhạy cảm cùng với nhiễu khi K nhỏ. Như sẽ nói, KNN là 1 trong những thuật toán cơ mà mọi đo lường và tính toán đều nằm tại khâu test. Trong đó việc tính khoảng cách tới từng điểm dữ liệu trong training set vẫn tốn không hề ít thời gian, nhất là với những cơ sở tài liệu có số chiều béo và có không ít điểm dữ liệu. Với K càng khủng thì độ phức tạp cũng trở nên tăng lên. Ngoại trừ ra, bài toán lưu toàn cục dữ liệu trong bộ nhớ cũng tác động tới tính năng của KNN.Tăng tốc mang đến KNN
Ngoài việc đo lường và thống kê khoảng cách xuất phát từ một điểm demo data đến toàn bộ các điểm trong traing set (Brute Force), có một vài thuật toán khác giúp tăng tốc việc tìm kiếm này. độc giả có thẻ tìm kiếm thêm với nhị từ khóa: K-D Tree với Ball Tree. Tôi xin dành phần này cho độc giả tự tìm kiếm hiểu, với sẽ trở về nếu bao gồm dịp. Chúng ta vẫn còn số đông thuật toán quan trọng đặc biệt hơn khác đề xuất nhiều sự vồ cập hơn.
Try this yourself
Tôi có viết một quãng code ngắn để triển khai việc Classification mang đến cơ sở tài liệu MNIST. Các bạn hãy download toàn cục bộ tài liệu này về vì chưng sau này chúng ta còn cần sử dụng nhiều, chạy thử, bình luận kết quả cùng nhận xét của các bạn vào phần phản hồi bên dưới. Để trả lời cho thắc mắc vì sao tôi không chọn cơ sở tài liệu này làm ví dụ, các bạn đọc có thể tự tra cứu ra câu trả lời khi chạy hoàn thành đoạn code này.
Enjoy!
# %resetimport numpy as np from mnist import MNIST # require `pip install python-mnist`# https://pypi.python.org/pypi/python-mnist/import matplotlib.pyplot as pltfrom sklearn import neighborsfrom sklearn.metrics import accuracy_scoreimport time# you need to tải về the MNIST dataset first# at: http://yann.lecun.com/exdb/mnist/mndata = MNIST("../MNIST/") # path to your MNIST folder mndata.load_testing()mndata.load_training()X_test = mndata.test_images
X_train = mndata.train_imagesy_test = np.asarray(mndata.test_labels)y_train = np.asarray(mndata.train_labels)start_time = time.time()clf = neighbors.KNeighbors
Classifier(n_neighbors = 1, phường = 2)clf.fit(X_train, y_train)y_pred = clf.predict(X_test)end_time = time.time()print "Accuracy of 1NN for MNIST: %.2f %%" %(100*accuracy_score(y_test, y_pred))print "Running time: %.2f (s)" % (end_time - start_time)
Nếu tất cả câu hỏi, chúng ta có thể để lại comment bên dưới hoặc trên forum để cảm nhận câu trả lời sớm hơn.Bạn đọc rất có thể ủng hộ blog qua "Buy me a cofee" ở góc trên phía bên trái của blog.Tôi vừa hoàn thành cuốn ebook "Machine Learning cơ bản", bạn có thể đặt sách tại đây.Cảm ơn bạn.
K- Nearest Neighbors (k
NN) là một trong thuật toán học vật dụng có giám sát (supervised learning) rất có thể được thực hiện trong cả phân nhiều loại (classification) với hồi quy (regression). Có thể nói rằng k
NN là một thuật toán căn nguyên từ thực tế cuộc sống. Mọi người có xu hướng bị tác động bởi những người xung xung quanh họ. Hành vi của bọn họ được trả lời bởi những người dân bạn mà họ đã to lên cùng. Phụ huynh chúng ta cũng hiện ra nhân giải pháp của bọn họ theo một vài cách. Nếu như bạn lớn lên với những tình nhân thể thao, rất bao gồm thể bạn sẽ yêu thể thao, tất nhiên cũng có thể có những nước ngoài lệ.
k
NN hoạt động với nguyên lý tương tự. Quý giá của một điểm tài liệu được khẳng định bởi các điểm dữ liệu xung xung quanh nó.
Nếu các bạn có một người bạn rất thân cùng dành phần nhiều thời gian mang đến anh ấy / cô ấy, bạn sẽ có chung sở trường và tận hưởng những điều tương đương nhau. Đó là k
NN với k = 1.
Nếu các bạn luôn đi chơi với một nhóm 5 người, mỗi cá nhân trong đội có tác động đến hành vi của khách hàng và bạn sẽ là trung bình của 5. Đó là k
NN cùng với k = 5.
Bộ phân nhiều loại k
NN xác minh lớp (class) của một điểm tài liệu theo hiệ tượng biểu quyết đa số. Trường hợp k được để là 5, những lớp của 5 điểm ngay sát nhất sẽ được kiểm tra. Dự đoán đưa ra hiệu quả lớp của điểm dữ liệu phụ thuộc vào lớp như thế nào chiếm phần nhiều trong 5 điểm ngay sát nhất. Tương tự, hồi quy k
NN lấy quý giá trung bình của 5 điểm ngay sát nhất.
Làm cụ nào các điểm dữ liệu được xác minh là ngay gần nhau? Trước hết cần đo khoảng cách giữa các điểm dữ liệu. Có nhiều cách thức để đo khoảng chừng cách. Phép đo khoảng cách Euclid là trong những phép đo khoảng cách được sử dụng phổ biến nhất. Hình dưới đây cho thấy thêm cách tính khoảng cách euclid giữa hai điểm trong không gian 2 chiều. Khoảng cách Euclid được đo lường và tính toán bằng phương pháp sau:

Khoảng cách Euclide trong không gian hai chiều gợi lưu giữ cho họ định lý pythagore nổi tiếng: khoảng cách giữa 2 điểm chính là cạnh huyền của tam giác, còn chênh lệch thân tọa độ x, y của 2 điểm dữ liệu đó là 2 cạnh góc vuông.
Sau phía trên tôi sẽ reviews 1 ví dụ dễ dàng về biện pháp sử dụng phương pháp k
NN với những dữ liệu trong không gian 2 chiều (số đặc trưng – features = 2). Tôi áp dụng Kaggle Notebook.
Đầu tiên, bắt buộc nhập những thư viện numpy, pandas, matplotib, sklearn:
Scikit-learning cung cấp nhiều tác dụng hữu ích để tạo nên bộ tài liệu tổng hợp, rất có ích cho việc thực hành các thuật toán học tập máy. Ở đây bọn họ sẽ thực hiện hàm make_blobs.
X,y = make_blobs(n_samples = 100, n_features = 2, centers = 4, cluster_std = 1, random_state = 4) Đoạn code này tạo nên một tập dữ liệu với 100 chủng loại được phân thành 4 lớp và số đặc trưng là 2. Con số mẫu, số đặc trưng và lớp rất có thể dễ dàng được điều chỉnh bằng phương pháp sử dụng những tham số liên quan. Chúng ta cũng rất có thể điều chỉnh độ phân tán (bằng cách kiểm soát và điều chỉnh độ lệch chuẩn) của mỗi nhiều (hoặc lớp). Để mô tả tập dữ liệu tổng hợp này trên đồ gia dụng thị scatter plot, chúng ta sử dụng đoạn code sau:
plt.figure(figsize = (9,6)) plt.scatter(X<:,0>, X<:,1>, c=y, marker = "o", s=50) plt.show()

Đối với bất kỳ thuật toán học trang bị có thống kê giám sát nào, chúng ta phải phân tách tập dữ liệu thành những tập hòa hợp dữ liệu giảng dạy (training set) và bình chọn (test set). Đầu tiên, bọn họ đào tạo mô hình và tiếp đến kiểm tra nó bằng cách sử dụng những phần không giống nhau của tập dữ liệu. Trường hợp không tiến hành việc phân chia này, gồm thể họ sẽ kiểm tra mô hình bằng một trong những dữ liệu cơ mà nó sẽ biết trường đoản cú trước. Câu hỏi phân chia tài liệu này rất có thể được tiến hành dễ dàng bằng phương pháp sử dụng hàm train_test_split.
X_train, X_test, y_train, y_test = train_test_split(X,y,random_state=0) chúng ta có thể chỉ định số lượng dữ liệu lúc đầu được phân chia vào các tập dữ liệu đào tạo và huấn luyện hoặc kiểm tra bằng cách sử dụng những tham số train_size hoặc test_size tương ứng. Tỷ lệ phân chia mặc định của hàm này là 75% mang đến tập dữ liệu huấn luyện và giảng dạy và 25% cho tập dữ liệu kiểm tra.
Xem thêm: Phân tích dữ liệu để đề xuất các chiến lược phát triển sản phẩm mới
Tiếp theo, chúng ta tạo một bộ phân nhiều loại k
NN. Để đã cho thấy sự biệt lập giữa tầm quan trọng của quý hiếm k, tôi chế tác hai bộ phân một số loại với k cực hiếm 1 và 5. Sau đó, các mô hình này được đào tạo bằng cách sử dụng tập hợp tài liệu đào tạo. Trong khúc code sau đây, tham số n_neighbors được sử dụng để lựa chọn giá trị k. Nếu không chỉ là định rõ ràng giá trị k, quý hiếm mặc định k=5 sẽ tiến hành sử dụng.