Pandas: рдкрдВрдбреЛрдВ get_dummies () рдФрд░ n-1 рд╕реНрдкрд╖реНрдЯ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдк Collinearity рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 15 рдЬрдире░ 2016  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pandas-dev/pandas

рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдорди рдФрд░ рд╢реНрд░реЗрдгреАрдмрджреНрдз рдЪрд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп, рдкреВрд░реНрдг рд╕рдорд░реВрдкрддрд╛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рддрд░реАрдХрд╛ 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

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдп рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдлрд╛рдпрджреЗрдордВрдж рд╣реЛрдЧрд╛, рди рдХрд┐ рдХреЗрд╡рд▓ 'рдкрд╣рд▓реЗ' рдХреЛред

рдЫреЛрдбрд╝реА рдЧрдИ рд╢реНрд░реЗрдгреА (рд╕рдВрджрд░реНрдн рд╕рдореВрд╣) рдЧреБрдгрд╛рдВрдХ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрджрд░реНрдн рд╢реНрд░реЗрдгреА рдХреЗ рд░реВрдк рдореЗрдВ 'рд╕рдмрд╕реЗ рдмрдбрд╝реЗ' рдорд╛рди рдХреЛ рдЫреЛрдбрд╝рдирд╛ рдПрдХ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рд╣реИ;

````

рдЧрд░реНрдо = рдбреАрдПрдл [['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())`

```

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ?

:+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())`

```

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

tade0726 picture tade0726  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

abatkins picture abatkins  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mfmain picture mfmain  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

idanivanov picture idanivanov  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ericdf picture ericdf  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ