บทความนี้เผยแพร่โดยเป็นส่วนหนึ่งของไฟล์ Blogathon วิทยาศาสตร์ข้อมูล
ขององค์กร
ข้อมูลทำให้เรามีพลังในการวิเคราะห์และคาดการณ์เหตุการณ์ในอนาคต ในแต่ละวัน มีบริษัทจำนวนมากขึ้นเรื่อยๆ ที่นำเทคนิควิทยาศาสตร์ข้อมูลมาใช้ เช่น การพยากรณ์เชิงพยากรณ์ การจัดกลุ่ม และอื่นๆ แม้ว่าการเรียนรู้อัลกอริธึม ML และ DL ที่ซับซ้อนจะเป็นเรื่องที่น่าสนใจมาก แต่ก็ไม่ควรลืมที่จะเชี่ยวชาญในสิ่งสำคัญ การประมวลผลข้อมูลล่วงหน้า. ส่วนสำคัญของการประมวลผลข้อมูลล่วงหน้าคือการจัดการค่าที่หายไป นี่คือคู่มือฉบับสมบูรณ์เกี่ยวกับวิธีจัดการกับข้อมูลประเภทต่างๆ ที่ขาดหายไป
เนื้อหา
- เหตุใดการจัดการค่าที่หายไปจึงสำคัญ
- เหตุผลเบื้องหลังค่าที่หายไป
- ประเภทของค่าที่หายไป
- ตรวจสอบค่าที่หายไปในชุดข้อมูล
- การแสดงค่าที่หายไป
- วางแถวที่มีค่าขาดหายไป
- วางคอลัมน์ที่มีค่าขาดหายไป
- การใส่แทนค่าตัวแปรต่อเนื่อง
- การใส่ร้ายป้ายสี
- การใส่ความด้วยค่ามัธยฐาน
- การทำนายค่าที่หายไปด้วยการถดถอย
- ค่าที่ขาดหายไปในข้อมูลหมวดหมู่
- ค่าที่ขาดหายไปในข้อมูลอนุกรมเวลา
- ส่งต่อค่าที่ขาดหายไป
- ย้อนกลับเติมค่าที่ขาดหายไป
- การแก้ไขเชิงเส้น
- อัลกอริธึมที่แข็งแกร่งจนถึงค่าที่หายไป
- สรุป
เหตุใดการจัดการข้อมูลที่ขาดหายไปจึงสำคัญ
ข้อมูลในโลกแห่งความเป็นจริงมักมีข้อมูลที่ขาดหายไปจำนวนมาก อาจมีสาเหตุหลายประการที่ทำให้แต่ละค่าหายไป ข้อมูลอาจสูญหายหรือเสียหาย หรืออาจมีสาเหตุเฉพาะด้วย ข้อมูลที่ขาดหายไปจะลดพลังการทำนายของแบบจำลองของคุณ หากคุณใช้อัลกอริธึมที่มีข้อมูลที่ขาดหายไป การประมาณค่าพารามิเตอร์จะมีอคติ คุณไม่สามารถมั่นใจเกี่ยวกับผลลัพธ์ของคุณได้ถ้าคุณไม่จัดการกับข้อมูลที่ขาดหายไป
เหตุผลเบื้องหลังค่านิยมที่หายไป
เคยสงสัยเกี่ยวกับสาเหตุที่อยู่เบื้องหลังข้อมูลที่ขาดหายไปในชุดข้อมูลหรือไม่?
สาเหตุที่เป็นไปได้บางประการที่อยู่เบื้องหลังข้อมูลที่ขาดหายไปคือ:
- ผู้คนไม่ให้ข้อมูลเกี่ยวกับคำถามบางอย่างในแบบสำรวจการรวบรวมข้อมูล ตัวอย่างเช่น บางคนอาจไม่สะดวกที่จะแบ่งปันข้อมูลเกี่ยวกับเงินเดือน การดื่ม และพฤติกรรมการสูบบุหรี่ สิ่งเหล่านี้ถูกละทิ้งโดยประชากรโดยเจตนา
- ในบางกรณี ข้อมูลจะถูกสะสมจากบันทึกต่างๆ ในอดีตที่มีอยู่และไม่ใช่โดยตรง ในกรณีนี้ ข้อมูลเสียหายเป็นปัญหาสำคัญ เนื่องจากการบำรุงรักษาต่ำ ข้อมูลบางส่วนได้รับความเสียหาย ทำให้ข้อมูลสูญหาย
- ความไม่ถูกต้องระหว่างกระบวนการรวบรวมข้อมูลก็มีส่วนทำให้ข้อมูลที่ขาดหายไปเช่นกัน ตัวอย่างเช่น ในการป้อนข้อมูลด้วยตนเอง เป็นการยากที่จะหลีกเลี่ยงข้อผิดพลาดของมนุษย์โดยสิ้นเชิง
- ความไม่สอดคล้องกันของอุปกรณ์นำไปสู่การวัดที่ผิดพลาด ซึ่งไม่สามารถใช้งานได้
ประเภทของค่าที่หายไป
ข้อมูลที่ขาดหายไปอาจเกิดขึ้นได้จากหลายสาเหตุ เราสามารถจำแนกพวกเขาออกเป็นสามกลุ่มหลัก: ขาดหายไปโดยสิ้นเชิงในการสุ่ม, ขาดหายไปแบบสุ่ม, ไม่พลาดแบบสุ่ม
1. หายไปโดยสิ้นเชิงที่สุ่ม (MCAR)
ข้อมูลที่ขาดหายไปไม่เป็นไปตามรูปแบบใดรูปแบบหนึ่ง เป็นเพียงการสุ่ม ข้อมูลที่ขาดหายไปเหล่านี้ไม่เกี่ยวข้องหรือเป็นอิสระจากตัวแปรที่เหลือ เป็นไปไม่ได้ที่จะทำนายค่าเหล่านี้กับข้อมูลตัวแปรที่เหลือ ตัวอย่างเช่น ในระหว่างการรวบรวมข้อมูล ตัวอย่างบางตัวอาจสูญหายไปเนื่องจากความประมาท นี่เป็นกรณีในอุดมคติ โดยการวิเคราะห์ทางสถิติจะไม่ลำเอียง แต่คุณไม่ควรถือว่ามี MCAR เว้นแต่จะแน่ใจว่าเป็นสถานการณ์ที่หายาก
2. หายไปแบบสุ่ม (MAR)
ที่นี่ไม่เหมือนกับ MCAR ข้อมูลขาดหายไปในกลุ่มย่อยเฉพาะ เป็นไปได้ที่จะคาดการณ์ว่าข้อมูลจะมีหรือไม่มีด้วยความช่วยเหลือของคุณสมบัติอื่น ๆ แต่คุณไม่สามารถคาดเดาข้อมูลที่ขาดหายไปได้ด้วยตนเอง
ตัวอย่างเช่น ให้เราพิจารณาแบบสำรวจเกี่ยวกับเวลาที่ใช้บนอินเทอร์เน็ต ซึ่งมีหัวข้อเกี่ยวกับเวลาที่ใช้บนแพลตฟอร์มอย่าง Netflix, amazon prime สังเกตได้ว่าผู้สูงอายุ (อายุมากกว่า 45 ปี) มีโอกาสน้อยกว่าคนอายุน้อยกว่า นี่คือตัวอย่างของ MAR ที่นี่ พารามิเตอร์ 'อายุ' เป็นตัวกำหนดว่าข้อมูลจะขาดหายไปหรือไม่ MAR เกิดขึ้นบ่อยกว่า MCAR
3. ไม่พลาดแบบสุ่ม (NMAR)
นี่เป็นสถานการณ์ที่ร้ายแรงและยุ่งยาก สมมติว่าจุดประสงค์ของการสำรวจคือเพื่อวัดการใช้สื่อโซเชียลมากเกินไป/เสพติด หากผู้ที่ใช้โซเชียลมีเดียมากเกินไป อย่ากรอกแบบสำรวจโดยเจตนา เราก็มีกรณีของ NMAR ซึ่งอาจนำไปสู่ความลำเอียงในผลลัพธ์ได้มากที่สุด วิธีการทั่วไป เช่น การวางแถว/คอลัมน์ การใส่แทนค่าจะไม่ทำงาน ในการแก้ปัญหานี้ จำเป็นต้องมีความรู้เชิงลึกเกี่ยวกับโดเมน
ตอนนี้เราได้เห็นข้อมูลประเภทต่างๆ ที่ขาดหายไปแล้ว มาดูวิธีการต่างๆ ในการจัดการกัน
ตรวจสอบค่าที่หายไป
เมื่อคุณมีชุดข้อมูล ขั้นตอนแรกคือตรวจสอบว่าคอลัมน์ใดมีข้อมูลที่ขาดหายไปและมีกี่คอลัมน์ ให้เราใช้ชุดข้อมูลที่มีชื่อเสียงที่สุดในบรรดา Data Science ที่เรียนรู้ แน่นอนว่าผู้รอดชีวิตจากเรือไททานิค! อ่านชุดข้อมูลโดยใช้ฟังก์ชัน pandas read_csv ดังที่แสดงด้านล่าง
train=pd.read_csv('../input/titanic/train.csv') test=pd.read_csv('../input/titanic/test.csv') พิมพ์ ('รูปแบบข้อมูลการฝึก: ', train.shape ) print('กำลังทดสอบรูปร่างข้อมูล: ', test.shape) train.head()
ที่มา: ภาพจากสมุดบันทึก Kaggle ของผู้แต่ง
ตอนนี้เรามีกรอบข้อมูลการฝึกอบรมและทดสอบของข้อมูลไททานิคแล้ว
จะตรวจสอบได้อย่างไรว่าคอลัมน์ใดมีข้อมูลที่ขาดหายไป และมีกี่คอลัมน์
ฟังก์ชัน ” isnull()” ใช้สำหรับสิ่งนี้ เมื่อคุณเรียกใช้ฟังก์ชัน sum พร้อมกับ isnull ผลรวมของข้อมูลที่ขาดหายไปในแต่ละคอลัมน์คือผลลัพธ์
Missing_values=train.isnull().sum() พิมพ์(missing_values)
PassengerId 0 Survived 0 Pclass 0 Name 0 Sex 0 Age 177 SibSp 0 Parch 0 Ticket 0 Fare 0 Cabin 687 Embarked 2 dtype: int64
สังเกตว่า 3 คอลัมน์มีค่าที่หายไป: อายุ, ห้องโดยสาร, ลงมือ
แม้ว่าเราจะทราบจำนวนค่าที่ขาดหายไปในแต่ละคอลัมน์ แต่สิ่งสำคัญคือต้องทราบเปอร์เซ็นต์ของค่าเหล่านี้เทียบกับค่าทั้งหมด ดังนั้น ให้เราคำนวณมันในโค้ดบรรทัดเดียว
mis_value_percent = 100 * train.isnull().sum() / len(train) พิมพ์ (mis_value_percent)
PassengerId 0.000000 รอด 0.000000 Pclass 0.000000 ชื่อ 0.000000 เพศ 0.000000 อายุ 19.865320 SibSp 0.000000 Parch 0.000000 ตั๋ว 0.000000 ค่าโดยสาร 0.000000 ห้องโดยสาร 77.104377 ลงมือ 0.224467 dtype: float64
เป็นที่ชัดเจนว่า 77% ของคอลัมน์ 'ห้องโดยสาร' หายไป ซึ่งเป็นเปอร์เซ็นต์ที่มีนัยสำคัญอย่างยิ่ง อายุมีข้อมูลหายไปประมาณ 19% และ Embarked หายไปเพียง 0.2% นี่คือการวิเคราะห์เชิงปริมาณของข้อมูลที่ขาดหายไปที่เรามี แล้วคุณภาพล่ะ? อ่านต่อ!
การแสดงค่าที่หายไปด้วย Missingno
คาดเดาอะไร? เรามีแพ็คเกจหลามโดยเฉพาะสำหรับการแสดงภาพและสำรวจข้อมูลที่ขาดหายไปของชุดข้อมูล แพ็คเกจหลาม "Missingno" ไปข้างหน้าและติดตั้งอย่างรวดเร็ว
pip ติดตั้งหายไปไม่มี
เมื่อใช้สิ่งนี้ เราสามารถสร้างภาพข้อมูลในรูปแบบของแผนที่ความร้อน แผนภูมิแท่ง และเมทริกซ์ ด้วยการวิเคราะห์วิธีการแจกจ่าย คุณสามารถสรุปได้ว่าหมวดหมู่ใดที่จัดอยู่ใน MCAR, MAR หรือ NMAR นอกจากนี้เรายังสามารถค้นหาความสัมพันธ์ของคอลัมน์ที่มีคอลัมน์เป้าหมายที่ขาดหายไป
เริ่มต้นด้วยการสร้างแผนภูมิแท่งสำหรับค่าที่ไม่ใช่ค่าว่างโดยใช้ฟังก์ชัน 'bar()' ของไลบรารี missingno คุณได้ส่ง dataframe แพนด้าไปยังฟังก์ชันนี้
นำเข้า missno เป็น msno msno.bar (รถไฟ)
ที่มา: ภาพจากสมุดบันทึก Kaggle ของผู้แต่ง
ต่อไป เราสามารถพล็อตการแสดงภาพเมทริกซ์ได้ ข้อมูลนี้ช่วยให้เราทราบว่าข้อมูลที่ขาดหายไปถูกกระจายผ่านข้อมูลอย่างไร นั่นคือ หากมีการแปลเป็นภาษาท้องถิ่นหรือกระจายอย่างเท่าเทียมกัน หรือมีรูปแบบใดๆ และคำถามดังกล่าวมากมาย
msno.matrix(รถไฟ)
ในพล็อตเมทริกซ์ คุณจะเห็นบรรทัดว่างสำหรับข้อมูลที่ขาดหายไปแต่ละรายการ โปรดสังเกตว่าคอลัมน์ 'เริ่มดำเนินการ' มีข้อมูลที่สุ่มหายไปเพียงสองข้อมูล ซึ่งไม่เป็นไปตามรูปแบบ พวกเขาอาจสูญหายระหว่างการเก็บข้อมูล ดังนั้นสิ่งนี้สามารถจัดเป็น Missing อย่างสมบูรณ์ที่ Random
คอลัมน์อายุและห้องโดยสารอาจเป็น MAR แต่เราต้องการให้แน่ใจว่าไม่มีความสัมพันธ์ระหว่างกัน
ต้องทำอย่างไร?
โชคดีสำหรับเรา แพ็คเกจ missno ยังมีฟังก์ชัน 'แผนที่ความร้อน' เมื่อใช้สิ่งนี้ เราจะพบว่ามีความสัมพันธ์ระหว่างข้อมูลที่ขาดหายไปของคอลัมน์ต่างๆ หรือไม่
msno.heatmap(รถไฟ)
แสดงผลออกมาแล้ว!
แผนที่ความหนาแน่นแสดงให้เห็นว่าไม่มีความสัมพันธ์ที่ชัดเจนระหว่างข้อมูลที่ขาดหายไปของคอลัมน์อายุและห้องโดยสาร ดังนั้นข้อมูลที่ขาดหายไปของคอลัมน์เหล่านี้สามารถจัดประเภทเป็น MAR หรือหายไปจากการสุ่ม
ฉันหวังว่าคุณจะชัดเจนเกี่ยวกับวิธีการวิเคราะห์ค่าที่หายไป ต่อไป ฉันจะพูดถึงวิธีต่างๆ ในการจัดการข้อมูลที่ขาดหายไปเหล่านี้
วางแถวที่มีค่าขาดหายไป
เป็นวิธีง่าย ๆ โดยเราวางแถวทั้งหมดที่มีค่าที่ขาดหายไปที่เป็นของคอลัมน์ใดคอลัมน์หนึ่ง ง่ายอย่างนี้ก็มีข้อเสียอย่างใหญ่หลวง คุณอาจสูญเสียข้อมูลจำนวนมาก สิ่งนี้จะลดขนาดของชุดข้อมูลของคุณและทำให้การคาดการณ์แบบจำลองของคุณมีอคติ คุณควรใช้เฉพาะเมื่อไม่มีค่าที่ขาดหายไปน้อยมาก
ตัวอย่างเช่น คอลัมน์ 'เริ่มดำเนินการ' มีค่าที่หายไปเพียง 2 ค่า ดังนั้นเราจึงสามารถวางแถวที่คอลัมน์นี้หายไปได้ ทำตามข้อมูลโค้ดด้านล่าง
print('Dataset before :', len(train)) train.dropna(subset=['Embarked'],how='any',inplace=True) print('Dataset after :', len(train)) พิมพ์ ( 'ค่าที่หายไป :',train['Embarked'].isnull().sum())
ชุดข้อมูลก่อน : 891 ชุดข้อมูลหลัง : 889 ค่าที่ขาดหายไป : 0
ลองนึกภาพถ้าคุณทำเช่นเดียวกันกับคอลัมน์ 'อายุ' คุณจะสูญเสียข้อมูลประมาณ 77%!
วางคอลัมน์
เมื่อคอลัมน์มีค่าที่หายไปจำนวนมาก ก็ไม่มีประโยชน์ที่จะใส่ค่าที่มีข้อมูลจริงที่มีอยู่น้อยที่สุดที่เรามี ดังนั้น เมื่อคอลัมน์ใดมีค่าขาดหายไปมากกว่า 80% คุณสามารถลบคอลัมน์นั้นออกจากการวิเคราะห์ของคุณได้ ในกรณีของเรา 'Cabin' มีข้อมูลขาดหายไป 77% ดังนั้นคุณสามารถเลือกที่จะวางคอลัมน์นี้
ตรวจสอบให้แน่ใจว่าคอลัมน์ที่ดร็อปนั้นไม่สำคัญสำหรับการวิเคราะห์ของคุณ ถ้าเป็นเช่นนั้น คุณควรพยายามรับข้อมูลเพิ่มเติมแล้วใส่ค่าที่ขาดหายไป
การใส่แทนค่าตัวแปรต่อเนื่อง
รถไฟ['อายุ'][:10]
0 22.0 1 38.0 2 26.0 3 35.0 4 35.0 5 NaN 6 54.0 7 2.0 8 27.0 9 14.0 ชื่อ: อายุ dtype: float64
train['Age']=train['Age'].replace(np.NaN,train['Age'].mean()) รถไฟ['Age'][:10]
0 22.000000 1 38.000000 2 26.000000 3 35.000000 4 35.000000 5 29.699118 6 54.000000 7 2.000000 8 27.000000 9 14.000000 ชื่อ: อายุ dtype: float64
คุณจะเห็นว่า 'NaN' ถูกแทนที่ด้วย 29.699 (ค่าเฉลี่ยที่คำนวณได้)
การใส่ร้ายป้ายสีมีข้อเสียบางประการ หากข้อมูลมีการกระจายที่ไม่สม่ำเสมอมาก โดยมีค่าผิดปกติจำนวนมาก ค่าเฉลี่ยจะไม่สะท้อนถึงการแจกแจงตามจริงของข้อมูล ค่าเฉลี่ยได้รับผลกระทบอย่างมากจากค่าหรือค่าผิดปกติที่รุนแรง ดังนั้น หากข้อมูลไม่มีค่าผิดปกติจำนวนมากและติดตามการแจกแจงแบบเกือบปกติ ให้ใช้การใส่ค่าเฉลี่ย
การใส่ความด้วยค่ามัธยฐาน
ค่าที่ขาดหายไปของคุณลักษณะต่อเนื่องสามารถเติมด้วยค่ามัธยฐานของค่าที่ไม่ใช่ค่าว่างที่เหลืออยู่ได้ ข้อดีของค่ามัธยฐานคือ ไม่ได้รับผลกระทบจากค่าผิดปกติ ไม่เหมือนกับค่ากลาง ให้เราดำเนินการที่นี่
train['Age']=train['Age'].replace(np.NaN,train['Age'].median()) รถไฟ['Age'][:10]
คุณสามารถสังเกตได้ว่าค่ามัธยฐาน (28.0) ถูกเติมแทนที่ค่า NaN
ในทำนองเดียวกัน คุณสามารถทำการใส่โหมดได้เช่นกัน โดยทั่วไป Imputation with the mode เป็นที่นิยมสำหรับค่าที่ขาดหายไปตามหมวดหมู่ ฉันจะอธิบายในเชิงลึกในส่วนต่อไป
การทำนายค่าที่หายไปด้วยการถดถอย
แทนที่จะเติมค่าเฉลี่ยหรือค่ามัธยฐานเดียวในทุกแห่ง จะเกิดอะไรขึ้นถ้าเราสามารถทำนายพวกมันด้วยความช่วยเหลือจากตัวแปรอื่นๆ ที่เรามี
ใช่! เราสามารถใช้คุณสมบัติที่มีค่าที่ไม่ใช่ค่าว่างเพื่อทำนายค่าที่หายไปได้ สามารถสร้างแบบจำลองการถดถอยหรือการจัดหมวดหมู่สำหรับการทำนายค่าที่หายไปได้ ให้เราดำเนินการนี้สำหรับคอลัมน์ 'อายุ' ของชุดข้อมูลไททานิคของเรา
เราสามารถประมวลผลข้อมูลเพื่อสร้างแบบจำลองได้ คุณลักษณะ "อายุ" จะเป็นตัวแปรเป้าหมาย
x_รถไฟ: แถวของชุดข้อมูลที่มีค่า "อายุ" จะถูกกรอง 'อายุ' คือเป้าหมาย x_ทดสอบ: มันคือคอลัมน์ "อายุ" ที่มีค่าที่ไม่ใช่ค่าว่าง
พื้นที่ y_รถไฟ จะมีข้อมูลที่มีค่า Age หายไป ซึ่งจะมีการคาดคะเน (y_pred)
นำเข้าแพนด้าเป็น pd data=pd.read_csv('../input/titanic/train.csv') data = data[["Survived", "Pclass", "Sex", "SibSp", "Parch", "Fare "," "อายุ"]] data["Sex"] = [1 if x=="male" else 0 for x in data["Sex"]] test_data = data[data["Age"].isnull()] data.dropna(inplace=True) x_train = data.drop("Age", axis=1) x_test = test_data.drop("Age", axis=1) y_train = data["อายุ"]
ให้เราใส่ตัวแบบการถดถอยเชิงเส้นกับข้อมูลเหล่านี้ ฉันจะใช้ห้องสมุด sklearn ที่นี่
จาก sklearn.linear_model นำเข้า LinearRegression model = LinearRegression() model.fit(X_train, y_train) y_pred = model.predict(X_test)
ตอนนี้ เรามีค่าว่างของคอลัมน์อายุที่คาดการณ์ไว้ใน y_pred
ฉันจะพิมพ์ตัวอย่างข้อมูลการทดสอบและผลลัพธ์ที่คาดการณ์ไว้สองสามตัวอย่างเพื่อให้คุณเข้าใจมากขึ้น
พิมพ์(x_test[:10])
Survived Pclass Sex SibSp Parch Fare 5 0 3 1 0 0 8.4583 17 1 2 1 0 0 13.0000 19 1 3 0 0 0 7.2250 26 0 3 1 0 0 7.2250 28 1 3 0 0 0 7.8792 29 0 3 1 0 0 7.8958 31 1 1 0 1 0 146.5208 32 1 3 0 0 0 7.7500 36 1 3 1 0 0 7.2292 42 0 3 1 0 0
นี่คือวิธีที่อินพุตถูกส่งไปยังแบบจำลองการถดถอย ลองดูค่าอายุที่คาดการณ์ไว้
พิมพ์ (y_pred[:10])
[29.07080066 30.10833306 22.44685065 29.08927347 22.43705181 29.07922599 32.43692984 22.43898701 22.15615704 29.07922599]
เย่! เราได้ค่า
ค่าที่ขาดหายไปในข้อมูลหมวดหมู่
จนถึงขณะนี้ เราเห็นวิธีจัดการกับข้อมูลตัวเลขที่ขาดหายไป เกิดอะไรขึ้นถ้าข้อมูลหายไปในกรณีของคุณสมบัติหมวดหมู่? ตัวอย่างเช่น คุณลักษณะ "ห้องโดยสาร" ของชุดข้อมูลไททานิคเป็นแบบจัดหมวดหมู่ ที่นี่เราไม่สามารถคำนวณค่าเฉลี่ยและค่ามัธยฐานได้ ดังนั้น เราสามารถเติมค่าที่หายไปด้วยโหมดหรือคลาส/หมวดหมู่ที่เกิดขึ้นบ่อยที่สุด
train['Cabin']=train['Cabin'].fillna(รถไฟ['Cabin'].value_counts().index[0])
เมื่อเปอร์เซ็นต์ของค่าที่ขาดหายไปน้อยกว่า แนะนำให้ใช้วิธีนี้ ไม่ก่อให้เกิดการสูญเสียข้อมูลจำนวนมาก และมีความเกี่ยวข้องทางสถิติ
แต่ถ้าคุณมีค่าที่หายไปจำนวนมาก ก็ไม่สมเหตุสมผลที่จะใส่ค่ากับคลาสที่ใช้บ่อยที่สุด ให้เราสร้างหมวดหมู่แยกต่างหากสำหรับค่าที่ขาดหายไป เช่น "ไม่ทราบ" หรือ "ไม่พร้อมใช้งาน" จำนวนชั้นเรียนจะเพิ่มขึ้นหนึ่ง
เมื่อค่าที่หายไปมาจากคอลัมน์ที่เป็นหมวดหมู่ (สตริงหรือตัวเลข) ค่าที่หายไปจะถูกแทนที่ด้วยหมวดหมู่ที่ใช้บ่อยที่สุด หากจำนวนของค่าที่หายไปมีมาก สามารถแทนที่ด้วยหมวดหมู่ใหม่ได้
train['Cabin']=train['Cabin'].fillna('Unknown') รถไฟ['Cabin'][:10]
ทำงานได้ดีกับชุดข้อมูลขนาดเล็ก นอกจากนี้ยังปฏิเสธการสูญหายของข้อมูลด้วยการเพิ่มหมวดหมู่เฉพาะ
วิธีจัดการกับค่าที่หายไปในข้อมูลอนุกรมเวลา
ชุดข้อมูลที่รวบรวมข้อมูลพร้อมกับการประทับเวลาอย่างเป็นระเบียบจะแสดงเป็นข้อมูลอนุกรมเวลา หากคุณไม่มีค่าในข้อมูลอนุกรมเวลา คุณสามารถลองใช้วิธีการใดๆ ที่กล่าวถึงข้างต้นได้อย่างชัดเจน แต่มีวิธีการเฉพาะบางอย่างที่สามารถใช้ได้ที่นี่
เพื่อให้ได้แนวคิด ฉันจะสร้างชุดข้อมูลจำลองง่ายๆ
time= pd.date_range("1/01/2021", periods=10, freq="W") df = pd.DataFrame(index=time); df["หน่วยขาย"] = [5.0,4.0,np.nan,np.nan,1.0,np.nan,3.0,6.0,np.nan,2.0]; พิมพ์ (df)
มาดูวิธีการกัน
ส่งต่อค่าที่ขาดหายไป
ค่าของแถวถัดไปจะใช้เพื่อเติมค่าที่ขาดหายไป 'ffill' ย่อมาจาก 'forward fill' มันง่ายมากที่จะนำไปใช้ คุณเพียงแค่ต้องส่งพารามิเตอร์ "method" เป็น "ffill" ในฟังก์ชัน fillna()
forward_filled=df.fillna(method='ffill') พิมพ์ (forward_filled)
ย้อนกลับเติมค่าที่ขาดหายไป
ที่นี่เราใช้ค่าของแถวก่อนหน้าเพื่อเติมค่าที่ขาดหายไป 'bfill' หมายถึงการเติมย้อนกลับ ที่นี่ คุณต้องส่ง 'bfill' เป็นพารามิเตอร์เมธอด
back_filled=df.fillna(method='bfill') พิมพ์ (backward_filled)
ฉันหวังว่าคุณจะสามารถเห็นความแตกต่างในทั้งสองกรณีด้วยภาพด้านบน
การแก้ไขเชิงเส้น
ข้อมูลอนุกรมเวลามีความหลากหลายมาก วิธีการระบุโดยใช้โฆษณาทดแทนและการเติมล่วงหน้าไม่ใช่วิธีแก้ปัญหาที่ดีที่สุด การแก้ไขเชิงเส้นเพื่อช่วยชีวิต!
ที่นี่ ค่าจะเต็มไปด้วยค่าที่เพิ่มขึ้นหรือลดลง เป็นเทคนิคการใส่ข้อมูลชนิดหนึ่ง ซึ่งพยายามพล็อตความสัมพันธ์เชิงเส้นระหว่างจุดข้อมูล ใช้ค่าที่ไม่ใช่ค่าว่างเพื่อคำนวณจุดที่ขาดหายไป
interpolated=df.interpolate(limit_direction="both") พิมพ์ (สอดแทรก)
เปรียบเทียบค่าเหล่านี้กับการเติมย้อนหลังและส่งต่อ และตรวจสอบด้วยตัวคุณเองว่าแบบไหนดี!
นี่เป็นวิธีพื้นฐานในการจัดการค่าที่ขาดหายไปในข้อมูลอนุกรมเวลา
อัลกอริธึมที่แข็งแกร่งจนถึงค่าที่หายไป
มีบางกรณีที่วิธีข้างต้นไม่ทำงานได้ดี แต่คุณต้องทำการวิเคราะห์ จากนั้น คุณควรเลือกใช้อัลกอริทึมที่รองรับค่าที่หายไป KNN (เพื่อนบ้านที่ใกล้ที่สุด K) เป็นหนึ่งในอัลกอริทึมดังกล่าว โดยจะพิจารณาค่าที่ขาดหายไปโดยนำค่า K ที่ใกล้ที่สุดมาใช้ ฟอเรสต์สุ่มยังมีประสิทธิภาพในการจัดหมวดหมู่ข้อมูลที่มีค่าที่ขาดหายไป อัลกอริธึมที่อิงตามโครงสร้างการตัดสินใจหลายอย่าง เช่น XGBoost, Catboost รองรับข้อมูลที่มีค่าที่ขาดหายไป
สรุป
โดยสรุป ขั้นตอนแรกคือการสำรวจข้อมูลและค้นหาว่าตัวแปรใดมีข้อมูลที่ขาดหายไป เปอร์เซ็นต์คืออะไร และอยู่ในหมวดหมู่ใด หลังจากนี้ คุณจะมีแนวคิดเชิงกลยุทธ์ว่าคุณจะลองใช้วิธีใดได้บ้าง เคล็ดลับที่เป็นประโยชน์คือการลองใช้ Imputation ด้วยอัลกอริทึมเพื่อนบ้านที่ใกล้ที่สุด K นอกเหนือจากแบบจำลองการถดถอยเชิงเส้น มีวิธีการใหม่ ๆ สองสามวิธีที่คุณสามารถลองใช้ Datawig หรือวิธี Hot-Deck Imputation หากวิธีการข้างต้นไม่ได้ผล
ฉันหวังว่าคุณจะชอบการอ่าน
คุณสามารถเชื่อมต่อกับฉันได้ที่: [ป้องกันอีเมล]
Linkedin: การประมวลผลข้อมูลล่วงหน้า
- '
- 100
- 7
- 77
- 9
- การครอบครอง
- ความได้เปรียบ
- ขั้นตอนวิธี
- อัลกอริทึม
- ทั้งหมด
- อเมซอน
- ในหมู่
- การวิเคราะห์
- การวิเคราะห์
- รอบ
- บทความ
- ที่ดีที่สุด
- การก่อสร้าง
- โทรศัพท์
- กรณี
- ก่อให้เกิด
- ชาร์ต
- การจัดหมวดหมู่
- รหัส
- คอลัมน์
- บริษัท
- คำนวณ
- คอรัปชั่น
- ข้อมูล
- วิทยาศาสตร์ข้อมูล
- วัน
- จัดการ
- DID
- หล่น
- ปรับตัวลดลง
- เหตุการณ์
- ร้านแฟชั่นเกาหลี
- ลักษณะ
- คุณสมบัติ
- ชื่อจริง
- พอดี
- ปฏิบัติตาม
- ฟอร์ม
- ข้างหน้า
- ฟังก์ชัน
- อนาคต
- ให้
- ให้คำแนะนำ
- การจัดการ
- โปรดคลิกที่นี่เพื่ออ่านรายละเอียดเพิ่มเติม
- สรุป ความน่าเชื่อถือของ Olymp Trade?
- ทำอย่างไร
- HTTPS
- ใหญ่
- ความคิด
- ภาพ
- ข้อมูล
- อินเทอร์เน็ต
- IT
- ความรู้
- ใหญ่
- นำ
- ชั้นนำ
- การเรียนรู้
- ห้องสมุด
- Line
- สำคัญ
- ส่วนใหญ่
- การทำ
- แผนที่
- มดลูก
- วัด
- ภาพบรรยากาศ
- ML
- แบบ
- ย้าย
- เพื่อนบ้าน
- Netflix
- อื่นๆ
- แบบแผน
- คน
- แพลตฟอร์ม
- ยอดนิยม
- อำนาจ
- คำทำนาย
- การคาดการณ์
- นำเสนอ
- หลาม
- เชิงปริมาณ
- โลกแห่งความจริง
- เหตุผล
- บันทึก
- ลด
- ถดถอย
- REST
- ผลสอบ
- วิทยาศาสตร์
- ความรู้สึก
- ชุด
- เพศ
- ง่าย
- ขนาด
- เล็ก
- So
- สังคม
- โซเชียลมีเดีย
- ขาย
- แก้
- จุด
- กระจาย
- ยุทธศาสตร์
- สนับสนุน
- การสำรวจ
- เป้า
- ทดสอบ
- การทดสอบ
- ก้าวสู่อนาคต
- เวลา
- การฝึกอบรม
- us
- ความคุ้มค่า
- การสร้างภาพ
- W
- ความหมายของ
- WHO
- งาน
- โรงงาน
- โลก
- X
- ปี