टाइम फीचर्स समायोजित करना
इस कोर्स में आपने कई बार देखा है कि ट्रेनिंग के दौरान मॉडल तक अनजाने में अतिरिक्त जानकारी पहुँचना कितना ख़तरनाक हो सकता है. ऐसे डेटा लीकेज से आपके मॉडल के accuracy मेट्रिक्स बहुत आशावादी दिखते हैं, लेकिन जब उस पर वास्तविक डेटा चलाते हैं तो नतीजे अक्सर निराशाजनक होते हैं.
इस अभ्यास में, हम सुनिश्चित करेंगे कि DAYSONMARKET केवल वही जानकारी दिखाए जो हमारे पास प्रेडिक्शन के समय उपलब्ध होती है. यानी, अगर घर अभी भी मार्केट में है, तो हमें यह नहीं पता कि वह और कितने दिन रहेगा. हमें अपने test_df को इस तरह एडजस्ट करना है कि 2017-12-10 तक उपलब्ध जानकारी ही दर्शाए.
नोट: इस उदाहरण में lit() फंक्शन का उपयोग होगा. यह फंक्शन तब काम आता है जब किसी फंक्शन कॉल में पूरी कॉलम की जगह एक सिंगल वैल्यू देनी हो.
यह अभ्यास पाठ्यक्रम का हिस्सा है
PySpark के साथ Feature Engineering
अभ्यास निर्देश
- आगे उपयोग के लिए
pyspark.sql.functionsसे ये फंक्शन इम्पोर्ट करें:datediff(),to_date(),lit(). - तारीख string '2017-12-10' को PySpark date में बदलें: पहले उस पर literal फंक्शन
lit()कॉल करें, फिरto_date()लगाएँ. where()का उपयोग करकेOFFMKTDATEजोsplit_dateसे बड़ा या बराबर हो औरLISTDATEजोsplit_dateसे छोटा या बराबर हो, उन्हें फ़िल्टर करtest_dfबनाएँ.DAYSONMARKETको रिप्लेस करें: एक नया कॉलमDAYSONMARKETकैल्कुलेट करें, जोsplit_dateऔरLISTDATEके बीच का अंतर हो. तारीख का यह हिसाब लगाने के लिएdatediff()का उपयोग करें. दिए गए कोड से नए और ओरिजिनल कॉलम को देखें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
from pyspark.sql.functions import ____, ____, ____
split_date = ____(____('2017-12-10'))
# Create Sequential Test set
test_df = df.____(df[____] >= ____).____(df[____] <= ____)
# Create a copy of DAYSONMARKET to review later
test_df = test_df.withColumn('DAYSONMARKET_Original', test_df['DAYSONMARKET'])
# Recalculate DAYSONMARKET from what we know on our split date
test_df = test_df.withColumn(____, ____(____, ____))
# Review the difference
test_df[['LISTDATE', 'OFFMKTDATE', 'DAYSONMARKET_Original', 'DAYSONMARKET']].show()