Hướng dẫn how do you split a dataset in python? - làm thế nào để bạn chia một tập dữ liệu trong python?
Một trong những khía cạnh chính 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 của bạn, điều cần thiết là quá trình này không thiên vị. Sử dụng 7 Từ thư viện dữ liệu Scikit-learn, bạn có thể chia bộ dữ liệu của mình thành các tập hợp con nhằm giảm thiểu khả năng sai lệch trong quá trình đánh giá và xác nhận của bạn. 7 from the data science library
scikit-learn, you can split your dataset into subsets that minimize the potential for bias in your evaluation and validation process. 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ừ 0.Tầm quan trọng của việc phân tách dữ liệuHọc máy được giám sát là về việc tạo 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 dự đoán) cho các đầu ra đã cho (các biến phụ thuộc hoặc phản hồi).predictors) to the given outputs (dependent variables, or responses). Cách bạn đo độ chính xác của mô hình của bạn phụ thuộc vào loại vấn đề 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, lỗi bình phương trung bình gốc, lỗi tuyệt đối trung bình hoặc số lượng tương tự. Đối với các vấn đề phân loại, bạn thường áp dụng độ 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ó thể chấp nhận được đo độ chính xác thay đổi từ trường này sang trường khác. Bạn có thể tìm thấy những giải thích chi tiết từ số liệu thống kê của Jim, Quora và nhiều tài nguyên khác. Điều quan trọng nhất để hiểu là bạn thường cần đánh giá không thiên vị để 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 của bạn và xác nhận mô hình.unbiased evaluation to properly use these measures, assess the predictive performance of your model, and validate the model. Điều này có nghĩa là bạn có thể đánh giá hiệu suất dự đoán của một mô hình với cùng một dữ liệu bạn đã sử dụng để đào tạo. Bạn cần đánh giá mô hình với dữ liệu mới đã được mô hình nhìn thấy trước đây. Bạn có thể thực hiện điều đó bằng cách phân tách bộ dữ liệu của bạn trước khi bạn sử dụng nó.fresh data that hasn’t been seen by the model before. You can accomplish that by splitting your dataset before you use it. Đào tạo, xác nhận và bộ kiểm traChia dữ liệu của bạn là điều cần thiết cho việc đánh giá không thiên vị về hiệu suất dự đoán. Trong hầu hết các trường hợp, nó đủ để chia dữ liệu của bạn một cách ngẫu nhiên thành ba tập hợp con:
Trong những trường hợp ít phức tạp hơn, khi bạn không phải điều chỉnh các siêu âm, bạn sẽ ổn khi chỉ làm việc với các bộ đào tạo và kiểm tra. Thiếu hụt và quá mứcViệc chia một bộ dữ liệu cũng có thể rất quan trọng để phát hiện nếu mô hình của bạn gặp phải một trong hai vấn đề rất phổ biến, được gọi là thiếu hụt và quá mức:
Bạn có thể tìm thấy một lời giải thích chi tiết hơn về thiếu hụt và quá mức trong hồi quy tuyến tính trong Python. Điều kiện tiên quyết cho việc 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 chia một bộ dữ liệu để thực hiện đánh giá mô hình không thiên vị và xác định thiếu hụt hoặc quá mức, bạn đã sẵn sàng tìm hiểu cách phân chia bộ dữ liệu của riêng bạn. Bạn sẽ sử dụng phiên bản 0.23,1 của Scikit-learn hoặc 2. Nó có nhiều gói cho khoa học dữ liệu và học máy, 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à chức năng 7.scikit-learn, or 2. It has many packages for
data science and machine learning, but for this tutorial you’ll focus on the 3 package, specifically on the function 7. Bạn có thể cài đặt 2 với 6:
Nếu bạn sử dụng Anaconda, thì có lẽ bạn đã cài đặt nó. 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 sẽ nhận được nó cùng với 2 nếu bạn đã cài đặt nó. Nếu bạn muốn làm mới kiến thức numpy của mình, thì hãy xem tài liệu chính thức hoặc kiểm tra xem MA, không có vòng lặp: Lập trình mảng với Numpy.Áp dụng $ conda install -c anaconda scikit-learn=0.23 7Bạn cần nhập 7 và Numpy trước khi bạn 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 2:>>>
Bây giờ bạn đã nhập cả, bạn có thể sử dụng chúng để chia dữ liệu thành các bộ đào tạo và bộ 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 cuộc gọi chức năng duy nhất. Với 7, bạn cần cung cấp các chuỗi mà bạn muốn chia 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:
Trong các ứng dụng học máy được giám sát, bạn thường làm việc với hai chuỗi như vậy:
Bây giờ, thời gian để thử phân tách dữ liệu! Bạn sẽ bắt đầu bằng cách tạo một bộ dữ liệu đơn giản để làm việc. Bộ dữ liệu sẽ chứa các đầu vào trong mảng hai chiều 5 và đầu ra trong mảng một chiều 6:>>>
Bây giờ bạn đã nhập cả, bạn có thể sử dụng chúng để chia dữ liệu thành các bộ đào tạo và bộ 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 cuộc gọi chức năng duy nhất. >>>
Một mảng hai chiều với đầu vào ( 5)Một mảng một chiều với đầu ra ( 6) 7 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: 8 là số xác định kích thước của tập huấn luyện. Nếu bạn cung cấp 9, thì nó phải nằm giữa 0 và 1 và sẽ xác định tỷ lệ của bộ dữ liệu được sử dụng để thử nghiệm. Nếu bạn cung cấp 2, thì nó sẽ đại diện cho tổng số mẫu đào tạo. Giá trị mặc định là 3. 4 là số xác định kích thước của tập kiểm tra. Nó rất giống với 8. Bạn nên cung cấp 8 hoặc 4. Nếu không được đưa ra, thì chia sẻ mặc định của bộ dữ liệu sẽ được sử dụng để thử nghiệm là 8 hoặc 25 phần trăm.>>>
Với sự thay đổi này, bạn nhận được một kết quả khác với trước đây. Trước đó, bạn đã có một bộ đào tạo với chín mục và bộ thử nghiệm với ba mục. Bây giờ, nhờ cuộc tranh luận 8, bộ đào tạo có tám mục và bộ thử nghiệm có bốn mục. Bạn có thể nhận được kết quả tương tự với 9 vì 33 phần trăm trong số mười hai là khoảng bốn.Có một sự khác biệt rất quan trọng hơn 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 đã cố định trình tạo số ngẫu nhiên với 0.Hình dưới đây cho thấy những gì diễn ra khi bạn gọi 7:Các mẫu của bộ dữ liệu được xáo trộn ngẫu nhiên và sau đó chia thành các bộ đào tạo và kiểm tra theo kích thước bạn đã xác định. Bạn có thể thấy rằng 6 có sáu số không và sáu cái. Tuy nhiên, bộ thử nghiệm có ba số không trong bốn mục. Nếu bạn muốn (xấp xỉ) giữ tỷ lệ của các giá trị 6 thông qua các bộ đào tạo và kiểm tra, thì hãy vượt qua 4. Điều này sẽ cho phép phân tách phân tầng:>>>
Bây giờ 9 và 1 có cùng tỷ lệ số không và các số không như mảng 6 ban đầu.Các phân tách phân tầng được mong muốn trong một số trường hợp, như khi bạn phân loại một bộ dữ liệu mất cân bằng, một bộ dữ liệu có sự khác biệt đáng kể về số lượng mẫu thuộc về các lớp khác nhau.imbalanced dataset, a dataset with a significant difference in the number of samples that belong to distinct classes. Cuối cùng, bạn có thể tắt dữ liệu xáo trộn và phân chia ngẫu nhiên với 8:>>>
Bây giờ bạn có một sự phân chia trong đó hai phần ba mẫu đầu tiên trong các mảng 5 và 6 ban đầu được gán cho bộ đào tạo và thứ ba cuối cùng cho bộ thử nghiệm. Không xáo trộn. Không ngẫu nhiên.Học máy được giám sát với $ conda install -c anaconda scikit-learn=0.23 7Bây giờ, thời gian để thấy 7 hành động khi giải quyết các vấn đề học tập 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ại.Ví 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 được cho đến nay để giải quyết một vấn đề hồi quy nhỏ. Bạn có thể học cách tạo bộ dữ liệu, chia chúng thành các tập hợp tập luyện và kiểm tra và sử dụng chúng cho hồi quy tuyến tính. Như mọi khi, bạn sẽ bắt đầu bằng cách nhập các gói, chức năng hoặc lớp cần thiết. Bạn sẽ cần Numpy, 4 và 7:>>>
Bây giờ bạn đã nhập mọi thứ bạn cần, bạn có thể tạo hai mảng nhỏ, 5 và 6, để thể hiện các quan sát và sau đó chia chúng thành các bộ đào tạo và thử nghiệm giống như bạn đã làm trước đây:>>> 0Bộ dữ liệu của bạn có hai mươi quan sát, hoặc ________ 35 -________ 36 cặp. Bạn chỉ định đối số 00, vì vậy bộ dữ liệu được chia thành một tập huấn luyện với mười hai quan sát và một bộ thử nghiệm với tám quan sát.Bây giờ bạn có thể sử dụng bộ đào tạo để phù hợp với mô hình: >>> 1 4 tạo ra đối tượng đại diện cho mô hình, trong khi 02 đào tạo, hoặc phù hợp với mô hình và trả về nó. Với hồi quy tuyến tính, phù hợp với mô hình có nghĩa là xác định các giá trị đánh chặn tốt nhất ( 03) và độ dốc (____104) của đường hồi quy.Mặc dù bạn có thể sử dụng 5 và 9 để kiểm tra mức độ phù hợp, nhưng đây không phải là một thực hành tốt nhất. Mộ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, phù hợp càng tốt. Trong trường hợp này, dữ liệu đào tạo mang lại hệ số cao hơn một chút. Tuy nhiên, R² được tính toán với dữ liệu thử nghiệm là một thước đo không thiên vị về hiệu suất dự đoán mô hình của bạn.coefficient of determination, or R², for the data passed. Its maximum is 08. The higher the
R² value, the better the fit. In this case, the training data yields a slightly higher coefficient. However, the R² calculated with test data is an unbiased measure of your model’s prediction performance.Đây là cách nó trông trên một biểu đồ: Các chấm màu xanh lá cây đại diện cho ________ 35 -____ 36 cặp đượ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ả của sự phù hợp mô hình: đánh chặn và độ dốc. Vì vậy, nó chỉ phản ánh các vị trí của các chấm màu xanh lá cây. Các chấm trắng đại diện cho bộ thử nghiệm. Bạn sử dụng chúng để ước tính hiệu suất của mô hình (dò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 bộ 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à Boston nổi tiếng, đượ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ể lấy 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ể khiến dữ liệu hoạt động với: >>> 4Như bạn có thể thấy, 12 với đối số 16 trả về một tuple với hai mảng numpy:
Bước tiếp theo là phân chia dữ liệu giống như trước: >>> 5Bây giờ bạn có các bộ đào tạo và kiểm tra. Dữ liệu đào tạo được chứa trong 5 và 9, trong khi dữ liệu để thử nghiệm là trong 7 và 1.Khi bạn làm việc với các bộ dữ liệu lớn hơn, nó thường thuận tiện hơn để 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 các 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 đào tạo.Cuối cùng, bạn có thể sử dụng tập huấn luyện ( 5 và 9) để phù hợp với mô hình và bộ thử nghiệm ( 7 và 1) để đánh giá mô hình không thiên vị. 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 bạn:
Quá trình này khá giống với ví dụ trước:
Ở đây, mã 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 các bộ dữ liệu đào tạo và kiểm tra của mình để phù hợ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 bộ đào tạo hoặc thử nghiệm. Tuy nhiên, như bạn đã học, điểm số thu được với bộ kiểm tra thể hiện ước tính hiệu suất không thiên vị.Như đã đề 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ố 9 cho cùng một lý do mà 7 không: để đố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 tỷ lệ tính năng. Trong những trường hợp như vậy, bạn nên phù hợp với các bộ cân bằng dữ liệu đào tạo và sử dụng chúng để chuyển đổi dữ liệu kiểm tra. Ví dụ phân loạiBạn có thể sử dụng 7 để giải quyết các vấ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 vào hoặc phân loại các giá trị đầu vào và sắp xếp bộ dữ liệu của bạn thành các danh mục.classification
problems the same way you do for regression analysis. In machine learning, classification problems involve training a model to apply labels to, or classify, the input values and sort your dataset into categories.Trong hồi quy logistic hướng dẫn trong Python, bạn sẽ tìm thấy một ví dụ về một nhiệm vụ nhận dạng chữ viết tay. Ví dụ cung cấp một minh chứng khác về việc chia dữ liệu vào các bộ đào tạo và kiểm tra để tránh sai lệch trong quá trình đánh giá. Các chức năng xác nhận 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 thực mô hình, bao gồm cả những điều sau đây:
Xác thực chéo là một tập hợp các kỹ thuật kết hợp các biện pháp về hiệu suất dự đoán để 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 nhận chéo được sử dụng rộng rãi là xác thực chéo K gấp K. 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 hợp con, hoặc nếp gấp, có kích thước bằng nhau và sau đó thực hiện các 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 như bộ kiểm tra và tất cả các nếp gấp còn lại như tập huấn luyện. Điều này cung cấp các biện pháp K về hiệu suất dự đoán và sau đó bạn có thể phân tích độ lệch trung bình và độ lệch chuẩn của chúng.folds, of equal size and then perform the training and test procedures k times. Each time, you use a different fold as the test set and all the remaining folds as the training set. This provides k measures of predictive performance, and you can then analyze their mean and standard deviation. Bạn có thể thực hiện xác thực chéo với 41, 42, 43 và một vài lớp và chức năng khác từ 0.Một đường cong học tập, đôi khi được gọi là đường cong đào tạo, cho thấy điểm dự đoán của các bộ đào tạo và xác nhận phụ thuộc 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 thấy kích thước tối ưu của bộ đào tạo, chọn HyperParameter, so sánh các mô hình, v.v.Điều chỉnh hyperparameter, còn được gọi là tối ưu hóa hyperparameter, là quá trình xác định bộ siêu âm tốt nhất để xác định mô hình học máy 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. Chia dữ liệu của bạn cũng rất quan trọng để điều chỉnh siêu phân tích.
Sự kết luậnBây giờ bạn đã biết tại sao và làm thế nào để sử dụng 7 từ 2. Bạn đã học được rằng, để ước tính không thiên vị về hiệu suất dự đoán của các mô hình học máy, bạn nên sử dụng dữ liệu đã được sử dụng để phù hợp với mô hình. Đó là lý do tại sao bạn cần chia bộ dữ liệu của mình thành đào tạo, kiểm tra và trong một số trường hợp, các tập hợp xác thực. 7 from 2. You’ve learned that, for an unbiased estimation of the predictive performance of machine learning models, you should use data that hasn’t been used for model fitting. That’s why you need to split your dataset into training, test, and in some cases,
validation subsets.Trong hướng dẫn này, bạn đã học đượ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 đồng hồ.Nếu bạn có câu hỏi hoặc nhận xét, sau đó xin vui lòng đặt chúng vào phần bình luận bên dưới. Train_test_split trong Python là gì?Train_test_split () Hàm: Phương thức Train_Test_Split () được sử dụng để chia dữ liệu của chúng tôi thành các bộ đào tạo và thử nghiệm. Đầu tiên, chúng ta cần chia dữ liệu của mình thành các tính năng (x) và nhãn (y). DataFrame được chia thành X_Train, X_Test, Y_Train và Y_Test. Các bộ x_train và Y_Train được sử dụng để đào tạo và lắp mô hình.used to split our data into train and test sets. First, we need to divide our data into features (X) and labels (y). The dataframe gets divided into X_train, X_test, y_train, and y_test. X_train and y_train sets are used for training and fitting the model.
Phương pháp nào được sử dụng để phân chia dữ liệu?Phân chia dựa trên phương pháp của các điểm hỗ trợ (SP), ban đầu được phát triển để tìm các điểm đại diện tối ưu của phân phối liên tục. Chúng tôi điều chỉnh SP để lấy mẫu từ bộ dữ liệu bằng thuật toán hàng xóm gần nhất tuần tự.support points (SP), which was initially developed for finding the optimal representative points of a continuous distribution. We adapt SP for subsampling from a dataset using a sequential nearest neighbor algorithm.
Làm thế nào bạn nên chia một bộ dữ liệu thành các bộ thử nghiệm và đào tạo?Tỷ lệ phân chia phổ biến nhất là 80:20.Đó là 80% bộ dữ liệu đi vào tập huấn luyện và 20% bộ dữ liệu đi vào bộ thử nghiệm.Trước khi chia dữ liệu, hãy đảm bảo rằng bộ dữ liệu đủ lớn.Phân chia tàu/thử nghiệm hoạt động tốt với các bộ dữ liệu lớn.
Phân chia dữ liệu tốt nhất là gì?Tỷ lệ thường được sử dụng là 80:20, có nghĩa là 80% dữ liệu là để đào tạo và 20% để thử nghiệm.Các tỷ lệ khác như 70:30, 60:40 và thậm chí 50:50 cũng được sử dụng trong thực tế.Dường như không có hướng dẫn rõ ràng về tỷ lệ nào là tốt nhất hoặc tối ưu cho một bộ dữ liệu nhất định.80:20, which means 80% of the data is for training and 20% for testing. Other ratios such as 70:30, 60:40, and even 50:50 are also used in practice. There does not seem to be clear guidance on what ratio is best or optimal for a given dataset. |