Trong Python, có hai cách phổ biến để chia DataFrame của gấu trúc thành tập huấn luyện và tập kiểm tra
Phương pháp 1. Sử dụng train_test_split[] từ sklearn
from sklearn.model_selection import train_test_split train, test = train_test_split[df, test_size=0.2, random_state=0]
Phương pháp 2. Sử dụng mẫu[] từ gấu trúc
train = df.sample[frac=0.8,random_state=0] test = df.drop[train.index]
Các ví dụ sau đây cho thấy cách sử dụng từng phương thức với DataFrame của gấu trúc sau đây
import pandas as pd import numpy as np #make this example reproducible np.random.seed[1] #create DataFrame with 1,000 rows and 3 columns df = pd.DataFrame[{'x1': np.random.randint[30, size=1000], 'x2': np.random.randint[12, size=1000], 'y': np.random.randint[2, size=1000]}] #view first few rows of DataFrame df.head[] x1 x2 y 0 5 1 1 1 11 8 0 2 12 4 1 3 8 7 0 4 9 0 0
ví dụ 1. Sử dụng train_test_split[] từ sklearn
Đoạn mã sau cho biết cách sử dụng hàm train_test_split[] từ sklearn để chia DataFrame của gấu trúc thành các tập huấn luyện và kiểm tra
from sklearn.model_selection import train_test_split #split original DataFrame into training and testing sets train, test = train_test_split[df, test_size=0.2, random_state=0] #view first few rows of each set print[train.head[]] x1 x2 y 687 16 2 0 500 18 2 1 332 4 10 1 979 2 8 1 817 11 1 0 print[test.head[]] x1 x2 y 993 22 1 1 859 27 6 0 298 27 8 1 553 20 6 0 672 9 2 1 #print size of each set print[train.shape, test.shape] [800, 3] [200, 3]
Từ đầu ra, chúng ta có thể thấy rằng hai bộ đã được tạo
- Tập huấn luyện. 800 hàng và 3 cột
- bộ kiểm tra. 200 hàng và 3 cột
Lưu ý rằng test_size kiểm soát tỷ lệ phần trăm quan sát từ DataFrame ban đầu sẽ thuộc về bộ thử nghiệm và giá trị random_state làm cho quá trình phân tách có thể tái tạo được
ví dụ 2. Sử dụng mẫu[] từ gấu trúc
Đoạn mã sau cho biết cách sử dụng hàm sample[] từ gấu trúc để phân chia DataFrame của gấu trúc thành các tập huấn luyện và kiểm tra
#split original DataFrame into training and testing sets train = df.sample[frac=0.8,random_state=0] test = df.drop[train.index] #view first few rows of each set print[train.head[]] x1 x2 y 993 22 1 1 859 27 6 0 298 27 8 1 553 20 6 0 672 9 2 1 print[test.head[]] x1 x2 y 9 16 5 0 11 12 10 0 19 5 9 0 23 28 1 1 28 18 0 1 #print size of each set print[train.shape, test.shape] [800, 3] [200, 3]
Từ đầu ra, chúng ta có thể thấy rằng hai bộ đã được tạo
- Tập huấn luyện. 800 hàng và 3 cột
- bộ kiểm tra. 200 hàng và 3 cột
Lưu ý rằng frac kiểm soát tỷ lệ phần trăm quan sát từ DataFrame gốc sẽ thuộc về tập huấn luyện và giá trị random_state làm cho quá trình phân tách có thể tái tạo được
Ở đây chúng ta sẽ tìm hiểu cách chia tập dữ liệu thành tập Huấn luyện và Kiểm tra trong Python mà không cần sử dụng sklearn. Khái niệm chính sẽ được sử dụng ở đây sẽ được cắt lát. Chúng ta có thể sử dụng các chức năng cắt để chia dữ liệu thành các phần riêng biệt [đào tạo và kiểm tra]. Nếu chúng tôi sử dụng sklearn, nhiệm vụ này rất dễ dàng nhưng có thể hơi tẻ nhạt trong trường hợp chúng tôi không được phép sử dụng sklearn
Các bước để chia dữ liệu thành đào tạo và thử nghiệm
- Tạo Tập dữ liệu hoặc tạo khung dữ liệu bằng Pandas
- Xáo trộn khung dữ liệu bằng chức năng mẫu của Pandas
- Chọn tỷ lệ để chia khung dữ liệu thành các tập kiểm tra và huấn luyện
- Tách các khung dữ liệu thành các khung dữ liệu huấn luyện và kiểm tra bằng cách cắt
- Tính tổng số hàng trong khung dữ liệu bằng chức năng hình dạng của Pandas
Hãy thực hiện những phần này với một ví dụ
Python3
import
pandas as pd
# Creating sample dataset
df
=
pd.DataFrame[{
"Roll Number"
: [
import
0_______5_______1import
2import
1import
4import
1import
6import
1import
8import
1pandas as pd
0import
1pandas as pd
2import
1pandas as pd
4_______5_______1_______6_______6_______5_______1_______6_______9_______
7_______1: [
___# Creating sample dataset
3_______5_______1# Creating sample dataset
5import
1# Creating sample dataset
7import
1# Creating sample dataset
9import
1
df
1df
2import
1_______8_______4import
1df
6import
1df
8import
1=
0import
1=
2pandas as pd
9
9_______5_______13__________=
7import
1=
9import
1pd.DataFrame[{
1import
1pd.DataFrame[{
3import
1pd.DataFrame[{
5import
1pd.DataFrame[{
7import
1pd.DataFrame[{
9import
1_______10_______5_______5_______1_______10_______7_______10__5_______
11_______8: [
12_______0import
1"Roll Number"
2import
1"Roll Number"
4
train = df.sample[frac=0.8,random_state=0] test = df.drop[train.index]1
"Roll Number"
6import
1"Roll Number"
8import
1: [
0import
1: [
2import
1_______13_______4_______5_______1_______13_______13_______13_______13_______13_______13_______1import
00
________số 8_______
đầu ra
Một trong những thách thức khi chia tách dữ liệu là chúng tôi muốn chọn ngẫu nhiên các hàng để đào tạo cũng như dữ liệu đào tạo. Chức năng này có thể đạt được bằng cách sử dụng phương thức sample[] như bên dưới