рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдорди рдФрд░ рд╢реНрд░реЗрдгреАрдмрджреНрдз рдЪрд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп, рдкреВрд░реНрдг рд╕рдорд░реВрдкрддрд╛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рддрд░реАрдХрд╛ 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:
рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдп рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдлрд╛рдпрджреЗрдордВрдж рд╣реЛрдЧрд╛, рди рдХрд┐ рдХреЗрд╡рд▓ 'рдкрд╣рд▓реЗ' рдХреЛред
рдЫреЛрдбрд╝реА рдЧрдИ рд╢реНрд░реЗрдгреА (рд╕рдВрджрд░реНрдн рд╕рдореВрд╣) рдЧреБрдгрд╛рдВрдХ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрджрд░реНрдн рд╢реНрд░реЗрдгреА рдХреЗ рд░реВрдк рдореЗрдВ 'рд╕рдмрд╕реЗ рдмрдбрд╝реЗ' рдорд╛рди рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдПрдХ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рд╣реИ;
````
рдЧрд░реНрдо = рдбреАрдПрдл [['vol_k', 'рд╕рдХреНрд░рд┐рдпрдг']]
cat_vars = рд╕реВрдЪреА (df.select_dtypes (рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ = ['рд╢реНрд░реЗрдгреА'])ред рдХреЙрд▓рдо)
cat_vars рдореЗрдВ рд╡рд░ рдХреЗ рд▓рд┐рдП:
рдирдпрд╛ = pd.get_dummies(df[var])
рдЧрд░реНрдо = рдЧрд░реНрдоред рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ (рдирдпрд╛)
#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())`
```
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдп рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдлрд╛рдпрджреЗрдордВрдж рд╣реЛрдЧрд╛, рди рдХрд┐ рдХреЗрд╡рд▓ 'рдкрд╣рд▓реЗ' рдХреЛред
рдЫреЛрдбрд╝реА рдЧрдИ рд╢реНрд░реЗрдгреА (рд╕рдВрджрд░реНрдн рд╕рдореВрд╣) рдЧреБрдгрд╛рдВрдХ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрджрд░реНрдн рд╢реНрд░реЗрдгреА рдХреЗ рд░реВрдк рдореЗрдВ 'рд╕рдмрд╕реЗ рдмрдбрд╝реЗ' рдорд╛рди рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдПрдХ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рд╣реИ;
````
рдЧрд░реНрдо = рдбреАрдПрдл [['vol_k', 'рд╕рдХреНрд░рд┐рдпрдг']]
cat_vars = рд╕реВрдЪреА (df.select_dtypes (рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ = ['рд╢реНрд░реЗрдгреА'])ред рдХреЙрд▓рдо)
cat_vars рдореЗрдВ рд╡рд░ рдХреЗ рд▓рд┐рдП:
рдирдпрд╛ = pd.get_dummies(df[var])
рдЧрд░реНрдо = рдЧрд░реНрдоред рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ (рдирдпрд╛)
```