शुरू करेंमुफ़्त में शुरू करें

Time Splits बनाना

वीडियो में आपने देखा कि टाइम सीरीज़ के लिए डेटा को रैंडम तरीके से बाँटना क्यों जोखिमभरा होता है, क्योंकि भविष्य का डेटा हमारे मॉडल में ओवरफिटिंग कर सकता है। टाइम सीरीज़ में प्रायः नया डेटा उपलब्ध होते ही जुड़ता रहता है और आप अक्सर अपने मॉडल को इसी नए डेटा के साथ दोबारा ट्रेन करना चाहेंगे। वीडियो में हमने टेस्ट और ट्रेनिंग सेट्स के लिए प्रतिशत-आधारित स्प्लिट दिखाया था, लेकिन मान लीजिए आप उपलब्ध सभी डेटा पर ट्रेन करना चाहते हैं, सिवाय आखिरी 45 दिनों के, जिन्हें आप टेस्ट सेट के रूप में रखना चाहते हैं.

इस अभ्यास में, हम एक फंक्शन बनाएँगे जो स्प्लिट डेट निकालेगा ताकि टेस्टिंग के लिए आखिरी 45 दिनों का डेटा और बाकी ट्रेनिंग के लिए उपयोग हो। ध्यान दें कि timedelta() पहले से ही स्टैंडर्ड python लाइब्रेरी datetime से आपके लिए इम्पोर्ट किया गया है.

यह अभ्यास पाठ्यक्रम का हिस्सा है

PySpark के साथ Feature Engineering

पाठ्यक्रम देखें

अभ्यास निर्देश

  • एक फंक्शन train_test_split_date() बनाएँ जो एक dataframe df, स्प्लिट के लिए डेट कॉलम split_col, और टेस्ट सेट के दिनों की संख्या test_days ले, जिसका डिफ़ॉल्ट मान 45 हो.
  • split_col के लिए min और max तिथियाँ ,() का उपयोग करके निकालें.
  • max_date से test_days घटाकर टेस्ट और ट्रेनिंग सेट्स को बाँटने की तिथि निकालें। इसके लिए timedelta() का उपयोग करें, जो days पैरामीटर लेता है — यहाँ test_days पास करें.
  • OFFMKTDATE को split_col की तरह उपयोग करते हुए split_date निकालें और उसी के आधार पर dataframe को दो नए dataframes — train_df और test_df — में फ़िल्टर करें, जहाँ test_df में केवल डेटा के आखिरी 45 दिनों की पंक्तियाँ हों। साथ ही, यह सुनिश्चित करें कि test_df में केवल वे घर हों जो split date तक लिस्ट किए जा चुके हों, इसके लिए df['LISTDATE'] को split_date से कम या बराबर पर फ़िल्टर करें.

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

def train_test_split_date(df, split_col, test_days=____):
  """Calculate the date to split test and training sets"""
  # Find how many days our data spans
  max_date = df.____({____: ____}).collect()[0][0]
  min_date = df.____({____: ____}).collect()[0][0]
  # Subtract an integer number of days from the last date in dataset
  split_date = ____ - timedelta(days=____)
  return split_date

# Find the date to use in spitting test and train
split_date = train_test_split_date(df, ____)

# Create Sequential Test and Training Sets
____ = df.where(df[____] < split_date) 
____ = df.where(df[____] >= split_date).where(df[____] <= split_date) 
कोड संपादित करें और चलाएँ