Hướng dẫn data validation python w3schools - xác thực dữ liệu python w3schools


Trên trang này, W3Schools.com hợp tác với Học viện Khoa học Dữ liệu NYC, để cung cấp nội dung đào tạo kỹ thuật số cho sinh viên của chúng tôi.


Xác thực chéo

Khi điều chỉnh các mô hình, chúng tôi đang nhắm đến việc tăng hiệu suất mô hình tổng thể trên dữ liệu chưa thấy. Điều chỉnh siêu phân tích có thể dẫn đến hiệu suất tốt hơn nhiều trên các bộ thử nghiệm. Tuy nhiên, tối ưu hóa các tham số cho bộ thử nghiệm có thể dẫn đến rò rỉ thông tin khiến mô hình tạo thành công suất tồi tệ hơn trên dữ liệu chưa từng thấy. Để sửa chữa cho điều này, chúng ta có thể thực hiện xác thực chéo.

Để hiểu rõ hơn về CV, chúng tôi sẽ thực hiện các phương thức khác nhau trên bộ dữ liệu IRIS. Trước tiên, chúng tôi tải vào và tách dữ liệu.

from sklearn import datasets

X, y = datasets.load_iris(return_X_y=True)

Có nhiều phương pháp để xác nhận chéo, chúng tôi sẽ bắt đầu bằng cách xem xét xác thực chéo K-gấp K.


K-Fold

Dữ liệu đào tạo được sử dụng trong mô hình được chia, thành số k của các bộ nhỏ hơn, được sử dụng để xác nhận mô hình. Mô hình sau đó được đào tạo trên các nếp gấp K-1 của bộ đào tạo. Các nếp gấp còn lại sau đó được sử dụng như một bộ xác thực để đánh giá mô hình.

Vì chúng tôi sẽ cố gắng phân loại các loài hoa mống mắt khác nhau, chúng tôi sẽ cần nhập một mô hình phân loại, cho bài tập này, chúng tôi sẽ sử dụng DecisionTreeClassifier. Chúng tôi cũng sẽ cần nhập các mô -đun CV từ sklearn.

from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import KFold, cross_val_score

Với dữ liệu được tải, bây giờ chúng tôi có thể tạo và phù hợp với một mô hình để đánh giá.

clf = DecisionTreeClassifier(random_state=42)

Bây giờ chúng ta hãy đánh giá mô hình của chúng tôi và xem cách nó thực hiện trên mỗi lần K.

k_folds = KFold(n_splits = 5)

scores = cross_val_score(clf, X, y, cv = k_folds)

Đó cũng là tốt để xem CV thực hiện tổng thể bằng cách lấy trung bình điểm số cho tất cả các nếp gấp.

Thí dụ

Chạy CV K-Fold:

Từ các bộ dữ liệu nhập Sklearn từ Sklearn.Tree Nhập RANSTREECLASSIFIER từ SKLEARN.MODEL_SELECTERECT KIND
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import KFold, cross_val_score

X, y = bộ dữ liệu.load_iris (return_x_y = true)

CLF = Ra quyết định (Random_state = 42)

k_fold = k fold (n_splits = 5)

Điểm số = Cross_Val_Score (CLF, X, Y, CV = K_Fold)

In ("Điểm xác thực chéo:", điểm) in ("Điểm CV trung bình:", Điểm.Mean ()) In ("Số lượng điểm CV được sử dụng trung bình:", LEN (điểm))
print("Average CV Score: ", scores.mean())
print("Number of CV Scores used in Average: ", len(scores))

Chạy ví dụ »


QUẢNG CÁO


Phân tầng K-Fold

Trong trường hợp các lớp bị mất cân bằng, chúng ta cần một cách để giải thích sự mất cân bằng trong cả hai bộ tàu và xác thực. Để làm như vậy, chúng ta có thể phân tầng các lớp đích, có nghĩa là cả hai bộ sẽ có tỷ lệ bằng nhau của tất cả các lớp.

Thí dụ

Chạy CV K-Fold:
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import StratifiedKFold, cross_val_score

X, y = bộ dữ liệu.load_iris (return_x_y = true)

CLF = Ra quyết định (Random_state = 42)

k_fold = k fold (n_splits = 5)

Điểm số = Cross_Val_Score (CLF, X, Y, CV = K_Fold)

In ("Điểm xác thực chéo:", điểm) in ("Điểm CV trung bình:", Điểm.Mean ()) In ("Số lượng điểm CV được sử dụng trung bình:", LEN (điểm))
print("Average CV Score: ", scores.mean())
print("Number of CV Scores used in Average: ", len(scores))

Chạy ví dụ »

QUẢNG CÁO


Phân tầng K-Fold

Trong trường hợp các lớp bị mất cân bằng, chúng ta cần một cách để giải thích sự mất cân bằng trong cả hai bộ tàu và xác thực. Để làm như vậy, chúng ta có thể phân tầng các lớp đích, có nghĩa là cả hai bộ sẽ có tỷ lệ bằng nhau của tất cả các lớp.

Thí dụ

Chạy CV K-Fold:

Từ các bộ dữ liệu nhập Sklearn từ Sklearn.Tree Nhập RANSTREECLASSIFIER từ SKLEARN.MODEL_SELECTERECT KIND
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import LeaveOneOut, cross_val_score

X, y = bộ dữ liệu.load_iris (return_x_y = true)

CLF = Ra quyết định (Random_state = 42)

k_fold = k fold (n_splits = 5)

Điểm số = Cross_Val_Score (CLF, X, Y, CV = K_Fold)

In ("Điểm xác thực chéo:", điểm) in ("Điểm CV trung bình:", Điểm.Mean ()) In ("Số lượng điểm CV được sử dụng trung bình:", LEN (điểm))
print("Average CV Score: ", scores.mean())
print("Number of CV Scores used in Average: ", len(scores))

Chạy ví dụ »

QUẢNG CÁO

Phân tầng K-Fold


Trong trường hợp các lớp bị mất cân bằng, chúng ta cần một cách để giải thích sự mất cân bằng trong cả hai bộ tàu và xác thực. Để làm như vậy, chúng ta có thể phân tầng các lớp đích, có nghĩa là cả hai bộ sẽ có tỷ lệ bằng nhau của tất cả các lớp.

Từ các bộ dữ liệu nhập Sklearn từ Sklearn.Tree Nhập RANSTREECLASSIFIER từ sklearn.model_selection nhập Stratifiedkfold, Cross_Val_Score

Thí dụ

Chạy CV K-Fold:

Từ các bộ dữ liệu nhập Sklearn từ Sklearn.Tree Nhập RANSTREECLASSIFIER từ SKLEARN.MODEL_SELECTERECT KIND
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import LeavePOut, cross_val_score

X, y = bộ dữ liệu.load_iris (return_x_y = true)

CLF = Ra quyết định (Random_state = 42)

k_fold = k fold (n_splits = 5)

Điểm số = Cross_Val_Score (CLF, X, Y, CV = K_Fold)

In ("Điểm xác thực chéo:", điểm) in ("Điểm CV trung bình:", Điểm.Mean ()) In ("Số lượng điểm CV được sử dụng trung bình:", LEN (điểm))
print("Average CV Score: ", scores.mean())
print("Number of CV Scores used in Average: ", len(scores))

Chạy ví dụ »

QUẢNG CÁO


Xáo trộn chia tay

Không giống như KFold, ShuffleSplit bỏ ra một tỷ lệ phần trăm dữ liệu, không được sử dụng trong các bộ tàu hoặc bộ xác thực.Để làm như vậy, chúng ta phải quyết định kích thước tàu và thử nghiệm là gì, cũng như số lượng chia tách.

Thí dụ

Chạy Shuffle Split CV:

Từ các bộ dữ liệu nhập Sklearn từ Sklearn.Tree Nhập RANSTREECLASSIFIER từ sklearn.model_selection nhập shufflesplit, Cross_val_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import ShuffleSplit, cross_val_score

X, y = bộ dữ liệu.load_iris (return_x_y = true)

CLF = Ra quyết định (Random_state = 42)

SS = Shufflesplit (Train_Size = 0.6, test_size = 0,3, n_splits = 5)

Điểm số = Cross_Val_Score (CLF, X, Y, CV = SS)

In ("Điểm xác thực chéo:", điểm) in ("Điểm CV trung bình:", Điểm.Mean ()) In ("Số lượng điểm CV được sử dụng trung bình:", LEN (điểm))
print("Average CV Score: ", scores.mean())
print("Number of CV Scores used in Average: ", len(scores))

Chạy ví dụ »


Kết thúc ghi chú

Đây chỉ là một vài trong số các phương pháp CV có thể được áp dụng cho các mô hình.Có nhiều lớp xác thực chéo hơn, với hầu hết các mô hình có lớp riêng.Kiểm tra xác thực chéo của Sklearns để biết thêm các tùy chọn CV.