BaşlayınÜcretsiz başlayın

Eksik ve Kategorik Değerleri Safça Ele Alma

Random Forest Regression, daha zaman alıcı ve sıkıcı birçok veri hazırlama adımını yok saymamıza yetecek kadar sağlamdır. Random Forest'ın bazı uygulamaları eksik ve kategorik değerleri otomatik olarak ele alırken, PySpark bunu yapmaz. Ancak matematik aynı kaldığından, bazı saf (naif) değer atamalarıyla idare edebiliriz.

Eksik değerler için, verilerimiz kesinlikle pozitif olduğundan -1 atayacağız. Random forest bu değerde dallanacak ve aynı özelliğin geri kalan değerlerinden farklı şekilde ele alacaktır.

Kategorik değerler için, metin değerleri sayılara eşleyebiliriz ve random forest yine bunları üzerinde dallanarak uygun şekilde ele alacaktır. Bu örnekte, kodumuzu daha derli toplu yazmak için PySpark'a Giriş bölümünden pipelines konusunu tekrar kullanacağız. Lütfen egzersizin, veri çerçevesindeki sütunların dtypes bilgisini göstererek başladığını ve bunları bu egzersizin sonunda elde edeceğin sonuçlarla karşılaştırmanı isteyeceğini unutma.

NOT: Pipeline ve StringIndexer senin için zaten içe aktarıldı. categorical_cols listesi de hazır.

Bu egzersiz, kursun bir parçasıdır

PySpark ile Özellik Mühendisliği

Kursa Göz Atın

Egzersiz talimatları

  • WALKSCORE ve BIKESCORE içindeki değerleri fillna() ve subset parametresini kullanarak -1 ile değiştir.
  • Liste üreteci kullanarak categorical_cols içindeki her sütun için birer StringIndexer oluştur.
  • indexer_pipeline hattına fit() ve transform() uygula.
  • Artık gerekmediği için drop() ile categorical_cols sütunlarını kaldır. Sonuç veri türlerini dtypes ile incele.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

# Replace missing values
df = df.____(____, ____=[____, ____])

# Create list of StringIndexers using list comprehension
indexers = [____(inputCol=____, outputCol=____+"_IDX")\
            .setHandleInvalid("keep") for ____ in ____]
# Create pipeline of indexers
indexer_pipeline = Pipeline(stages=indexers)
# Fit and Transform the pipeline to the original data
df_indexed = ____.____(df).____(df)

# Clean up redundant columns
df_indexed = df_indexed.____(*____)
# Inspect data transformations
print(df_indexed.dtypes)
Kodu Düzenle ve Çalıştır