Hướng dẫn dùng shuffling python
Hàm shuffle() trong Python sắp xếp các item trong list một cách ngẫu nhiên. Cú pháp của shuffle() trong Python: Ghi chú: Hàm này không có thể truy cập trực tiếp, vì thế chúng ta cần import random module và sau đó chúng ta cần gọi hàm này bởi sử dụng đối tượng random. Chi tiết về tham số:
Ví dụ sau minh họa cách sử dụng của hàm shuffle() trong Python. import random list = [20, 5, 10, 15, 50]; random.shuffle(list) print ("List sau khi bị xáo trộn là: ", list) random.shuffle(list) print ("List sau khi bị xáo trộn là: ", list) Chạy chương trình Python trên sẽ cho kết quả: List sau khi bị xáo trộn là: [10, 15, 50, 20, 5] List sau khi bị xáo trộn là: [20, 5, 10, 50, 15] Mục lục bài viết:
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 mình, điều cần thiết là quá trình này phải không thiên vị. Sử dụng train_test_split() từ thư viện khoa học dữ liệu scikit-learning, bạn có thể chia tập dữ liệu của mình thành các tập con để 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. 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ừ sklearn.model_selection. 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à việc 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 các yếu tố dự đoán) với các đầu ra nhất định (các biến phụ thuộc hoặc các phản hồi). Cách bạn đo độ chính xác của mô hình phụ thuộc vào loại vấn đề 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 các hệ số xác định, lỗi root-mean-square, sai số tuyệt đối trung bình, hoặc số lượng tương tự. Đối với các bài toán phân loại, bạn thường áp dụng độ chính xác, độ chính xác và độ 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 thấy giải thích chi tiết từ Statistics By Jim, Quora, và nhiều tài nguyê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 của bạn và xác nhận 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 mà bạn đã sử dụng để đào tạo. Bạn cần đánh giá mô hình với 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 chia nhỏ tập dữ liệu của mình trước khi sử dụng. Các tập tào tạo, xác thực, kiểm traTách tập dữ liệu của bạn là điều cần thiết để đá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, chỉ cần chia ngẫu nhiên tập dữ liệu của bạn thành ba tập con là đủ:
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 tham số, bạn chỉ có thể làm việc với các tập đào tạo và kiểm tra. Underfitting và OverfittingViệc chia nhỏ 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, được gọi là thiếu trang bị và trang bị thừa hay không:
Bạn có thể tìm thấy giải thích chi tiết hơn về trang bị thiếu và trang bị thừa trong Hồi quy tuyến tính bằng Python. Điều kiện tiên quyết để sử dụng train_test_split()Bây giờ bạn hiểu sự cần thiết phải chia nhỏ tập dữ liệu để thực hiện đánh giá mô hình không thiên vị và xác định trang bị thiếu hoặc trang bị quá mức, bạn đã sẵn sàng tìm hiểu cách chia 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 Bạn có thể cài đặt sklearn với pip install:
Nếu bạn sử dụng Anaconda, thì có thể 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, sau đó bạn có thể cài đặt
Bạn cũng sẽ cần NumPy, nhưng bạn không cần phải cài đặt riêng nó. Bạn nên sử dụng nó với Ứng dụng của train_test_split()Bạn
cần import
Bây giờ bạn đã import cả hai rồi, bạn có thể sử dụng chúng để chia dữ liệu thành các tập đào tạo và tập kiểm tra. Bạn sẽ phân chia đầu vào và đầu ra cùng một lúc, chỉ với một lệnh gọi hàm duy nhất. Với
Trong các ứng dụng học máy được giám sát, bạn thường sẽ làm việc với hai trình tự như sau:
Bây giờ đã
đến lúc thử chia nhỏ 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. Tập dữ liệu sẽ chứa các đầu vào trong mảng hai chiều
Để lấy dữ liệu của bạn, bạn sử dụng arange(), nó rất thuận tiện để tạo mảng dựa trên phạm vi số. Bạn cũng sử dụng .reshape() để sửa đổi hình dạng của mảng được trả về Bạn có thể tách cả tập dữ
liệu đầu vào và đầu ra bằng một lệnh gọi hàm duy nhất:
Cho hai chuỗi, như
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 nhỏ 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 hàm. Tuy nhiên, đây thường không phải là điều bạn muốn. Đôi khi, để làm cho các kiểm tra của bạn có thể tái tạo, bạn cần một phân tách 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ố Trong ví dụ trước, bạn đã sử dụng tập dữ liệu có mười hai quan sát (hàng) và nhận được một mẫu đào tạo có chín hàng và một mẫu kiểm tra có ba hàng. Đó là bởi vì bạn đã không chỉ định kích thước mong muốn của các tập đào tạo và kiểm tra. Theo mặc định, 25% mẫu được chỉ định cho tập kiểm tra. Tỷ lệ này nói chung là ổn 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 kích thước của tập kiểm tra (hoặc đào tạo) một cách rõ ràng và đôi khi bạn thậm chí sẽ muốn kiểm tra với các giá trị khác nhau. Bạn có thể làm điều đó với các tham số Sửa đổi code để bạn có thể chọn
kích thước của tập kiểm tra và nhận được kết quả có thể lặp lại:
Với thay đổi này, bạn sẽ nhận được một kết quả khác với trước đây. Trước đó, bạn đã có một tập đào tạo với chín mục và bộ kiểm tra với ba mục. Bây giờ, nhờ đối số Có một sự khác biệt rất quan trọng 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 hàm. Điều này là do bạn đã sửa trình tạo số ngẫu nhiên với Hình dưới đây cho thấy những gì đang xảy ra khi bạn gọi Cá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 đà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
Bây giờ Phân chia phân tầng là mong muốn trong một số trường hợp, 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 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 chia ngẫu nhiên bằng
Bây giờ bạn có một phần tách trong đó hai phần ba mẫu đầu tiên trong mảng Học máy được giám sát với train_test_split()Bây giờ đã đến lúc 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 để giải quyết một vấn đề hồi quy nhỏ. Bạn sẽ học 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 để hồi quy tuyến tính. Như mọi khi, bạn sẽ bắt đầu bằng cách import các gói, hàm hoặc lớp cần thiết. Bạn sẽ cần NumPy LinearRegression và
Bây giờ bạn đã import mọi thứ mình cần, bạn có thể tạo hai mảng nhỏ
Tập dữ liệu của bạn có hai mươi quan sát hoặc cặp Bây giờ bạn có thể sử dụng tập đào tạo để phù hợp với mô hình:
Mặc dù bạn có thể sử dụng
.score() trả về hệ số xác định, hoặc R ², cho dữ liệu được truyền. Tối đa của nó là Trên biểu đồ nó trông giống như sau: Các chấm màu xanh lá cây đại diện cho các cặp Các chấm trắng đại diện cho tập 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ụ về 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 tập dữ liệu giá nhà nổi tiếng ở Boston, được đưa vào trong tập dữ liệu Đầu tiên, ta cần import
Bây giờ bạn đã nhập cả hai hàm, bạn có thể lấy dữ liệu để làm việc:
Như bạn có thể thấy,
Bước tiếp theo là tách dữ liệu theo cách giống như trước:
Bâ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 Khi bạn làm việc với
các tập dữ liệu lớn hơn, thường sẽ thuận tiện hơn khi vượt qua kích thước đào tạo hoặc kiểm tra dưới dạng một tỷ lệ. Cuối cùng, bạn có thể sử dụng tập đào tạo (
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:
Bạn đã sử dụng tập 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 với Như đã đề cập trong tài
liệu, bạn có thể cung cấp các đối số tùy chọn tới Đối với một số phương thức, bạn cũng có thể cần mở rộng tính năng. Trong những trường hợp như vậy, bạn nên điều chỉnh tỷ lệ với dữ liệu đào tạo và sử dụng chúng để biến đổi dữ liệu kiểm tra. Ví dụ về phân loạiBạn có thể sử dụng Trong hướng dẫn Hồi quy logistic với 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 nhỏ dữ liệu thành các tập đà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 thực khácGói sklearn.model_selection cung cấp rất nhiều chức năng liên quan đến việc lựa chọn và xác thực mô hình, bao gồm những điều 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 thước đo về 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- lần. 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 các phần gấp (fold), 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 nhau làm tập kiểm tra và tất cả các nếp gấp còn lại làm bộ đào tạo. Điều này cung cấp k số đo về 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ể thực hiện qua xác nhận với KFold, StratifiedKFold, LeaveOneOut, và một vài lớp khác và các hàm từ Một đường cong học tập, đôi khi được gọi là một đường cong đào tạo, cho biết cách số điểm dự đoán của đào tạo và xác nhận bộ phụ thuộc vào số lượng mẫu đào tạo. Bạn có thể sử dụng learning_curve() để có được sự phụ thuộc này, có thể giúp bạn tìm kích thước tối ưu của tập đào tạo, 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 bộ siêu tham số tốt nhất để xác định mô hình
học máy của bạn. Phần kết luậnBây giờ bạn đã biết tại sao và làm thế nào để sử dụng Trong hướng dẫn này, bạn đã học cách:
Bạn cũng đã thấy rằng module Copied !!! |