ΠΡΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΈ ΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠ°Π»ΡΠ½ΡΡ
ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΈΠ΄Π΅Π°Π»ΡΠ½Π°Ρ ΠΊΠΎΠ»Π»ΠΈΠ½Π΅Π°ΡΠ½ΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. Π§ΡΠΎΠ±Ρ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΠΎ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΠΌΡΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ 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', 'Π°ΠΊΡΠΈΠ²Π°ΡΠΈΡ']]
cat_vars = ΡΠΏΠΈΡΠΎΠΊ (df.select_dtypes (include = ['category']). columns)
Π΄Π»Ρ var Π² cat_vars:
new = 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', 'Π°ΠΊΡΠΈΠ²Π°ΡΠΈΡ']]
cat_vars = ΡΠΏΠΈΡΠΎΠΊ (df.select_dtypes (include = ['category']). columns)
Π΄Π»Ρ var Π² cat_vars:
new = pd.get_dummies (df [var])
hot = hot.join (Π½ΠΎΠ²ΡΠΉ)
`` ''