Zaman Özelliklerini Ayarlama
Bu kursta, eğitim sırasında modele bilgi sızdırmanın bazı tehlikelerinden bahsettik. Veri sızıntısı, modelinin doğruluk metriklerini aşırı iyimser gösterir; ancak gerçek verilerle çalıştırıldığında sonuçlar çoğu zaman hayal kırıklığı yaratır.
Bu egzersizde, DAYSONMARKET değerinin yalnızca tahmin anında elimizde olan bilgiyi yansıtmasını sağlayacağız. Yani, ev hâlâ piyasadaysa, daha kaç gün piyasada kalacağını bilmiyoruz. test_df'i, 2017-12-10 tarihi itibarıyla elimizde olan bilgileri yansıtacak şekilde ayarlamamız gerekiyor.
NOT: Bu örnekte lit() fonksiyonu kullanılacaktır. Bu fonksiyon, bir fonksiyon çağrısında tüm bir sütun beklenirken tekil değer kullanabilmemizi sağlar.
Bu egzersiz, kursun bir parçasıdır
PySpark ile Özellik Mühendisliği
Egzersiz talimatları
- Daha sonra kullanmak üzere
pyspark.sql.functionsiçinden şu fonksiyonları içe aktar:datediff(),to_date(),lit(). - '2017-12-10' tarih string'ini önce
lit()ile literal'e çevirip sonrato_date()çağırarak bir pyspark tarihine dönüştür. where()kullanarakOFFMKTDATEdeğerisplit_date'e büyük veya eşit veLISTDATEdeğerisplit_date'e küçük veya eşit olanları filtreleyiptest_df'i oluştur.DAYSONMARKETsütununu,split_dateileLISTDATEarasındaki farkı hesaplayan yeni birDAYSONMARKETsütunu ile değiştir; tarih hesaplaması içindatediff()kullan. Verilen kodla yeni sütunu ve orijinalini incele.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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()