MulaiMulai sekarang secara gratis

Menyesuaikan Fitur Waktu

Sepanjang kursus ini kita telah membahas beberapa risiko kebocoran informasi ke dalam model saat pelatihan. Kebocoran data akan membuat metrik akurasi model tampak sangat optimistis, tetapi ketika data nyata dijalankan hasilnya sering kali mengecewakan.

Dalam latihan ini, kita akan memastikan bahwa DAYSONMARKET hanya mencerminkan informasi yang kita miliki pada saat melakukan prediksi nilai. Artinya, jika rumah masih dipasarkan, kita tidak tahu berapa hari lagi rumah tersebut akan tetap di pasar. Kita perlu menyesuaikan test_df agar mencerminkan informasi yang saat ini kita miliki per 2017-12-10.

CATATAN: Contoh ini akan menggunakan fungsi lit(). Fungsi ini digunakan untuk memasukkan nilai tunggal ketika sebuah pemanggilan fungsi mengharapkan seluruh kolom.

Latihan ini adalah bagian dari kursus

Rekayasa Fitur dengan PySpark

Lihat Kursus

Petunjuk latihan

  • Impor fungsi berikut dari pyspark.sql.functions untuk digunakan nanti: datediff(), to_date(), lit().
  • Konversikan string tanggal '2017-12-10' menjadi tanggal pyspark dengan terlebih dahulu memanggil fungsi literal lit() padanya lalu to_date()
  • Buat test_df dengan memfilter OFFMKTDATE yang lebih besar atau sama dengan split_date dan LISTDATE yang kurang dari atau sama dengan split_date menggunakan where().
  • Ganti DAYSONMARKET dengan menghitung kolom baru bernama DAYSONMARKET; kolom baru ini harus merupakan selisih antara split_date dan LISTDATE. Gunakan datediff() untuk melakukan perhitungan tanggal. Periksa kolom baru dan kolom asli menggunakan kode yang disediakan.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

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()
Edit dan Jalankan Kode