Có nhiều cách để tạo ra một chuyến tàu/thử nghiệm và thậm chí các mẫu xác nhận.
Trường hợp 1: Cổ điển cách
from sklearn.model_selection import KFold
kf = KFold[n_splits=10, random_state=0]
y_hat_all = []
for train_index, test_index in kf.split[X, y]:
reg = RandomForestRegressor[n_estimators=50, random_state=0]
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
clf = reg.fit[X_train, y_train]
y_hat = clf.predict[X_test]
y_hat_all.append[y_hat]
0 mà không có bất kỳ tùy chọn nào:from sklearn.model_selection import train_test_split
train, test = train_test_split[df, test_size=0.3]
Trường hợp 2: Trường hợp của một bộ dữ liệu rất nhỏ [
from sklearn.model_selection import KFold
kf = KFold[n_splits=10, random_state=0]
y_hat_all = []
for train_index, test_index in kf.split[X, y]:
reg = RandomForestRegressor[n_estimators=50, random_state=0]
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
clf = reg.fit[X_train, y_train]
y_hat = clf.predict[X_test]
y_hat_all.append[y_hat]
Trường hợp 3a: Bộ dữ liệu không cân bằng cho mục đích phân loại. Theo trường hợp 1, đây là giải pháp tương đương:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split[X, y, stratify=y, test_size=0.3]
Trường hợp 3B: Bộ dữ liệu không cân bằng cho mục đích phân loại. Theo trường hợp 2, đây là giải pháp tương đương:
from sklearn.model_selection import StratifiedKFold
kf = StratifiedKFold[n_splits=10, random_state=0]
y_hat_all = []
for train_index, test_index in kf.split[X, y]:
reg = RandomForestRegressor[n_estimators=50, random_state=0]
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
clf = reg.fit[X_train, y_train]
y_hat = clf.predict[X_test]
y_hat_all.append[y_hat]
Trường hợp 4: Bạn cần tạo một bộ tàu/kiểm tra/xác nhận trên dữ liệu lớn để điều chỉnh siêu âm [tàu 60%, kiểm tra 20% và 20% VAL].
from sklearn.model_selection import train_test_split
X_train, X_test_val, y_train, y_test_val = train_test_split[X, y, test_size=0.6]
X_test, X_val, y_test, y_val = train_test_split[X_test_val, y_test_val, stratify=y, test_size=0.5]
Trong học máy, đó là một thực tế phổ biến để chia dữ liệu của bạn thành hai bộ khác nhau. Hai bộ này là bộ đào tạo và bộ thử nghiệm. Như tên cho thấy, bộ đào tạo được sử dụng để đào tạo mô hình và bộ thử nghiệm được sử dụng để kiểm tra độ chính xác của mô hình.training set and the testing set. As the name suggests, the training set is used for training the model and the testing set is used for testing the accuracy of the model. Trong hướng dẫn này, chúng tôi sẽ: Mặc dù đào tạo một mô hình học máy, chúng tôi đang cố gắng tìm một mẫu thể hiện tốt nhất tất cả các điểm dữ liệu với lỗi tối thiểu. Trong khi làm như vậy, hai lỗi phổ biến xuất hiện. Đây là quá mức và thiếu hụt.overfitting and underfitting. Underfit là khi mô hình thậm chí không thể đại diện cho các điểm dữ liệu trong bộ dữ liệu đào tạo. Trong trường hợp không phù hợp, bạn sẽ có độ chính xác thấp ngay cả khi thử nghiệm trên bộ dữ liệu đào tạo. Underfit thường có nghĩa là mô hình của bạn quá đơn giản để nắm bắt sự phức tạp của bộ dữ liệu.Tại sao chúng ta cần chia dữ liệu thành các bộ đào tạo và thử nghiệm?
Thiếu hụt
Quá mức
Việc quá mức là trường hợp khi mô hình của bạn đại diện cho bộ dữ liệu đào tạo hơi quá chính xác. Điều này có nghĩa là mô hình của bạn phù hợp quá chặt chẽ. Trong trường hợp quá mức, mô hình của bạn sẽ không thể thực hiện tốt trên dữ liệu chưa từng thấy mới. Quá mức thường là một dấu hiệu của mô hình quá phức tạp.
Cả hai đều phù hợp và không phù hợp là không mong muốn.undesirable.
Chúng ta có nên kiểm tra dữ liệu đào tạo không?
Lý tưởng nhất, bạn không nên kiểm tra dữ liệu đào tạo. Mô hình của bạn có thể quá mức tập huấn luyện và do đó sẽ thất bại trên dữ liệu mới.
Độ chính xác tốt trong bộ dữ liệu đào tạo có thể đảm bảo sự thành công của mô hình của bạn trên dữ liệu chưa từng thấy.
Đây là lý do tại sao nên giữ dữ liệu đào tạo tách biệt với dữ liệu thử nghiệm.
Ý tưởng cơ bản là sử dụng tập kiểm tra được đặt dưới dạng dữ liệu chưa từng thấy.
Sau khi đào tạo dữ liệu của bạn về bộ đào tạo, bạn nên kiểm tra mô hình của mình trên bộ thử nghiệm.
Nếu mô hình của bạn hoạt động tốt trên bộ thử nghiệm, bạn có thể tự tin hơn về mô hình của mình.
Tỷ lệ phân chia phổ biến nhất là 80:20. 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.
Hãy để có được bàn tay của chúng tôi bẩn với một số mã.
1. Nhập toàn bộ bộ dữ liệu
Chúng tôi đang sử dụng bộ dữ liệu nhà ở & nbsp; California cho toàn bộ hướng dẫn.
Hãy để bắt đầu với việc nhập dữ liệu vào khung dữ liệu bằng cách sử dụng & nbsp; gấu trúc.
Bạn có thể cài đặt gấu trúc bằng lệnh PIP:
Nhập bộ dữ liệu vào DataFrame Pandas bằng cách sử dụng:
import pandas as pd housing = pd.read_csv["/sample_data/california_housing.csv"] housing.head[]
Hãy để đối xử với cột trung bình_income là đầu ra [y].
Đồng thời chúng ta sẽ phải thả cột từ bộ dữ liệu để tạo thành vectơ đầu vào.
x=housing.drop['median_income',axis=1]
Bạn có thể sử dụng phương thức .head [] trong gấu trúc để xem đầu vào và đầu ra trông như thế nào.
Bây giờ chúng tôi đã sẵn sàng các vectơ đầu vào và đầu ra, chúng tôi có thể chia dữ liệu thành các bộ đào tạo và thử nghiệm.
2. Tách dữ liệu bằng Sklearn
Để phân chia dữ liệu, chúng tôi sẽ sử dụng Train_Test_Split từ Sklearn.train_test_split from sklearn.
Train_Test_Split phân phối ngẫu nhiên dữ liệu của bạn vào tập huấn luyện và kiểm tra theo tỷ lệ được cung cấp.
Hãy để xem cách nó được thực hiện trong Python.
x_train,x_test,y_train,y_test=train_test_split[x,y,test_size=0.2]
Ở đây chúng tôi đang sử dụng tỷ lệ phân chia là 80:20. Bộ dữ liệu thử nghiệm 20% được biểu thị bằng 0,2 ở cuối.
Để so sánh hình dạng của các bộ thử nghiệm và đào tạo khác nhau, hãy sử dụng đoạn mã sau:
print["shape of original dataset :", housing.shape] print["shape of input - training set", x_train.shape] print["shape of output - training set", y_train.shape] print["shape of input - testing set", x_test.shape] print["shape of output - testing set", y_test.shape]
Điều này cho đầu ra sau.
Mã hoàn chỉnh
Mã hoàn chỉnh cho dữ liệu đào tạo và thử nghiệm chia tách này như sau:
import pandas as pd housing = pd.read_csv["/sample_data/california_housing.csv"] print[housing.head[]] #output y= housing.median_income #input x=housing.drop['median_income',axis=1] #splitting x_train,x_teinst,y_train,y_test=train_test_split[x,y,test_size=0.2] #printing shapes of testing and training sets : print["shape of original dataset :", housing.shape] print["shape of input - training set", x_train.shape] print["shape of output - training set", y_train.shape] print["shape of input - testing set", x_test.shape] print["shape of output - testing set", y_test.shape]
Sự kết luận
Trong hướng dẫn này, chúng tôi đã tìm hiểu về tầm quan trọng của việc chia dữ liệu vào các bộ đào tạo và thử nghiệm. Hơn nữa, chúng tôi đã nhập một bộ dữ liệu vào một khung dữ liệu gấu trúc và sau đó sử dụng sklearn để chia dữ liệu thành các bộ đào tạo và thử nghiệm.sklearn to split the data into training and testing sets.