कम ऑब्ज़र्वेशन वाले कॉलम हटाना
बहुत सारा फीचर इंजीनियरिंग करने के बाद एक कदम पीछे हटकर यह देखना अच्छा रहता है कि आपने क्या बनाया है. अगर आपने अपनी कैटेगोरिकल फीचर्स पर exploding या OneHot Encoding जैसी automation तकनीकें इस्तेमाल की हैं, तो संभव है कि अब आपके पास सैकड़ों नए binary फीचर्स हों. फीचर सिलेक्शन अपने आप में एक अलग कोर्स का विषय है, लेकिन कुछ तेज़ कदम हैं जिनसे आप अपने डेटासेट की dimensionality घटा सकते हैं.
इस अभ्यास में, हम वे कॉलम हटाएँगे जिनमें 30 से कम ऑब्ज़र्वेशन हैं. 30, सांख्यिकीय महत्व (statistical significance) के लिए एक आम न्यूनतम संख्या मानी जाती है. इससे कम होने पर रिश्ते महज़ संयोग के कारण overfitting कराते हैं!
NOTE: डेटा df नाम के dataframe में उपलब्ध है.
यह अभ्यास पाठ्यक्रम का हिस्सा है
PySpark के साथ Feature Engineering
अभ्यास निर्देश
- दिए गए
forलूप का उपयोग करते हुए, जो binary कॉलम्स की सूची पर इटरेट करता है,aggफ़ंक्शन से उस कॉलम के मानों काsumनिकालिए.collect()का उपयोग करके गणना तुरंत चलाइए और परिणामobs_countमें सेव कीजिए. obs_countकी तुलनाobs_thresholdसे कीजिए;ifस्टेटमेंट true होना चाहिए अगरobs_countobs_thresholdसे कम या बराबर है.cols_to_removeसूची में जो कॉलम जोड़े गए हैं, उन्हेंdrop()से हटाइए. याद रखें,*सूची को अनपैक करने देता है.- PySpark dataframes के शुरुआती और अंतिम shape को प्रिंट कीजिए: रिकॉर्ड्स की संख्या के लिए
count()और कॉलम्स की संख्या जानने के लिएdf.columnsयाnew_df.columnsपरlen()इस्तेमाल कीजिए.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
obs_threshold = 30
cols_to_remove = list()
# Inspect first 10 binary columns in list
for col in binary_cols[0:10]:
# Count the number of 1 values in the binary column
obs_count = df.____({col: ____}).____()[0][0]
# If less than our observation threshold, remove
if ____ ____ ____:
cols_to_remove.append(col)
# Drop columns and print starting and ending dataframe shapes
new_df = df.____(*____)
print('Rows: ' + str(df.____()) + ' Columns: ' + str(____(df.____)))
print('Rows: ' + str(new_df.____()) + ' Columns: ' + str(____(new_df.____)))