عند إجراء الانحدار الخطي وتشفير المتغيرات الفئوية ، يمكن أن تكون العلاقة الخطية المتداخلة المثالية مشكلة. للتغلب على هذا ، فإن الأسلوب المقترح هو استخدام أعمدة n-1. سيكون من المفيد إذا كان لدى pd.get_dummies()
معامل منطقي يقوم بإرجاع n-1 لكل عمود فئوي يتم ترميزه.
مثال:
>>> df
Account Network Device
0 Account1 Search Smartphone
1 Account1 Display Tablet
2 Account2 Search Smartphone
3 Account3 Display Smartphone
4 Account2 Search Tablet
5 Account3 Search Smartphone
>>> pd.get_dummies(df)
Account_Account1 Account_Account2 Account_Account3 Network_Display \
0 1 0 0 0
1 1 0 0 1
2 0 1 0 0
3 0 0 1 1
4 0 1 0 0
5 0 0 1 0
Network_Search Device_Smartphone Device_Tablet
0 1 1 0
1 0 0 1
2 1 1 0
3 0 1 0
4 1 0 1
5 1 1 0
بدلاً من ذلك ، أود الحصول على بعض المعلمات مثل drop_first=True
في get_dummies()
وهي تفعل شيئًا كالتالي:
>>> new_df = pd.DataFrame(index=df.index)
>>> for i in df:
new_df = new_df.join(pd.get_dummies(df[i]).iloc[:, 1:])
>>> new_df
Account2 Account3 Search Tablet
0 0 0 1 0
1 0 0 0 1
2 1 0 1 0
3 0 1 0 0
4 1 0 1 1
5 0 1 1 0
مصادر
http://fastml.com/converting-categorical-data-into-numbers-with-pandas-and-scikit-learn/
http://stackoverflow.com/questions/31498390/how-to-get-pandas-get-dummies-to-emit-n-1-variables-to-avoid-co-lineraity
http://dss.princeton.edu/online_help/analysis/dummy_variables.htm
يبدو جيدًا ، هل أنت مهتم بتقديم طلب سحب؟
: +1:
سيكون من المفيد السماح بإسقاط قيمة معينة ، وليس فقط "الأولى".
تؤثر الفئة المحذوفة (المجموعة المرجعية) على تفسير المعاملات.
على سبيل المثال ، من أفضل الممارسات حذف القيمة "الأكبر" كفئة مرجعية ؛
""
hot = df [['vol_k'، 'activation']]
cat_vars = list (df.select_dtypes (include = ['category']). أعمدة)
لـ var في cat_vars:
جديد = pd.get_dummies (df [var])
hot = hot.join (جديد)
#drop most frequent variable for ref category
drop_col = df.groupby([var]).size().idxmax()
hot.drop(drop_col, axis=1, inplace=True)
print(var + " dropping " + drop_col)
print(df.groupby([var]).size())`
""
التعليق الأكثر فائدة
سيكون من المفيد السماح بإسقاط قيمة معينة ، وليس فقط "الأولى".
تؤثر الفئة المحذوفة (المجموعة المرجعية) على تفسير المعاملات.
على سبيل المثال ، من أفضل الممارسات حذف القيمة "الأكبر" كفئة مرجعية ؛
""
hot = df [['vol_k'، 'activation']]
cat_vars = list (df.select_dtypes (include = ['category']). أعمدة)
لـ var في cat_vars:
جديد = pd.get_dummies (df [var])
hot = hot.join (جديد)
""