Một trong những khía cạnh quan trọng của học máy có giám sát là đánh giá và xác nhận mô hình. Khi bạn đánh giá hiệu suất dự đoán của mô hình, điều cần thiết là quy trình phải không thiên vị. Sử dụng 7 từ scikit-learning của thư viện khoa học dữ liệu, bạn có thể chia tập dữ liệu của mình thành các tập hợp con để giảm thiểu khả năng sai lệch trong quy trình đánh giá và xác thực của bạn Show
Trong hướng dẫn này, bạn sẽ học
Ngoài ra, bạn sẽ nhận được thông tin về các công cụ liên quan từ 0Tiền thưởng miễn phí. Nhấp vào đây để có quyền truy cập vào Hướng dẫn tài nguyên NumPy miễn phí chỉ cho bạn các hướng dẫn, video và sách tốt nhất để cải thiện kỹ năng NumPy của bạn Tầm quan trọng của việc chia nhỏ dữ liệuHọc máy có giám sát là tạo ra các mô hình ánh xạ chính xác các đầu vào đã cho (các biến độc lập hoặc yếu tố dự đoán) với các đầu ra đã cho (biến phụ thuộc hoặc phản hồi) Cách bạn đo lường độ chính xác của mô hình tùy thuộc vào loại sự cố mà bạn đang cố gắng giải quyết. Trong phân tích hồi quy, bạn thường sử dụng hệ số xác định, sai số trung bình bình phương gốc, sai số tuyệt đối trung bình hoặc các đại lượng tương tự. Đối với các bài toán phân loại, các bạn thường áp dụng các chỉ số về độ chính xác, độ chính xác, độ thu hồi, điểm F1 và các chỉ số liên quan Các giá trị số được chấp nhận để đo độ chính xác khác nhau giữa các trường. Bạn có thể tìm giải thích chi tiết từ Statistics By Jim, Quora, và nhiều nguồn khác Điều quan trọng nhất cần hiểu là bạn thường cần đánh giá khách quan để sử dụng đúng các biện pháp này, đánh giá hiệu suất dự đoán của mô hình và xác thực mô hình Điều này có nghĩa là bạn không thể đánh giá hiệu suất dự đoán của một mô hình với cùng dữ liệu bạn đã sử dụng để đào tạo. Bạn cần đánh giá mô hình bằng dữ liệu mới mà mô hình chưa từng thấy trước đây. Bạn có thể thực hiện điều đó bằng cách tách tập dữ liệu của mình trước khi sử dụng Loại bỏ các quảng cáoBộ đào tạo, xác nhận và kiểm traViệc chia nhỏ tập dữ liệu của bạn là điều cần thiết để đánh giá khách quan về hiệu suất dự đoán. Trong hầu hết các trường hợp, chỉ cần chia ngẫu nhiên tập dữ liệu của bạn thành ba tập hợp con là đủ
Trong các trường hợp ít phức tạp hơn, khi bạn không phải điều chỉnh siêu đường kính, bạn chỉ có thể làm việc với tập huấn luyện và tập kiểm tra Mặc thiếu và mặc quá nhiềuViệc tách một tập dữ liệu cũng có thể quan trọng để phát hiện xem mô hình của bạn có gặp phải một trong hai vấn đề rất phổ biến hay không, được gọi là trang bị thiếu và trang bị quá mức
Bạn có thể tìm thấy lời giải thích chi tiết hơn về trang bị thiếu và trang bị quá mức trong Hồi quy tuyến tính trong Python Điều kiện tiên quyết để sử dụng $ conda install -c anaconda scikit-learn=0.23 7Bây giờ bạn đã hiểu sự cần thiết phải phân tách tập dữ liệu để thực hiện đánh giá mô hình khách quan và xác định trang bị thiếu hoặc trang bị thừa, bạn đã sẵn sàng tìm hiểu cách phân tách tập dữ liệu của riêng mình Bạn sẽ sử dụng phiên bản 0. 23. 1 của scikit-learning, hoặc 2. Nó có nhiều gói dành cho khoa học dữ liệu và máy học, nhưng đối với hướng dẫn này, bạn sẽ tập trung vào gói 3, cụ thể là hàm 7Bạn có thể cài đặt 2 với 6 0Nếu bạn sử dụng Anaconda, thì có thể bạn đã cài đặt nó rồi. Tuy nhiên, nếu bạn muốn sử dụng một môi trường mới, hãy đảm bảo rằng bạn có phiên bản được chỉ định hoặc sử dụng Miniconda, thì bạn có thể cài đặt 2 từ Anaconda Cloud với 8
Bạn cũng sẽ cần NumPy, nhưng bạn không phải cài đặt riêng. Bạn nên cài đặt nó cùng với 2 nếu bạn chưa cài đặt nó. Nếu bạn muốn làm mới kiến thức về NumPy của mình, hãy xem tài liệu chính thức hoặc xem Look Ma, No For-Loops. Lập trình mảng với NumPyỨng dụng của $ conda install -c anaconda scikit-learn=0.23 7Bạn cần nhập 7 và NumPy trước khi có thể sử dụng chúng, vì vậy bạn có thể bắt đầu với các câu lệnh 72>>>
Bây giờ bạn đã nhập cả hai, bạn có thể sử dụng chúng để chia dữ liệu thành tập huấn luyện và tập kiểm tra. Bạn sẽ phân chia đầu vào và đầu ra cùng một lúc, với một lệnh gọi hàm duy nhất Với 7, bạn cần cung cấp các chuỗi mà bạn muốn tách cũng như bất kỳ đối số tùy chọn nào. Nó trả về một danh sách các mảng NumPy, các chuỗi khác hoặc ma trận thưa thớt SciPy nếu thích hợp 7 74 là chuỗi các danh sách, mảng NumPy, DataFrames của gấu trúc hoặc các đối tượng giống như mảng tương tự chứa dữ liệu bạn muốn phân tách. Tất cả các đối tượng này cùng nhau tạo nên tập dữ liệu và phải có cùng độ dàiTrong các ứng dụng học máy được giám sát, thông thường bạn sẽ làm việc với hai trình tự như vậy
77 là các đối số từ khóa tùy chọn mà bạn có thể sử dụng để có được hành vi mong muốn
Bây giờ là lúc thử tách dữ liệu. Bạn sẽ bắt đầu bằng cách tạo một tập dữ liệu đơn giản để làm việc với. Bộ dữ liệu sẽ chứa các đầu vào trong mảng hai chiều 75 và đầu ra trong mảng một chiều 76>>> 7Để lấy dữ liệu, bạn sử dụng 89, rất thuận tiện để tạo mảng dựa trên dãy số. Bạn cũng sử dụng 80 để sửa đổi hình dạng của mảng được trả về bởi 89 và nhận cấu trúc dữ liệu hai chiềuBạn có thể tách cả bộ dữ liệu đầu vào và đầu ra bằng một lệnh gọi hàm duy nhất >>> 8Đưa ra hai chuỗi, như 75 và 76 ở đây, 7 thực hiện phân tách và trả về bốn chuỗi (trong trường hợp này là mảng NumPy) theo thứ tự này
Bạn có thể nhận được kết quả khác với những gì bạn thấy ở đây. Điều này là do việc chia tách tập dữ liệu là ngẫu nhiên theo mặc định. Kết quả khác nhau mỗi khi bạn chạy chức năng. Tuy nhiên, đây thường không phải là điều bạn muốn Đôi khi, để làm cho các bài kiểm tra của bạn có thể tái sản xuất, bạn cần phân chia ngẫu nhiên với cùng một đầu ra cho mỗi lệnh gọi hàm. Bạn có thể làm điều đó với tham số 79. Giá trị của 79 không quan trọng—nó có thể là bất kỳ số nguyên không âm nào. Thay vào đó, bạn có thể sử dụng phiên bản của 05, nhưng đó là cách tiếp cận phức tạp hơnTrong ví dụ trước, bạn đã sử dụng tập dữ liệu có mười hai quan sát (hàng) và lấy mẫu huấn luyện có chín hàng và mẫu thử nghiệm có ba hàng. Đó là bởi vì bạn đã không chỉ định kích thước mong muốn của tập huấn luyện và tập kiểm tra. Theo mặc định, 25 phần trăm mẫu được chỉ định cho bộ kiểm tra. Tỷ lệ này nói chung là tốt cho nhiều ứng dụng, nhưng không phải lúc nào nó cũng là thứ bạn cần Thông thường, bạn sẽ muốn xác định rõ ràng quy mô của bộ kiểm tra (hoặc đào tạo) và đôi khi, bạn thậm chí sẽ muốn thử nghiệm với các giá trị khác nhau. Bạn có thể làm điều đó với các tham số 78 hoặc 74Sửa đổi mã để bạn có thể chọn kích thước của bộ kiểm tra và nhận kết quả có thể lặp lại >>> 8Với thay đổi này, bạn sẽ nhận được một kết quả khác với trước đó. Trước đó, bạn đã có một tập huấn luyện gồm chín mục và tập kiểm tra gồm ba mục. Bây giờ, nhờ đối số 08, tập huấn luyện có tám phần tử và tập kiểm tra có bốn phần tử. Bạn sẽ nhận được kết quả tương tự với 09 vì 33 phần trăm của mười hai là xấp xỉ bốnCó một sự khác biệt rất quan trọng nữa giữa hai ví dụ cuối cùng. Bây giờ bạn nhận được cùng một kết quả mỗi khi bạn chạy chức năng. Điều này là do bạn đã sửa bộ tạo số ngẫu nhiên bằng 00Hình dưới đây cho thấy những gì đang xảy ra khi bạn gọi 7Các mẫu của tập dữ liệu được xáo trộn ngẫu nhiên và sau đó được chia thành các tập huấn luyện và kiểm tra theo kích thước bạn đã xác định Bạn có thể thấy rằng 76 có sáu số không và sáu số một. Tuy nhiên, bộ kiểm tra có ba số không trong số bốn mục. Nếu bạn muốn (xấp xỉ) giữ tỷ lệ của các giá trị 76 thông qua các tập huấn luyện và kiểm tra, thì hãy vượt qua 04. Điều này sẽ cho phép phân chia tầng>>> 0Bây giờ 89 và 01 có cùng tỷ lệ số không và số một như mảng 76 ban đầuTrong một số trường hợp, bạn nên phân tách phân tầng, chẳng hạn như khi bạn đang phân loại một tập dữ liệu không cân bằng, một tập dữ liệu có sự khác biệt đáng kể về số lượng mẫu thuộc về các lớp riêng biệt Cuối cùng, bạn có thể tắt xáo trộn dữ liệu và phân tách ngẫu nhiên với 08>>> 0Bây giờ bạn có một phần tách trong đó hai phần ba mẫu đầu tiên trong mảng 75 và 76 ban đầu được gán cho tập huấn luyện và phần ba cuối cùng cho tập kiểm tra. không xáo trộn. không ngẫu nhiênLoại bỏ các quảng cáoHọc máy được giám sát với $ conda install -c anaconda scikit-learn=0.23 7Bây giờ là lúc để xem hoạt động của 7 khi giải các bài toán học có giám sát. Bạn sẽ bắt đầu với một vấn đề hồi quy nhỏ có thể được giải quyết bằng hồi quy tuyến tính trước khi xem xét một vấn đề lớn hơn. Bạn cũng sẽ thấy rằng bạn cũng có thể sử dụng 7 để phân loạiVí dụ tối giản về hồi quy tuyến tínhTrong ví dụ này, bạn sẽ áp dụng những gì bạn đã học cho đến nay để giải một bài toán hồi quy nhỏ. Bạn sẽ tìm hiểu cách tạo tập dữ liệu, chia chúng thành các tập con đào tạo và kiểm tra, đồng thời sử dụng chúng cho hồi quy tuyến tính Như thường lệ, bạn sẽ bắt đầu bằng cách nhập các gói, hàm hoặc lớp cần thiết. Bạn sẽ cần NumPy, 64 và 7>>> 6Bây giờ bạn đã nhập mọi thứ mình cần, bạn có thể tạo hai mảng nhỏ, 75 và 76, để thể hiện các quan sát và sau đó chia chúng thành các tập huấn luyện và kiểm tra giống như bạn đã làm trước đây>>> 0Tập dữ liệu của bạn có 20 quan sát hoặc cặp 75- 76. Bạn chỉ định đối số 00, vì vậy tập dữ liệu được chia thành tập huấn luyện với mười hai quan sát và tập kiểm tra với tám quan sátBây giờ bạn có thể sử dụng tập huấn luyện để điều chỉnh mô hình >>> 1 64 tạo đối tượng đại diện cho mô hình, trong khi 02 đào tạo hoặc khớp với mô hình và trả về mô hình. Với hồi quy tuyến tính, việc khớp mô hình có nghĩa là xác định các giá trị chặn tốt nhất ( 03) và độ dốc ( 04) của đường hồi quyMặc dù bạn có thể sử dụng 85 và 89 để kiểm tra mức độ phù hợp, nhưng đây không phải là cách tốt nhất. Ước tính không thiên vị về hiệu suất dự đoán của mô hình của bạn dựa trên dữ liệu thử nghiệm>>> 2 07 trả về hệ số xác định, hoặc R², cho dữ liệu được truyền. Tối đa của nó là 08. Giá trị R² càng cao thì càng phù hợp. Trong trường hợp này, dữ liệu huấn luyện mang lại hệ số cao hơn một chút. Tuy nhiên, R² được tính bằng dữ liệu thử nghiệm là thước đo khách quan về hiệu suất dự đoán của mô hình của bạnĐây là giao diện của nó trên biểu đồ Các chấm màu xanh lá cây đại diện cho các cặp 75- 76 được sử dụng để đào tạo. Đường màu đen, được gọi là đường hồi quy ước tính, được xác định bởi kết quả khớp mô hình. đánh chặn và độ dốc. Vì vậy, nó chỉ phản ánh vị trí của các chấm màu xanh lá câyCác chấm trắng đại diện cho bộ kiểm tra. Bạn sử dụng chúng để ước tính hiệu suất của mô hình (đường hồi quy) với dữ liệu không được sử dụng để đào tạo Ví dụ hồi quyBây giờ bạn đã sẵn sàng để chia một tập dữ liệu lớn hơn để giải quyết vấn đề hồi quy. Bạn sẽ sử dụng bộ dữ liệu giá nhà nổi tiếng ở Boston, được bao gồm trong 2. Bộ dữ liệu này có 506 mẫu, 13 biến đầu vào và giá trị nhà ở là đầu ra. Bạn có thể truy xuất nó bằng 12Đầu tiên, nhập 7 và 12>>> 3Bây giờ bạn đã nhập cả hai chức năng, bạn có thể lấy dữ liệu để làm việc với >>> 4Như bạn có thể thấy, 12 với đối số 16 trả về một bộ có hai mảng NumPy
Bước tiếp theo là chia dữ liệu theo cách tương tự như trước đây >>> 5Bây giờ bạn có tập huấn luyện và kiểm tra. Dữ liệu đào tạo có trong 85 và 89, trong khi dữ liệu để kiểm tra có trong 87 và 01Khi bạn làm việc với các tập dữ liệu lớn hơn, sẽ thuận tiện hơn khi vượt qua quy mô đào tạo hoặc kiểm tra theo tỷ lệ. 21 có nghĩa là khoảng 40 phần trăm mẫu sẽ được gán cho dữ liệu thử nghiệm và 60 phần trăm còn lại sẽ được gán cho dữ liệu huấn luyệnCuối cùng, bạn có thể sử dụng tập huấn luyện ( 85 và 89) để điều chỉnh mô hình và tập kiểm tra ( 87 và 01) để đánh giá mô hình một cách khách quan. Trong ví dụ này, bạn sẽ áp dụng ba thuật toán hồi quy nổi tiếng để tạo các mô hình phù hợp với dữ liệu của mình
Quá trình này khá giống với ví dụ trước
Đây là mã thực hiện theo các bước được mô tả ở trên cho cả ba thuật toán hồi quy >>> 6Bạn đã sử dụng tập dữ liệu thử nghiệm và đào tạo của mình để khớp với ba mô hình và đánh giá hiệu suất của chúng. Thước đo độ chính xác thu được với 07 là hệ số xác định. Nó có thể được tính toán với tập huấn luyện hoặc tập kiểm tra. Tuy nhiên, như bạn đã biết, điểm đạt được với bộ kiểm tra thể hiện ước tính không thiên vị về hiệu suấtNhư đã đề cập trong tài liệu, bạn có thể cung cấp các đối số tùy chọn cho 26, 27 và 28. 27 và 28 sử dụng tham số 79 vì lý do giống như 7. để đối phó với tính ngẫu nhiên trong các thuật toán và đảm bảo khả năng tái tạoĐối với một số phương pháp, bạn cũng có thể cần nhân rộng tính năng. Trong những trường hợp như vậy, bạn nên khớp các bộ chia tỷ lệ với dữ liệu đào tạo và sử dụng chúng để chuyển đổi dữ liệu thử nghiệm Loại bỏ các quảng cáoVí dụ phân loạiBạn có thể sử dụng 7 để giải các bài toán phân loại giống như cách bạn làm để phân tích hồi quy. Trong học máy, các vấn đề phân loại liên quan đến việc đào tạo một mô hình để áp dụng nhãn hoặc phân loại các giá trị đầu vào và sắp xếp tập dữ liệu của bạn thành các danh mụcTrong hướng dẫn Hồi quy logistic trong Python, bạn sẽ tìm thấy một ví dụ về tác vụ nhận dạng chữ viết tay. Ví dụ này cung cấp một minh chứng khác về việc chia dữ liệu thành các tập huấn luyện và kiểm tra để tránh sai lệch trong quá trình đánh giá Các chức năng xác thực khácGói 0 cung cấp rất nhiều chức năng liên quan đến lựa chọn và xác nhận mô hình, bao gồm các tính năng sau
Xác thực chéo là một tập hợp các kỹ thuật kết hợp các phép đo hiệu suất dự đoán để có được các ước tính mô hình chính xác hơn Một trong những phương pháp xác thực chéo được sử dụng rộng rãi là xác thực chéo k-fold. Trong đó, bạn chia tập dữ liệu của mình thành k (thường là năm hoặc mười) tập con hoặc tập hợp có kích thước bằng nhau, sau đó thực hiện quy trình đào tạo và kiểm tra k lần. Mỗi lần, bạn sử dụng một nếp gấp khác làm tập kiểm tra và tất cả các nếp gấp còn lại làm tập huấn luyện. Điều này cung cấp k phép đo hiệu suất dự đoán và sau đó bạn có thể phân tích giá trị trung bình và độ lệch chuẩn của chúng Bạn có thể triển khai xác thực chéo với 41, 42, 43 và một số lớp và hàm khác từ 0Một đường cong học tập, đôi khi được gọi là một đường cong đào tạo, cho thấy điểm dự đoán của các tập hợp đào tạo và xác thực phụ thuộc như thế nào vào số lượng mẫu đào tạo. Bạn có thể sử dụng 45 để có được sự phụ thuộc này, điều này có thể giúp bạn tìm kích thước tối ưu của tập huấn luyện, chọn siêu tham số, so sánh các mô hình, v.v.Điều chỉnh siêu tham số, còn được gọi là tối ưu hóa siêu tham số, là quá trình xác định tập hợp siêu tham số tốt nhất để xác định mô hình máy học của bạn. 0 cung cấp cho bạn một số tùy chọn cho mục đích này, bao gồm 47, 48, 49 và các tùy chọn khác. Việc chia tách dữ liệu của bạn cũng rất quan trọng đối với việc điều chỉnh siêu tham sốPhần kết luậnBây giờ bạn đã biết tại sao và cách sử dụng 7 từ 2. Bạn đã học được rằng, để ước tính khách quan về hiệu suất dự đoán của các mô hình máy học, bạn nên sử dụng dữ liệu chưa được sử dụng để điều chỉnh mô hình. Đó là lý do tại sao bạn cần chia tập dữ liệu của mình thành tập huấn luyện, kiểm tra và trong một số trường hợp, tập hợp con xác thựcTrong hướng dẫn này, bạn đã học cách
Bạn cũng đã thấy rằng mô-đun 0 cung cấp một số công cụ khác để xác thực mô hình, bao gồm xác thực chéo, đường cong học tập và điều chỉnh siêu tham sốNếu bạn có câu hỏi hoặc ý kiến, xin vui lòng đặt chúng trong phần bình luận bên dưới Đánh dấu là đã hoàn thành Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Tách bộ dữ liệu bằng scikit-learning và train_test_split() 🐍 Thủ thuật Python 💌 Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python Gửi cho tôi thủ thuật Python » Giới thiệu về Mirko Stojiljković Mirko có bằng tiến sĩ. D. trong Kỹ thuật cơ khí và làm việc như một giáo sư đại học. Anh là một Pythonista, người áp dụng các phương pháp tối ưu hóa kết hợp và máy học để hỗ trợ ra quyết định trong lĩnh vực năng lượng » Thông tin thêm về MirkoMỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là Aldren Geir Arne Joanna Gia-cốp Kyle Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Bậc thầy Kỹ năng Python trong thế giới thực Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Bạn nghĩ sao? Đánh giá bài viết này Tweet Chia sẻ Chia sẻ EmailBài học số 1 hoặc điều yêu thích mà bạn đã học được là gì? Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. Nhận các mẹo để đặt câu hỏi hay và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi Làm cách nào để chia tập dữ liệu thành tập huấn luyện và kiểm tra bằng Python?Sử dụng phân tách kiểm tra đào tạo trong Python . Tải Tập dữ liệu Sắp xếp dữ liệu thành các tính năng và mục tiêu Chia dữ liệu thành các tập huấn luyện và kiểm tra Nhập mô hình bạn muốn sử dụng Tạo một thể hiện của mô hình Huấn luyện mô hình trên dữ liệu Dự đoán nhãn của dữ liệu thử nghiệm chưa nhìn thấy Tham số vs Siêu tham số Chúng ta có thể sử dụng cùng một tập làm tập huấn luyện và tập kiểm tra không?Không sử dụng cùng một tập dữ liệu để đào tạo mô hình và đánh giá mô hình . Nếu bạn muốn xây dựng một mô hình học máy đáng tin cậy, bạn cần chia tập dữ liệu của mình thành các tập huấn luyện, xác thực và kiểm tra. Nếu không, kết quả của bạn sẽ bị sai lệch và cuối cùng bạn sẽ có ấn tượng sai về độ chính xác của mô hình tốt hơn.
Bạn sẽ tạo tập dữ liệu hình ảnh thử nghiệm và huấn luyện như thế nào?Các bước tạo thư mục cho ảnh. Tạo thư mục class_A và class_B làm thư mục con bên trong thư mục đào tạo và xác thực . Đặt 80% ảnh class_A vào đường dẫn thư mục data/train/class_A. Đặt 20% hình ảnh loại A vào đường dẫn thư mục `data/validation/class A. Đặt 80% ảnh class_B vào đường dẫn thư mục data/train/class_B.
Tập huấn luyện và tập kiểm tra là gì Giải thích bằng các ví dụ?Thời gian ước tính. 8 phút. Mô-đun trước đã giới thiệu ý tưởng chia tập dữ liệu của bạn thành hai tập hợp con. tập huấn luyện— tập hợp con để huấn luyện một mô hình. tập kiểm tra—một tập hợp con để kiểm tra mô hình được đào tạo . |