วิธีสร้างชุดฝึกและชุดทดสอบจาก pandas dataframe


เมื่อปรับ โมเดลการเรียนรู้ของเครื่อง เข้ากับชุดข้อมูล เรามักจะแบ่งชุดข้อมูลออกเป็นสองชุด:

1. ชุดฝึกอบรม : ใช้ในการฝึกโมเดล (70-80% ของชุดข้อมูลดั้งเดิม)

2. ชุดทดสอบ: ใช้เพื่อให้ได้ค่าประมาณประสิทธิภาพของโมเดลที่เป็นกลาง (20-30% ของชุดข้อมูลดั้งเดิม)

ใน Python มีสองวิธีทั่วไปในการแบ่ง DataFrame ของ pandas ออกเป็นชุดการฝึกและชุดทดสอบ:

วิธีที่ 1: ใช้ train_test_split() ของ sklearn

 from sklearn. model_selection import train_test_split

train, test = train_test_split(df, test_size= 0.2 , random_state= 0 )

วิธีที่ 2: ใช้ตัวอย่าง () จากแพนด้า

 train = df. sample (frac= 0.8 , random_state= 0 )
test = df. drop ( train.index )

ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีกับ DataFrame แพนด้าต่อไปนี้:

 import pandas as pd
import numpy as np

#make this example reproducible
n.p. random . seeds (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

ตัวอย่างที่ 1: ใช้ train_test_split() จาก sklearn

รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชัน train_test_split() ของ sklearn เพื่อแบ่ง DataFrame ของ pandas ออกเป็นชุดการฝึกอบรมและชุดทดสอบ:

 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)

จากผลลัพธ์เราจะพบว่ามีการสร้างชุดขึ้นมา 2 ชุด:

  • ชุดฝึก: 800 แถว 3 คอลัมน์
  • ชุดทดสอบ: 200 แถวและ 3 คอลัมน์

โปรดทราบว่า test_size ควบคุมเปอร์เซ็นต์ของการสังเกตจาก DataFrame ดั้งเดิมที่จะเป็นของชุดทดสอบ และค่า Random_state ทำให้การแยกทำซ้ำได้

ตัวอย่างที่ 2: ใช้ตัวอย่าง () จากแพนด้า

รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชัน pandas example() เพื่อแยก DataFrame ของ pandas ออกเป็นชุดการฝึกอบรมและการทดสอบ:

 #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)

จากผลลัพธ์เราจะพบว่ามีการสร้างชุดขึ้นมา 2 ชุด:

  • ชุดฝึก: 800 แถว 3 คอลัมน์
  • ชุดทดสอบ: 200 แถวและ 3 คอลัมน์

โปรดทราบว่า frac ควบคุมเปอร์เซ็นต์ของการสังเกตจาก DataFrame ดั้งเดิมที่จะเป็นของชุดการฝึก และค่า Random_state ทำให้การแยกทำซ้ำได้

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีทำงานทั่วไปอื่นๆ ใน Python:

วิธีการดำเนินการถดถอยโลจิสติกใน Python
วิธีสร้างเมทริกซ์ความสับสนใน Python
วิธีการคำนวณความแม่นยำที่สมดุลใน Python

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *