рдХрд╛рдЧрд▓ рд╣реЛрдо рдХреНрд░реЗрдбрд┐рдЯ рдбрд┐рдлреЙрд▓реНрдЯ рд░рд┐рд╕реНрдХ рдХреЙрдореНрдкрд┐рдЯрд┐рд╢рди - рдбреЗрдЯрд╛ рдПрдирд╛рд▓рд┐рд╕рд┐рд╕ рдФрд░ рд╕рд┐рдВрдкрд▓ рдкреНрд░реЗрдбрд┐рдХреНрдЯрд┐рд╡ рдореЙрдбрд▓

рдорд┐рдиреНрд╕реНрдХ рдореЗрдВ рдбреЗрдЯрд╛ рдлреЗрд╕реНрдЯрд┐рд╡рд▓ 2 рдореЗрдВ, рд╡реНрд▓рд╛рджрд┐рдореАрд░ рдЗрдЧреНрд▓реЛрд╡рд┐рдХреЛрд╡, рд▓рд┐рдлрд╝реНрдЯ рдореЗрдВ рдорд╢реАрди рд╡рд┐рдЬрд╝рди рдЗрдВрдЬреАрдирд┐рдпрд░, рдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдХрд┐ рдбреЗрдЯрд╛ рд╕рд╛рдЗрдВрд╕ рд╕реАрдЦрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдУрдВ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдирд╛, рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдЪрд▓рд╛рдирд╛, рдЙрдиреНрд╣реЗрдВ рдЧрдардмрдВрдзрди рдХрд░рдирд╛, рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдФрд░ рдЕрдкрдирд╛ рдХрд╛рдо рджрд┐рдЦрд╛рдирд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рдкреНрд░рддрд┐рдорд╛рди рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░, рдореИрдВрдиреЗ рд╣реЛрдо рдХреНрд░реЗрдбрд┐рдЯ рдХреНрд░реЗрдбрд┐рдЯ рдЬреЛрдЦрд┐рдо рдореВрд▓реНрдпрд╛рдВрдХрди рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдкрд░ рдмрд╛рд░реАрдХреА рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдФрд░ рд╕рдордЭрд╛рдиреЗ (рд╢реБрд░реБрдЖрддреА, рд╡реИрдЬреНрдЮрд╛рдирд┐рдХреЛрдВ рдФрд░ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЦреБрдж рдХреЛ) рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдХреИрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдмрдирд╛рдПрдВред



( рдпрд╣рд╛рдВ рд╕реЗ рддрд╕реНрд╡реАрд░)

рд╣реЛрдо рдХреНрд░реЗрдбрд┐рдЯ рдЧреНрд░реБрдк рдмреИрдВрдХреЛрдВ рдФрд░ рдЧреИрд░-рдмреИрдВрдХ рдХреНрд░реЗрдбрд┐рдЯ рд╕рдВрдЧрдардиреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ рдЬреЛ 11 рджреЗрд╢реЛрдВ (рдЧреГрд╣ рдЛрдг рдФрд░ рд╡рд┐рддреНрдд рдмреИрдВрдХ рдПрд▓рдПрд▓рд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рд░реВрд╕ рд╕рд╣рд┐рдд) рдореЗрдВ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЙрди рдЙрдзрд╛рд░рдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рд╛рдЦ рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рддреИрдпрд╛рд░ рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдХреНрд░реЗрдбрд┐рдЯ рдЗрддрд┐рд╣рд╛рд╕ рдирд╣реАрдВ рд╣реИред рдЬреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрддреНрдХреГрд╖реНрдЯ рд╣реИ - рдЗрд╕ рд╢реНрд░реЗрдгреА рдХреЗ рдЙрдзрд╛рд░рдХрд░реНрддрд╛ рдЕрдХреНрд╕рд░ рдмреИрдВрдХ рд╕реЗ рдХреЛрдИ рдХреНрд░реЗрдбрд┐рдЯ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдХреИрдорд░ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрд▓реЛрдиреНрд╕ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдореЙрдбрд▓ рдХреА рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдФрд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдорддреМрд░ рдкрд░ рдмреИрдВрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ), рдЖрдк рдХреБрдЫ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рднреАред

рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рдирдореВрдиреЗ рдореЗрдВ 300+ рд╣рдЬрд╛рд░ рд░рд┐рдХреЙрд░реНрдб рд╣реЛрддреЗ рд╣реИрдВ, рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрдХреЗрдд рд╣реИрдВ - 122, рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рд╢реНрд░реЗрдгреАрдмрджреНрдз (рдЧреИрд░-рд╕рдВрдЦреНрдпрд╛рддреНрдордХ) рд╣реИрдВред рд╕рдВрдХреЗрдд рдЙрдзрд╛рд░рдХрд░реНрддрд╛ рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рд╡рд░рдг рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдиреАрдЪреЗ рдЙрд╕ рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЙрд╕рдХреЗ рдШрд░ рдХреА рджреАрд╡рд╛рд░реЗрдВ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВред рдбреЗрдЯрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ 6 рдЕрддрд┐рд░рд┐рдХреНрдд рддрд╛рд▓рд┐рдХрд╛рдУрдВ (рдХреНрд░реЗрдбрд┐рдЯ рдмреНрдпреВрд░реЛ, рдХреНрд░реЗрдбрд┐рдЯ рдХрд╛рд░реНрдб рдмреИрд▓реЗрдВрд╕ рдФрд░ рдкрд┐рдЫрд▓реЗ рдЛрдгреЛрдВ рдкрд░ рдбреЗрдЯрд╛) рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, рдЗрди рдЖрдВрдХрдбрд╝реЛрдВ рдХреЛ рднреА рдХрд┐рд╕реА рддрд░рд╣ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдореБрдЦреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдПрдХ рдорд╛рдирдХ рд╡рд░реНрдЧреАрдХрд░рдг рдХрд╛рд░реНрдп рдХреА рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ (TARGET рдХреНрд╖реЗрддреНрд░ рдореЗрдВ 1 рдХрд╛ рдЕрд░реНрде рд╣реИ рднреБрдЧрддрд╛рди рдХреЗ рд╕рд╛рде рдХреЛрдИ рдХрдард┐рдирд╛рдИ, 0 рдХрд╛ рдЕрд░реНрде рд╣реИ рдХреЛрдИ рдХрдард┐рдирд╛рдИ рдирд╣реАрдВ)ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ 0/1 рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ (рдЬреЛ, рд╕рдВрдпреЛрдЧрд╡рд╢, рд╕рднреА рдЬрдЯрд┐рд▓ рдореЙрдбрд▓ рдХреЗ рдкреВрд░реНрд╡рд╛рдиреБрднрд╡ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЗ рддрд░реАрдХреЛрдВ рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ)ред

рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдорд╢реАрди рд╕реАрдЦрдиреЗ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд╛рдЯрд╛рд╕реЗрдЯ рдмрд╣реБрдд рдорд╛рдирдХ рд╣реИ, рдЖрдпреЛрдЬрдХреЛрдВ рдиреЗ $ 70k рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдкреБрд░рд╕реНрдХрд╛рд░ рджрд┐рдпрд╛, рдирддреАрдЬрддрди, 2,600 рд╕реЗ рдЕрдзрд┐рдХ рдЯреАрдореЗрдВ рдЖрдЬ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рднрд╛рдЧ рд▓реЗ рд░рд╣реА рд╣реИрдВ, рдФрд░ рд▓рдбрд╝рд╛рдИ рдкреНрд░рддрд┐рд╢рдд рдореЗрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рджреВрд╕рд░реА рдУрд░, рдЗрд╕ рддрд░рд╣ рдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХрд╛ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХрдИ рдХрд░реНрдиреЗрд▓ рдЕрдЪреНрдЫреЗ EDA (рдПрдХреНрд╕рдкреНрд▓реЛрд░реЗрдЯрд░реА рдбреЗрдЯрд╛ рдПрдирд╛рд▓рд┐рд╕рд┐рд╕ - рдЧреНрд░рд╛рдлрд┐рдХрд▓ рд╕рд╣рд┐рдд рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рдЕрдиреБрд╕рдВрдзрд╛рди рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг), рдлрд╝реАрдЪрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ (рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо) рдХреЗ рд╕рд╛рде рдмрдирд╛рдП рдЧрдП рд╣реИрдВред рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдореЙрдбрд▓ рдХреЗ рд╕рд╛рдеред (рдХрд░реНрдиреЗрд▓ рдПрдХ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдХреЛрдИ рднреА рдЕрдиреНрдп рдХреБрдЧреНрд▓рд░реНрд╕ рдХреЛ рдЕрдкрдирд╛ рдХрд╛рдо рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрдЯ рд╕рдХрддрд╛ рд╣реИред)

рдХрд░реНрдиреЗрд▓ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ:


рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдорддреМрд░ рдкрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдпреЛрдЬрдирд╛ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред

  1. рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдордЭрдирд╛ рдФрд░ рдбреЗрдЯрд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛
  2. рдбреЗрдЯрд╛ рдХреА рд╕рдлрд╛рдИ рдФрд░ рд╕реНрд╡рд░реВрдкрдг
  3. EDA
  4. рдмреЗрд╕ рдореЙрдбрд▓
  5. рдореЙрдбрд▓ рдореЗрдВ рд╕реБрдзрд╛рд░
  6. рдореЙрдбрд▓ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдЗрд╕ рддрдереНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рд╣реИ рдФрд░ рдЕрднреА рдЗрд╕реЗ рдкреНрд░рдмрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдЖрдЗрдП рдЙрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдореЗрдВ рдЯреЗрдмрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЧреНрд░рд╛рдлрд╝ рдХрд╛ рдирд┐рд░реНрдорд╛рдг, рдФрд░ рдореИрдЯреНрд░рд┐рд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред

import pandas as pd import matplotlib.pyplot as plt import numpy as np import seaborn as sns %matplotlib inline 

рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╣рдо рд╕рднреА рдХреЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИред "../Input/" рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдпрд╣ рд╕реНрдерд╛рди, рдХрд╛рдЧрд▓ рдкрд░ рдЕрдкрдиреА рдЧреБрдард▓реА рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред

 import os PATH="../input/" print(os.listdir(PATH)) 

['application_test.csv', 'application_train.csv', 'bureau.csv', 'bureau_balance.csv', 'credit_card_balance.csv', 'HomeCredit_columns_description.csv', 'installments_payments.csv', 'POS_CASH_balance.csv', 'previous_application.csv']

рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде 8 рддрд╛рд▓рд┐рдХрд╛рдПрдБ рд╣реИрдВ (рддрд╛рд▓рд┐рдХрд╛ рдХреА рдЧрд┐рдирддреА рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ HomeCredit_columns_description.csv, рдЬрд┐рд╕рдореЗрдВ рдлрд╝реАрд▓реНрдб рдХрд╛ рд╡рд┐рд╡рд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИ), рдЬреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкрд░рд╕реНрдкрд░ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ:



application_train / application_test: рдорд╛рд╕реНрдЯрд░ рдбреЗрдЯрд╛, рдЙрдзрд╛рд░рдХрд░реНрддрд╛ рдХреА рдкрд╣рдЪрд╛рди SK_ID_CURR рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ
рдмреНрдпреВрд░реЛ: рдХреНрд░реЗрдбрд┐рдЯ рдмреНрдпреВрд░реЛ рд╕реЗ рдЕрдиреНрдп рдХреНрд░реЗрдбрд┐рдЯ рд╕рдВрд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рдкрд┐рдЫрд▓реЗ рдЛрдг рдкрд░ рдбреЗрдЯрд╛
bureau_balance: рдкрд┐рдЫрд▓реЗ рдмреНрдпреВрд░реЛ рдЛрдг рдкрд░ рдорд╛рд╕рд┐рдХ рдбреЗрдЯрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдорд╣реАрдирд╛ рд╣реИ
рдкрд┐рдЫрд▓рд╛_рдЖрд╡реЗрджрди: рд╣реЛрдо рдХреНрд░реЗрдбрд┐рдЯ рдореЗрдВ рдЛрдг рдХреЗ рд▓рд┐рдП рдкрд┐рдЫрд▓реЗ рдЖрд╡реЗрджрди, рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝реАрд▓реНрдб SK_ID_PREV рд╣реИ
POS_CASH_BALANCE: рд╕рд╛рдорд╛рдиреЛрдВ рдХреА рдЦрд░реАрдж рдХреЗ рд▓рд┐рдП рдирдХрдж рдФрд░ рдЛрдг рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╣реЛрдо рдХреНрд░реЗрдбрд┐рдЯ рдореЗрдВ рдЛрдг рдкрд░ рдорд╛рд╕рд┐рдХ рдбреЗрдЯрд╛
credit_card_balance: рд╣реЛрдо рдХреНрд░реЗрдбрд┐рдЯ рдореЗрдВ рдорд╛рд╕рд┐рдХ рдХреНрд░реЗрдбрд┐рдЯ рдХрд╛рд░реНрдб рдмреИрд▓реЗрдВрд╕ рдбреЗрдЯрд╛
рдХрд┐рд╢реНрддреЛрдВ_ рднреБрдЧрддрд╛рди: рд╣реЛрдо рдХреНрд░реЗрдбрд┐рдЯ рдкрд░ рдкрд┐рдЫрд▓реЗ рдЛрдгреЛрдВ рдХрд╛ рднреБрдЧрддрд╛рди рдЗрддрд┐рд╣рд╛рд╕ред

рдЖрдЗрдП рд╣рдо рдкрд╣рд▓реЗ рдореБрдЦреНрдп рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рд╕реЗ рдХреМрди рд╕реА рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдХрд╛рд▓реА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдФрд░ рдХрд┐рди рдореЙрдбрд▓реЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИред рдореВрд▓ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред

  • app_train = pd.read_csv (PATH + 'application_train.csv',)
  • app_test = pd.read_csv (PATH + 'application_test.csv',)
  • рдкреНрд░рд┐рдВрдЯ ("рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗрдЯ рдкреНрд░рд╛рд░реВрдк:", app_train.shape)
  • рдкреНрд░рд┐рдВрдЯ ("рдкрд░реАрдХреНрд╖рдг рдирдореВрдирд╛ рдкреНрд░рд╛рд░реВрдк:", app_test.shape)
  • рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдирдореВрдирд╛ рдкреНрд░рд╛рд░реВрдк: (307511, 122)
  • рдкрд░реАрдХреНрд╖рдг рдирдореВрдирд╛ рдкреНрд░рд╛рд░реВрдк: (48744, 121)

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдирдореВрдиреЗ рдореЗрдВ 307 рд╣рдЬрд╛рд░ рд░рд┐рдХреЙрд░реНрдб рдФрд░ 122 рд╕рдВрдХреЗрдд рд╣реИрдВ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ 49 рд╣рдЬрд╛рд░ рд░рд┐рдХреЙрд░реНрдб рдФрд░ 121 рд╕рдВрдХреЗрдд рд╣реИрдВред рд╡рд┐рд╕рдВрдЧрддрд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдирдореВрдиреЗ рдореЗрдВ рдХреЛрдИ рд▓рдХреНрд╖реНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд▓рдХреНрд╖реНрдп рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░реЗрдВрдЧреЗред

рдЖрдЗрдП рдбреЗрдЯрд╛ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ

 pd.set_option('display.max_columns', None) #  pandas     app_train.head() 



(рдкрд╣рд▓реЗ 8 рдХреЙрд▓рдо рджрд┐рдЦрд╛рдП рдЧрдП)

рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рджреЗрдЦрдирд╛ рдХрд╛рдлреА рдХрдард┐рди рд╣реИред рдЖрдЗрдП рдХреЙрд▓рдо рдХреА рд╕реВрдЪреА рджреЗрдЦреЗрдВ:

app_train.info(max_cols=122)
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 307511 entries, 0 to 307510
Data columns (total 122 columns):
SK_ID_CURR 307511 non-null int64
TARGET 307511 non-null int64
NAME_CONTRACT_TYPE 307511 non-null object
CODE_GENDER 307511 non-null object
FLAG_OWN_CAR 307511 non-null object
FLAG_OWN_REALTY 307511 non-null object
CNT_CHILDREN 307511 non-null int64
AMT_INCOME_TOTAL 307511 non-null float64
AMT_CREDIT 307511 non-null float64
AMT_ANNUITY 307499 non-null float64
AMT_GOODS_PRICE 307233 non-null float64
NAME_TYPE_SUITE 306219 non-null object
NAME_INCOME_TYPE 307511 non-null object
NAME_EDUCATION_TYPE 307511 non-null object
NAME_FAMILY_STATUS 307511 non-null object
NAME_HOUSING_TYPE 307511 non-null object
REGION_POPULATION_RELATIVE 307511 non-null float64
DAYS_BIRTH 307511 non-null int64
DAYS_EMPLOYED 307511 non-null int64
DAYS_REGISTRATION 307511 non-null float64
DAYS_ID_PUBLISH 307511 non-null int64
OWN_CAR_AGE 104582 non-null float64
FLAG_MOBIL 307511 non-null int64
FLAG_EMP_PHONE 307511 non-null int64
FLAG_WORK_PHONE 307511 non-null int64
FLAG_CONT_MOBILE 307511 non-null int64
FLAG_PHONE 307511 non-null int64
FLAG_EMAIL 307511 non-null int64
OCCUPATION_TYPE 211120 non-null object
CNT_FAM_MEMBERS 307509 non-null float64
REGION_RATING_CLIENT 307511 non-null int64
REGION_RATING_CLIENT_W_CITY 307511 non-null int64
WEEKDAY_APPR_PROCESS_START 307511 non-null object
HOUR_APPR_PROCESS_START 307511 non-null int64
REG_REGION_NOT_LIVE_REGION 307511 non-null int64
REG_REGION_NOT_WORK_REGION 307511 non-null int64
LIVE_REGION_NOT_WORK_REGION 307511 non-null int64
REG_CITY_NOT_LIVE_CITY 307511 non-null int64
REG_CITY_NOT_WORK_CITY 307511 non-null int64
LIVE_CITY_NOT_WORK_CITY 307511 non-null int64
ORGANIZATION_TYPE 307511 non-null object
EXT_SOURCE_1 134133 non-null float64
EXT_SOURCE_2 306851 non-null float64
EXT_SOURCE_3 246546 non-null float64
APARTMENTS_AVG 151450 non-null float64
BASEMENTAREA_AVG 127568 non-null float64
YEARS_BEGINEXPLUATATION_AVG 157504 non-null float64
YEARS_BUILD_AVG 103023 non-null float64
COMMONAREA_AVG 92646 non-null float64
ELEVATORS_AVG 143620 non-null float64
ENTRANCES_AVG 152683 non-null float64
FLOORSMAX_AVG 154491 non-null float64
FLOORSMIN_AVG 98869 non-null float64
LANDAREA_AVG 124921 non-null float64
LIVINGAPARTMENTS_AVG 97312 non-null float64
LIVINGAREA_AVG 153161 non-null float64
NONLIVINGAPARTMENTS_AVG 93997 non-null float64
NONLIVINGAREA_AVG 137829 non-null float64
APARTMENTS_MODE 151450 non-null float64
BASEMENTAREA_MODE 127568 non-null float64
YEARS_BEGINEXPLUATATION_MODE 157504 non-null float64
YEARS_BUILD_MODE 103023 non-null float64
COMMONAREA_MODE 92646 non-null float64
ELEVATORS_MODE 143620 non-null float64
ENTRANCES_MODE 152683 non-null float64
FLOORSMAX_MODE 154491 non-null float64
FLOORSMIN_MODE 98869 non-null float64
LANDAREA_MODE 124921 non-null float64
LIVINGAPARTMENTS_MODE 97312 non-null float64
LIVINGAREA_MODE 153161 non-null float64
NONLIVINGAPARTMENTS_MODE 93997 non-null float64
NONLIVINGAREA_MODE 137829 non-null float64
APARTMENTS_MEDI 151450 non-null float64
BASEMENTAREA_MEDI 127568 non-null float64
YEARS_BEGINEXPLUATATION_MEDI 157504 non-null float64
YEARS_BUILD_MEDI 103023 non-null float64
COMMONAREA_MEDI 92646 non-null float64
ELEVATORS_MEDI 143620 non-null float64
ENTRANCES_MEDI 152683 non-null float64
FLOORSMAX_MEDI 154491 non-null float64
FLOORSMIN_MEDI 98869 non-null float64
LANDAREA_MEDI 124921 non-null float64
LIVINGAPARTMENTS_MEDI 97312 non-null float64
LIVINGAREA_MEDI 153161 non-null float64
NONLIVINGAPARTMENTS_MEDI 93997 non-null float64
NONLIVINGAREA_MEDI 137829 non-null float64
FONDKAPREMONT_MODE 97216 non-null object
HOUSETYPE_MODE 153214 non-null object
TOTALAREA_MODE 159080 non-null float64
WALLSMATERIAL_MODE 151170 non-null object
EMERGENCYSTATE_MODE 161756 non-null object
OBS_30_CNT_SOCIAL_CIRCLE 306490 non-null float64
DEF_30_CNT_SOCIAL_CIRCLE 306490 non-null float64
OBS_60_CNT_SOCIAL_CIRCLE 306490 non-null float64
DEF_60_CNT_SOCIAL_CIRCLE 306490 non-null float64
DAYS_LAST_PHONE_CHANGE 307510 non-null float64
FLAG_DOCUMENT_2 307511 non-null int64
FLAG_DOCUMENT_3 307511 non-null int64
FLAG_DOCUMENT_4 307511 non-null int64
FLAG_DOCUMENT_5 307511 non-null int64
FLAG_DOCUMENT_6 307511 non-null int64
FLAG_DOCUMENT_7 307511 non-null int64
FLAG_DOCUMENT_8 307511 non-null int64
FLAG_DOCUMENT_9 307511 non-null int64
FLAG_DOCUMENT_10 307511 non-null int64
FLAG_DOCUMENT_11 307511 non-null int64
FLAG_DOCUMENT_12 307511 non-null int64
FLAG_DOCUMENT_13 307511 non-null int64
FLAG_DOCUMENT_14 307511 non-null int64
FLAG_DOCUMENT_15 307511 non-null int64
FLAG_DOCUMENT_16 307511 non-null int64
FLAG_DOCUMENT_17 307511 non-null int64
FLAG_DOCUMENT_18 307511 non-null int64
FLAG_DOCUMENT_19 307511 non-null int64
FLAG_DOCUMENT_20 307511 non-null int64
FLAG_DOCUMENT_21 307511 non-null int64
AMT_REQ_CREDIT_BUREAU_HOUR 265992 non-null float64
AMT_REQ_CREDIT_BUREAU_DAY 265992 non-null float64
AMT_REQ_CREDIT_BUREAU_WEEK 265992 non-null float64
AMT_REQ_CREDIT_BUREAU_MON 265992 non-null float64
AMT_REQ_CREDIT_BUREAU_QRT 265992 non-null float64
AMT_REQ_CREDIT_BUREAU_YEAR 265992 non-null float64
dtypes: float64(65), int64(41), object(16)
memory usage: 286.2+ MB


HomeCredit_columns_description рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдлрд╝реАрд▓реНрдб рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╕реНрддреГрдд рдПрдиреЛрдЯреЗрд╢рди рдпрд╛рдж рдХрд░реЗрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдбреЗрдЯрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЕрдзреВрд░рд╛ рд╣реИ рдФрд░ рднрд╛рдЧ рд╢реНрд░реЗрдгреАрдмрджреНрдз рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдореЙрдбрд▓ рдРрд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдкрд░, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдкреВрд░рд╛ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рдо рд╕реАрдзреЗ рдИрдбреАрдП рдХреЗ рдкрд╛рд╕ рдЬрд╛рдПрдВрдЧреЗ

рдЦреЛрдЬрдкреВрд░реНрдг рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдпрд╛ рдкреНрд░рд╛рдердорд┐рдХ рдбреЗрдЯрд╛ рдЦрдирди


рдИрдбреАрдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдо рдореВрд▓ рдЖрдБрдХрдбрд╝реЛрдВ рдХреЛ рдЧрд┐рдирддреЗ рд╣реИрдВ рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рднреАрддрд░ рд░реБрдЭрд╛рди, рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ, рдкреИрдЯрд░реНрди рдФрд░ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдЦрд╛рдВрдХрди рдмрдирд╛рддреЗ рд╣реИрдВред рдИрдбреАрдП рдХрд╛ рд▓рдХреНрд╖реНрдп рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреНрдпрд╛ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдКрдкрд░ рд╕реЗ рдиреАрдЪреЗ рддрдХ рдЬрд╛рддрд╛ рд╣реИ - рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрд╡рд▓реЛрдХрди рд╕реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рдЬреЛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдмреНрдпрд╛рдЬ рдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЗрди рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЙрдбрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдЪрдпрди рдФрд░ рдЗрд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд▓рдХреНрд╖реНрдп рд╡рд┐рддрд░рдг рд╡рд┐рддрд░рдг


 app_train.TARGET.value_counts() 

0 282686
1 24825
Name: TARGET, dtype: int64


 plt.style.use('fivethirtyeight') plt.rcParams["figure.figsize"] = [8,5]тАЛ plt.hist(app_train.TARGET) plt.show()  plt.style.use('fivethirtyeight') plt.rcParams["figure.figsize"] = [8,5]тАЛ plt.hist(app_train.TARGET) plt.show() 



рдореИрдВ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ 1 рдХрд╛ рдорддрд▓рдм рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рд╣реЛрддрд╛ рд╣реИ, 0 рдХрд╛ рдорддрд▓рдм рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЙрдзрд╛рд░рдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреБрдирд░реНрднреБрдЧрддрд╛рди рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд▓рдЧрднрдЧ 8% рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрдХреНрд╖рд╛рдПрдВ рд╕рдВрддреБрд▓рд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдореЙрдбрд▓ рдмрдирд╛рддреЗ рд╕рдордп рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред

рдорд┐рд╕рд┐рдВрдЧ рдбреЗрдЯрд╛ рд░рд┐рд╕рд░реНрдЪ


рд╣рдордиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреА рдХрдореА рдХрд╛рдлреА рд╣реИред рдЖрдЗрдП рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦреЗрдВ рдХрд┐ рдХрд╣рд╛рдВ рдФрд░ рдХреНрдпрд╛ рдЧрд╛рдпрдм рд╣реИред

 #      def missing_values_table(df): #   mis_val = df.isnull().sum() #    mis_val_percent = 100 * df.isnull().sum() / len(df) #    mis_val_table = pd.concat([mis_val, mis_val_percent], axis=1) #   mis_val_table_ren_columns = mis_val_table.rename( columns = {0 : 'Missing Values', 1 : '% of Total Values'}) #    mis_val_table_ren_columns = mis_val_table_ren_columns[ mis_val_table_ren_columns.iloc[:,1] != 0].sort_values( '% of Total Values', ascending=False).round(1) #  print ("   " + str(df.shape[1]) + " .\n" " " + str(mis_val_table_ren_columns.shape[0]) + "    .") #     return mis_val_table_ren_columns missing_values = missing_values_table(app_train) missing_values.head(10) 


122 .
67 .



рдЧреНрд░рд╛рдлрд┐рдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ:

 plt.style.use('seaborn-talk')тАЛ fig = plt.figure(figsize=(18,6)) miss_train = pd.DataFrame((app_train.isnull().sum())*100/app_train.shape[0]).reset_index() miss_test = pd.DataFrame((app_test.isnull().sum())*100/app_test.shape[0]).reset_index() miss_train["type"] = "" miss_test["type"] = "" missing = pd.concat([miss_train,miss_test],axis=0) ax = sns.pointplot("index",0,data=missing,hue="type") plt.xticks(rotation =90,fontsize =7) plt.title("    ") plt.ylabel("  %") plt.xlabel("")  plt.style.use('seaborn-talk')тАЛ fig = plt.figure(figsize=(18,6)) miss_train = pd.DataFrame((app_train.isnull().sum())*100/app_train.shape[0]).reset_index() miss_test = pd.DataFrame((app_test.isnull().sum())*100/app_test.shape[0]).reset_index() miss_train["type"] = "" miss_test["type"] = "" missing = pd.concat([miss_train,miss_test],axis=0) ax = sns.pointplot("index",0,data=missing,hue="type") plt.xticks(rotation =90,fontsize =7) plt.title("    ") plt.ylabel("  %") plt.xlabel("") 




"рдЗрд╕ рд╕рдмрдХрд╛ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ" рд╕рд╡рд╛рд▓ рдХреЗ рдХрдИ рдЬрд╡рд╛рдм рд╣реИрдВред рдЖрдк рдЗрд╕реЗ рд╢реВрдиреНрдп рд╕реЗ рднрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдордзреНрдпрдпреБрдЧреАрди рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдмрд┐рдирд╛ рдмрд╕ рд▓рд╛рдЗрдиреЗрдВ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдм рдЙрд╕ рдореЙрдбрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд▓рд╛рдкрддрд╛ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЬрдмрдХрд┐ рд╣рдо рдЗрд╕ рддрдереНрдп рдХреЛ рдпрд╛рдж рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рд╕рдм рдХреБрдЫ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред

рдХреЙрд▓рдо рдкреНрд░рдХрд╛рд░ рдФрд░ рд╢реНрд░реЗрдгреАрдмрджреНрдз рдХреЛрдбрд┐рдВрдЧ


рдЬреИрд╕рд╛ рдХрд┐ рд╣рдореЗрдВ рдпрд╛рдж рд╣реИред рд╕реНрддрдВрднреЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдкреНрд░рдХрд╛рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдЗрд╕рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рд╢реНрд░реЗрдгреА рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЖрдЗрдП рдЗрди рд╕реНрддрдВрднреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХреА рд╕реЗ рджреЗрдЦреЗрдВред

 app_train.dtypes.value_counts() 

float64 65
int64 41
object 16
dtype: int64


 app_train.select_dtypes(include=[object]).apply(pd.Series.nunique, axis = 0) 

NAME_CONTRACT_TYPE 2
CODE_GENDER 3
FLAG_OWN_CAR 2
FLAG_OWN_REALTY 2
NAME_TYPE_SUITE 7
NAME_INCOME_TYPE 8
NAME_EDUCATION_TYPE 5
NAME_FAMILY_STATUS 6
NAME_HOUSING_TYPE 6
OCCUPATION_TYPE 18
WEEKDAY_APPR_PROCESS_START 7
ORGANIZATION_TYPE 58
FONDKAPREMONT_MODE 4
HOUSETYPE_MODE 3
WALLSMATERIAL_MODE 7
EMERGENCYSTATE_MODE 2
dtype: int64


рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 16 рдХреЙрд▓рдо рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ 2 рд╕реЗ 58 рд╡рд┐рднрд┐рдиреНрди рдореВрд▓реНрдп рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдореЙрдбрд▓ рдРрд╕реЗ рдХреЙрд▓рдо рдХреЗ рд╕рд╛рде рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдХреБрдЫ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЬреИрд╕реЗ рдХрд┐ рд▓рд╛рдЗрдЯ рдЬреАрдмреАрдПрдо рдпрд╛ рдХреИрдЯрдмреЙрд╕реНрдЯ)ред рдЪреВрдВрдХрд┐ рд╣рдо рдбреЗрдЯрд╛рд╕реЗрдЯ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдореЙрдбрд▓реЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореВрд▓ рд░реВрдк рд╕реЗ рджреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВ:

  • рд▓реЗрдмрд▓ рдПрдирдХреЛрдбрд┐рдВрдЧ - рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЛ 0, 1, 2 рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЕрдВрдХ рджрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рдПрдХ рд╣реА рдХреЙрд▓рдо рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ
  • рдПрдХ-рд╣реЙрдЯ-рдПрдиреНрдХреЛрдбрд┐рдВрдЧ - рдПрдХ рдХреЙрд▓рдо рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрдИ рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпреЗ рдХреЙрд▓рдо рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рд╕ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рд╣реИред

рд▓реЛрдХрдкреНрд░рд┐рдп рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд▓рдХреНрд╖реНрдп рдПрдиреНрдХреЛрдбрд┐рдВрдЧ (рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг roryorangepants рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж) рдХреЗ рд▓рд╛рдпрдХ рд╣реИ ред

рд▓реЗрдмрд▓ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕рдорд╕реНрдпрд╛ рд╣реИ - рдпрд╣ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ 100,000 рдХреА рдЙрдзрд╛рд░рдХрд░реНрддрд╛ рдХреА рдЖрдп рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ 20,000 рдХреА рдЖрдп рд╕реЗ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдФрд░ рдмреЗрд╣рддрд░ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╢рд╣рд░ рджреВрд╕рд░реЗ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдХреЛ рдореВрд▓реНрдп 100 рдФрд░ рджреВрд╕рд░реЗ рдХреЛ 200 рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред ?

рджреВрд╕рд░реА рдУрд░ рдПрдХ-рд╣реЙрдЯ-рдПрдиреНрдХреЛрдбрд┐рдВрдЧ, рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди "рдЕрддрд┐рд░рд┐рдХреНрдд" рдХреЙрд▓рдо рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рд╡рди-рд╣реЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рдорд╛рди рд▓рд┐рдВрдЧ рдХреЛ рдПрдирдХреЛрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рджреЛ рдХреЙрд▓рдо рдорд┐рд▓рддреЗ рд╣реИрдВ, "рдкреБрд░реБрд╖ рд▓рд┐рдВрдЧ" рдФрд░ "рдорд╣рд┐рд▓рд╛ рд▓рд┐рдВрдЧ", рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛, "рдпрд╣ рдкреБрд░реБрд╖ рд╣реИ"ред

рдПрдХ рдЕрдЪреНрдЫреЗ рдбрд╛рдЯрд╛рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП, рд▓реЗрдмрд▓ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдо рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдХреЛрдб рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рдФрд░ рдмрд╛рдХреА рд╕рдм рдХреБрдЫ - рд╡рди-рд╣реЙрдЯ, рд▓реЗрдХрд┐рди рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП рд╣рдо рд╡рди-рд╣реЙрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдм рдХреБрдЫ рдПрдирдХреЛрдб рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЧрдгрдирд╛ рдХреА рдЧрддрд┐ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдкрд╛рдВрдбрд╛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдпрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред

 app_train = pd.get_dummies(app_train) app_test = pd.get_dummies(app_test)тАЛ print('Training Features shape: ', app_train.shape) print('Testing Features shape: ', app_test.shape)  app_train = pd.get_dummies(app_train) app_test = pd.get_dummies(app_test)тАЛ print('Training Features shape: ', app_train.shape) print('Testing Features shape: ', app_test.shape) 

Training Features shape: (307511, 246)
Testing Features shape: (48744, 242)


рдЪреВрдВрдХрд┐ рдЪрдпрди рдХреЙрд▓рдо рдореЗрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЙрд▓рдо рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрдм рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреАред рд╕рдВрд░реЗрдЦрдг рдЖрд╡рд╢реНрдпрдХ рд╣реИ - рдЖрдкрдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗрдЯ рд╕реЗ рд╕реНрддрдВрднреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рд╕рдВрд░реЗрдЦрд┐рдд рд╡рд┐рдзрд┐ рдмрдирд╛рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЕрдХреНрд╖ = 1 (рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

 # ,           . train_labels = app_train['TARGET']тАЛ #  -   .     app_train, app_test = app_train.align(app_test, join = 'inner', axis = 1)тАЛ print('  : ', app_train.shape) print('  : ', app_test.shape)тАЛ # Add target back in to the data app_train['TARGET'] = train_labels  # ,           . train_labels = app_train['TARGET']тАЛ #  -   .     app_train, app_test = app_train.align(app_test, join = 'inner', axis = 1)тАЛ print('  : ', app_train.shape) print('  : ', app_test.shape)тАЛ # Add target back in to the data app_train['TARGET'] = train_labels  # ,           . train_labels = app_train['TARGET']тАЛ #  -   .     app_train, app_test = app_train.align(app_test, join = 'inner', axis = 1)тАЛ print('  : ', app_train.shape) print('  : ', app_test.shape)тАЛ # Add target back in to the data app_train['TARGET'] = train_labels  # ,           . train_labels = app_train['TARGET']тАЛ #  -   .     app_train, app_test = app_train.align(app_test, join = 'inner', axis = 1)тАЛ print('  : ', app_train.shape) print('  : ', app_test.shape)тАЛ # Add target back in to the data app_train['TARGET'] = train_labels 

: (307511, 242)
: (48744, 242)


рдбреЗрдЯрд╛ рд╕рд╣рд╕рдВрдмрдВрдз


рдбреЗрдЯрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд▓рдХреНрд╖реНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдкрд┐рдпрд░реНрд╕рди рд╕рд╣рд╕рдВрдмрдВрдз рдЧреБрдгрд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╣реИред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХрддрд╛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд░рд▓ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЧреБрдгрд╛рдВрдХ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:

  • 00 -19 "рдмрд╣реБрдд рдХрдордЬреЛрд░"
  • 20 -39 "рдХрдордЬреЛрд░"
  • 40 -59 "рдФрд╕рдд"
  • 60 -79 рдордЬрдмреВрдд
  • 80-1.0 "рдмрд╣реБрдд рдордЬрдмреВрдд"


 #    correlations = app_train.corr()['TARGET'].sort_values()тАЛ #  print('  : \n', correlations.tail(15)) print('\n  : \n', correlations.head(15))  #    correlations = app_train.corr()['TARGET'].sort_values()тАЛ #  print('  : \n', correlations.tail(15)) print('\n  : \n', correlations.head(15)) 

:
DAYS_REGISTRATION 0.041975
OCCUPATION_TYPE_Laborers 0.043019
FLAG_DOCUMENT_3 0.044346
REG_CITY_NOT_LIVE_CITY 0.044395
FLAG_EMP_PHONE 0.045982
NAME_EDUCATION_TYPE_Secondary / secondary special 0.049824
REG_CITY_NOT_WORK_CITY 0.050994
DAYS_ID_PUBLISH 0.051457
CODE_GENDER_M 0.054713
DAYS_LAST_PHONE_CHANGE 0.055218
NAME_INCOME_TYPE_Working 0.057481
REGION_RATING_CLIENT 0.058899
REGION_RATING_CLIENT_W_CITY 0.060893
DAYS_BIRTH 0.078239
TARGET 1.000000
Name: TARGET, dtype: float64

:
EXT_SOURCE_3 -0.178919
EXT_SOURCE_2 -0.160472
EXT_SOURCE_1 -0.155317
NAME_EDUCATION_TYPE_Higher education -0.056593
CODE_GENDER_F -0.054704
NAME_INCOME_TYPE_Pensioner -0.046209
ORGANIZATION_TYPE_XNA -0.045987
DAYS_EMPLOYED -0.044932
FLOORSMAX_AVG -0.044003
FLOORSMAX_MEDI -0.043768
FLOORSMAX_MODE -0.043226
EMERGENCYSTATE_MODE_No -0.042201
HOUSETYPE_MODE_block of flats -0.040594
AMT_GOODS_PRICE -0.039645
REGION_POPULATION_RELATIVE -0.037227
Name: TARGET, dtype: float64


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рднреА рдбреЗрдЯрд╛ рдХрдордЬреЛрд░ рд░реВрдк рд╕реЗ рд▓рдХреНрд╖реНрдп рдХреЗ рд╕рд╛рде рд╕рд╣рд╕рдВрдмрджреНрдз рд╣реЛрддреЗ рд╣реИрдВ (рдХреЗрд╡рд▓ рд▓рдХреНрд╖реНрдп рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЬреЛ, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рд╕реНрд╡рдпрдВ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ)ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдореНрд░ рдФрд░ рдХреБрдЫ "рдмрд╛рд╣рд░реА рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд" рдбреЗрдЯрд╛ рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВред рдпрд╣ рд╕рдВрднрд╡рддрдГ рдЕрдиреНрдп рдХреНрд░реЗрдбрд┐рдЯ рд╕рдВрдЧрдардиреЛрдВ рдХреЗ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ рд╣реИрдВред рдпрд╣ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИ рдХрд┐ рдпрджреНрдпрдкрд┐ рд▓рдХреНрд╖реНрдп рдХреЛ рдХреНрд░реЗрдбрд┐рдЯ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдореЗрдВ рдРрд╕реЗ рдбреЗрдЯрд╛ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдо рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЙрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдВрдЧреЗред

рдЖрдпреБ


рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдкреБрд░рд╛рдиреЗ рдЧреНрд░рд╛рд╣рдХ, рд╡рд╛рдкрд╕реА рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЕрдзрд┐рдХ (рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдорд╛ рддрдХ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ)ред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдЛрдг рдЬрд╛рд░реА рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирдХрд╛рд░рд╛рддреНрдордХ рджрд┐рдиреЛрдВ рдореЗрдВ рдЙрдореНрд░ рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдпрд╣ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЧреИрд░-рдЪреБрдХреМрддреА (рдЬреЛ рдХреБрдЫ рдЕрдЬреАрдм рджрд┐рдЦрддрд╛ рд╣реИ) рдХреЗ рд╕рд╛рде рд╕рд╣рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрддрд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп рдкрд░ рд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рд╣рд╕рдВрдмрдВрдз рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред

 app_train['DAYS_BIRTH'] = abs(app_train['DAYS_BIRTH']) app_train['DAYS_BIRTH'].corr(app_train['TARGET']) 

-0.078239308309827088

рдЪрд▓реЛ рдЪрд░ рдкрд░ рдПрдХ рдХрд░реАрдм рджреЗрдЦреЛред рдЖрдЗрдП рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВред

 #     ,  25  plt.hist(app_train['DAYS_BIRTH'] / 365, edgecolor = 'k', bins = 25) plt.title('Age of Client'); plt.xlabel('Age (years)'); plt.ylabel('Count'); 



рд╡рд┐рддрд░рдг рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рд╕реНрд╡рдпрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдЙрдкрдпреЛрдЧреА рдХрд╣ рд╕рдХрддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд╣рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЖрдЙрдЯрд▓реЗрдпрд░ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд▓рдЧрддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рдкрд░ рдЙрдореНрд░ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрд░реНрдиреЗрд▓ рдШрдирддреНрд╡ рдЕрдиреБрдорд╛рди (рдХреЗрдбреАрдИ) рдХреЗ рдПрдХ рдЧреНрд░рд╛рдл рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдкрд░рдорд╛рдгреБ рдШрдирддреНрд╡ рдХрд╛ рд╡рд┐рддрд░рдг, рд▓рдХреНрд╖реНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд░рдВрдЧреЛрдВ рдореЗрдВ рдЪрд┐рддреНрд░рд┐рддред рдпрд╣ рдПрдХ рдЪрд░ рдХреЗ рд╡рд┐рддрд░рдг рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реНрдореВрдереЗрдб рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо (рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдХреЗ рд▓рд┐рдП рдЧреЙрд╕рд┐рдпрди рдХрд░реНрдиреЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕реЗ рддрдм рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдФрд╕рддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

 # KDE ,   sns.kdeplot(app_train.loc[app_train['TARGET'] == 0, 'DAYS_BIRTH'] / 365, label = 'target == 0')тАЛ # KDE   sns.kdeplot(app_train.loc[app_train['TARGET'] == 1, 'DAYS_BIRTH'] / 365, label = 'target == 1')тАЛ #  plt.xlabel('Age (years)'); plt.ylabel('Density'); plt.title('Distribution of Ages');  # KDE ,   sns.kdeplot(app_train.loc[app_train['TARGET'] == 0, 'DAYS_BIRTH'] / 365, label = 'target == 0')тАЛ # KDE   sns.kdeplot(app_train.loc[app_train['TARGET'] == 1, 'DAYS_BIRTH'] / 365, label = 'target == 1')тАЛ #  plt.xlabel('Age (years)'); plt.ylabel('Density'); plt.title('Distribution of Ages');  # KDE ,   sns.kdeplot(app_train.loc[app_train['TARGET'] == 0, 'DAYS_BIRTH'] / 365, label = 'target == 0')тАЛ # KDE   sns.kdeplot(app_train.loc[app_train['TARGET'] == 1, 'DAYS_BIRTH'] / 365, label = 'target == 1')тАЛ #  plt.xlabel('Age (years)'); plt.ylabel('Density'); plt.title('Distribution of Ages'); 



рдЬреИрд╕рд╛ рдХрд┐ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХрдо рдЙрдореНрд░ рдХреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЪреВрдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЕрдзрд┐рдХ рд╣реИ рдФрд░ рдмрдврд╝рддреА рдЙрдореНрд░ рдХреЗ рд╕рд╛рде рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╣рдореЗрд╢рд╛ рдпреБрд╡рд╛рдУрдВ рдХреЛ рдЛрдг рджреЗрдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ, рдЗрд╕ рддрд░рд╣ рдХреА "рд╕рд┐рдлрд╛рд░рд┐рд╢" рдХреЗрд╡рд▓ рдмреИрдВрдХ рдХреЗ рд▓рд┐рдП рдЖрдп рдФрд░ рдмрд╛рдЬрд╛рд░ рдХрд╛ рдиреБрдХрд╕рд╛рди рд╣реЛрдЧрд╛ред рдпрд╣ рдРрд╕реЗ рдЛрдгреЛрдВ рдХреА рдЕрдзрд┐рдХ рдЧрд╣рди рдирд┐рдЧрд░рд╛рдиреА, тАЛтАЛрдореВрд▓реНрдпрд╛рдВрдХрди рдФрд░ рд╕рдВрднрд╡рддрдГ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдпреБрд╡рд╛ рдЙрдзрд╛рд░рдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд┐рддреНрддреАрдп рд╢рд┐рдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред

рдмрд╛рд╣рд░реА рд╕реНрд░реЛрдд


рдЪрд▓реЛ "рдмрд╛рд╣рд░реА рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ" EXT_SOURCE рдФрд░ рдЙрдирдХреЗ рд╕рд╣рд╕рдВрдмрдВрдз рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

 ext_data = app_train[['TARGET', 'EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3', 'DAYS_BIRTH']] ext_data_corrs = ext_data.corr() ext_data_corrs 



рд╣реАрдЯрдореИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╣рд╕рдВрдмрдВрдз рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рднреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ

 sns.heatmap(ext_data_corrs, cmap = plt.cm.RdYlBu_r, vmin = -0.25, annot = True, vmax = 0.6) plt.title('Correlation Heatmap'); 



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рднреА рд╕реНрд░реЛрдд рд▓рдХреНрд╖реНрдп рдХреЗ рд╕рд╛рде рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рд╕рд╣рд╕рдВрдмрдВрдз рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред рдЖрдЗрдП рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд░реЛрдд рдХреЗ рд▓рд┐рдП рдХреЗрдбреАрдИ рдХреЗ рд╡рд┐рддрд░рдг рдХреЛ рджреЗрдЦреЗрдВред

 plt.figure(figsize = (10, 12))тАЛ #    for i, source in enumerate(['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3']): #  plt.subplot(3, 1, i + 1) #    sns.kdeplot(app_train.loc[app_train['TARGET'] == 0, source], label = 'target == 0') #    sns.kdeplot(app_train.loc[app_train['TARGET'] == 1, source], label = 'target == 1') #  plt.title('Distribution of %s by Target Value' % source) plt.xlabel('%s' % source); plt.ylabel('Density'); plt.tight_layout(h_pad = 2.5)  plt.figure(figsize = (10, 12))тАЛ #    for i, source in enumerate(['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3']): #  plt.subplot(3, 1, i + 1) #    sns.kdeplot(app_train.loc[app_train['TARGET'] == 0, source], label = 'target == 0') #    sns.kdeplot(app_train.loc[app_train['TARGET'] == 1, source], label = 'target == 1') #  plt.title('Distribution of %s by Target Value' % source) plt.xlabel('%s' % source); plt.ylabel('Density'); plt.tight_layout(h_pad = 2.5) 



рддрд╕реНрд╡реАрд░ рдЙрдореНрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рддрд░рдг рдХреЗ рд╕рдорд╛рди рд╣реИ - рд╕реВрдЪрдХ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рдЛрдг рд╡рд╛рдкрд╕реА рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рддреАрд╕рд░рд╛ рд╕реНрд░реЛрдд рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рд╕рдмрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИред рдпрджреНрдпрдкрд┐ рдирд┐рд░рдкреЗрдХреНрд╖ рд░реВрдк рд╕реЗ рд▓рдХреНрд╖реНрдп рдЪрд░ рдХреЗ рд╕рд╛рде рд╕рд╣рд╕рдВрдмрдВрдз рдЕрднреА рднреА "рдмрд╣реБрдд рдХрдо" рд╢реНрд░реЗрдгреА рдореЗрдВ рд╣реИ, рдмрд╛рд╣рд░реА рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдФрд░ рдореЙрдбрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдЙрдореНрд░ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡ рд╣реЛрдЧрд╛ред

рдЬреЛрдбрд╝реА рдЕрдиреБрд╕реВрдЪреА


рдЗрди рдЪрд░реЛрдВ рдХреЗ рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдЬреЛрдбрд╝реА рдЪрд╛рд░реНрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдЬреЛрдбрд╝реА рдХреЗ рд╕рдВрдмрдВрдз рдФрд░ рд╡рд┐рдХрд░реНрдг рдХреЗ рд╕рд╛рде рд╡рд┐рддрд░рдг рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рдХрд░реНрдг рдХреЗ рдКрдкрд░, рдЖрдк рд╕реНрдХреИрдкреНрд▓реЙрдЯ рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдиреАрдЪреЗ - 2 рдбреА рдХреЗрдбреАрдИред

 #       age_data = app_train[['TARGET', 'DAYS_BIRTH']] age_data['YEARS_BIRTH'] = age_data['DAYS_BIRTH'] / 365тАЛ #     plot_data = ext_data.drop(labels = ['DAYS_BIRTH'], axis=1).copy()тАЛ #   plot_data['YEARS_BIRTH'] = age_data['YEARS_BIRTH']тАЛ #         100 .  plot_data = plot_data.dropna().loc[:100000, :]тАЛ #     def corr_func(x, y, **kwargs): r = np.corrcoef(x, y)[0][1] ax = plt.gca() ax.annotate("r = {:.2f}".format(r), xy=(.2, .8), xycoords=ax.transAxes, size = 20)тАЛ #   pairgrid object grid = sns.PairGrid(data = plot_data, size = 3, diag_sharey=False, hue = 'TARGET', vars = [x for x in list(plot_data.columns) if x != 'TARGET'])тАЛ #  -  grid.map_upper(plt.scatter, alpha = 0.2)тАЛ #  -  grid.map_diag(sns.kdeplot)тАЛ #  -   grid.map_lower(sns.kdeplot, cmap = plt.cm.OrRd_r);тАЛ plt.suptitle('Ext Source and Age Features Pairs Plot', size = 32, y = 1.05);  #       age_data = app_train[['TARGET', 'DAYS_BIRTH']] age_data['YEARS_BIRTH'] = age_data['DAYS_BIRTH'] / 365тАЛ #     plot_data = ext_data.drop(labels = ['DAYS_BIRTH'], axis=1).copy()тАЛ #   plot_data['YEARS_BIRTH'] = age_data['YEARS_BIRTH']тАЛ #         100 .  plot_data = plot_data.dropna().loc[:100000, :]тАЛ #     def corr_func(x, y, **kwargs): r = np.corrcoef(x, y)[0][1] ax = plt.gca() ax.annotate("r = {:.2f}".format(r), xy=(.2, .8), xycoords=ax.transAxes, size = 20)тАЛ #   pairgrid object grid = sns.PairGrid(data = plot_data, size = 3, diag_sharey=False, hue = 'TARGET', vars = [x for x in list(plot_data.columns) if x != 'TARGET'])тАЛ #  -  grid.map_upper(plt.scatter, alpha = 0.2)тАЛ #  -  grid.map_diag(sns.kdeplot)тАЛ #  -   grid.map_lower(sns.kdeplot, cmap = plt.cm.OrRd_r);тАЛ plt.suptitle('Ext Source and Age Features Pairs Plot', size = 32, y = 1.05);  #       age_data = app_train[['TARGET', 'DAYS_BIRTH']] age_data['YEARS_BIRTH'] = age_data['DAYS_BIRTH'] / 365тАЛ #     plot_data = ext_data.drop(labels = ['DAYS_BIRTH'], axis=1).copy()тАЛ #   plot_data['YEARS_BIRTH'] = age_data['YEARS_BIRTH']тАЛ #         100 .  plot_data = plot_data.dropna().loc[:100000, :]тАЛ #     def corr_func(x, y, **kwargs): r = np.corrcoef(x, y)[0][1] ax = plt.gca() ax.annotate("r = {:.2f}".format(r), xy=(.2, .8), xycoords=ax.transAxes, size = 20)тАЛ #   pairgrid object grid = sns.PairGrid(data = plot_data, size = 3, diag_sharey=False, hue = 'TARGET', vars = [x for x in list(plot_data.columns) if x != 'TARGET'])тАЛ #  -  grid.map_upper(plt.scatter, alpha = 0.2)тАЛ #  -  grid.map_diag(sns.kdeplot)тАЛ #  -   grid.map_lower(sns.kdeplot, cmap = plt.cm.OrRd_r);тАЛ plt.suptitle('Ext Source and Age Features Pairs Plot', size = 32, y = 1.05);  #       age_data = app_train[['TARGET', 'DAYS_BIRTH']] age_data['YEARS_BIRTH'] = age_data['DAYS_BIRTH'] / 365тАЛ #     plot_data = ext_data.drop(labels = ['DAYS_BIRTH'], axis=1).copy()тАЛ #   plot_data['YEARS_BIRTH'] = age_data['YEARS_BIRTH']тАЛ #         100 .  plot_data = plot_data.dropna().loc[:100000, :]тАЛ #     def corr_func(x, y, **kwargs): r = np.corrcoef(x, y)[0][1] ax = plt.gca() ax.annotate("r = {:.2f}".format(r), xy=(.2, .8), xycoords=ax.transAxes, size = 20)тАЛ #   pairgrid object grid = sns.PairGrid(data = plot_data, size = 3, diag_sharey=False, hue = 'TARGET', vars = [x for x in list(plot_data.columns) if x != 'TARGET'])тАЛ #  -  grid.map_upper(plt.scatter, alpha = 0.2)тАЛ #  -  grid.map_diag(sns.kdeplot)тАЛ #  -   grid.map_lower(sns.kdeplot, cmap = plt.cm.OrRd_r);тАЛ plt.suptitle('Ext Source and Age Features Pairs Plot', size = 32, y = 1.05);  #       age_data = app_train[['TARGET', 'DAYS_BIRTH']] age_data['YEARS_BIRTH'] = age_data['DAYS_BIRTH'] / 365тАЛ #     plot_data = ext_data.drop(labels = ['DAYS_BIRTH'], axis=1).copy()тАЛ #   plot_data['YEARS_BIRTH'] = age_data['YEARS_BIRTH']тАЛ #         100 .  plot_data = plot_data.dropna().loc[:100000, :]тАЛ #     def corr_func(x, y, **kwargs): r = np.corrcoef(x, y)[0][1] ax = plt.gca() ax.annotate("r = {:.2f}".format(r), xy=(.2, .8), xycoords=ax.transAxes, size = 20)тАЛ #   pairgrid object grid = sns.PairGrid(data = plot_data, size = 3, diag_sharey=False, hue = 'TARGET', vars = [x for x in list(plot_data.columns) if x != 'TARGET'])тАЛ #  -  grid.map_upper(plt.scatter, alpha = 0.2)тАЛ #  -  grid.map_diag(sns.kdeplot)тАЛ #  -   grid.map_lower(sns.kdeplot, cmap = plt.cm.OrRd_r);тАЛ plt.suptitle('Ext Source and Age Features Pairs Plot', size = 32, y = 1.05);  #       age_data = app_train[['TARGET', 'DAYS_BIRTH']] age_data['YEARS_BIRTH'] = age_data['DAYS_BIRTH'] / 365тАЛ #     plot_data = ext_data.drop(labels = ['DAYS_BIRTH'], axis=1).copy()тАЛ #   plot_data['YEARS_BIRTH'] = age_data['YEARS_BIRTH']тАЛ #         100 .  plot_data = plot_data.dropna().loc[:100000, :]тАЛ #     def corr_func(x, y, **kwargs): r = np.corrcoef(x, y)[0][1] ax = plt.gca() ax.annotate("r = {:.2f}".format(r), xy=(.2, .8), xycoords=ax.transAxes, size = 20)тАЛ #   pairgrid object grid = sns.PairGrid(data = plot_data, size = 3, diag_sharey=False, hue = 'TARGET', vars = [x for x in list(plot_data.columns) if x != 'TARGET'])тАЛ #  -  grid.map_upper(plt.scatter, alpha = 0.2)тАЛ #  -  grid.map_diag(sns.kdeplot)тАЛ #  -   grid.map_lower(sns.kdeplot, cmap = plt.cm.OrRd_r);тАЛ plt.suptitle('Ext Source and Age Features Pairs Plot', size = 32, y = 1.05);  #       age_data = app_train[['TARGET', 'DAYS_BIRTH']] age_data['YEARS_BIRTH'] = age_data['DAYS_BIRTH'] / 365тАЛ #     plot_data = ext_data.drop(labels = ['DAYS_BIRTH'], axis=1).copy()тАЛ #   plot_data['YEARS_BIRTH'] = age_data['YEARS_BIRTH']тАЛ #         100 .  plot_data = plot_data.dropna().loc[:100000, :]тАЛ #     def corr_func(x, y, **kwargs): r = np.corrcoef(x, y)[0][1] ax = plt.gca() ax.annotate("r = {:.2f}".format(r), xy=(.2, .8), xycoords=ax.transAxes, size = 20)тАЛ #   pairgrid object grid = sns.PairGrid(data = plot_data, size = 3, diag_sharey=False, hue = 'TARGET', vars = [x for x in list(plot_data.columns) if x != 'TARGET'])тАЛ #  -  grid.map_upper(plt.scatter, alpha = 0.2)тАЛ #  -  grid.map_diag(sns.kdeplot)тАЛ #  -   grid.map_lower(sns.kdeplot, cmap = plt.cm.OrRd_r);тАЛ plt.suptitle('Ext Source and Age Features Pairs Plot', size = 32, y = 1.05);  #       age_data = app_train[['TARGET', 'DAYS_BIRTH']] age_data['YEARS_BIRTH'] = age_data['DAYS_BIRTH'] / 365тАЛ #     plot_data = ext_data.drop(labels = ['DAYS_BIRTH'], axis=1).copy()тАЛ #   plot_data['YEARS_BIRTH'] = age_data['YEARS_BIRTH']тАЛ #         100 .  plot_data = plot_data.dropna().loc[:100000, :]тАЛ #     def corr_func(x, y, **kwargs): r = np.corrcoef(x, y)[0][1] ax = plt.gca() ax.annotate("r = {:.2f}".format(r), xy=(.2, .8), xycoords=ax.transAxes, size = 20)тАЛ #   pairgrid object grid = sns.PairGrid(data = plot_data, size = 3, diag_sharey=False, hue = 'TARGET', vars = [x for x in list(plot_data.columns) if x != 'TARGET'])тАЛ #  -  grid.map_upper(plt.scatter, alpha = 0.2)тАЛ #  -  grid.map_diag(sns.kdeplot)тАЛ #  -   grid.map_lower(sns.kdeplot, cmap = plt.cm.OrRd_r);тАЛ plt.suptitle('Ext Source and Age Features Pairs Plot', size = 32, y = 1.05);  #       age_data = app_train[['TARGET', 'DAYS_BIRTH']] age_data['YEARS_BIRTH'] = age_data['DAYS_BIRTH'] / 365тАЛ #     plot_data = ext_data.drop(labels = ['DAYS_BIRTH'], axis=1).copy()тАЛ #   plot_data['YEARS_BIRTH'] = age_data['YEARS_BIRTH']тАЛ #         100 .  plot_data = plot_data.dropna().loc[:100000, :]тАЛ #     def corr_func(x, y, **kwargs): r = np.corrcoef(x, y)[0][1] ax = plt.gca() ax.annotate("r = {:.2f}".format(r), xy=(.2, .8), xycoords=ax.transAxes, size = 20)тАЛ #   pairgrid object grid = sns.PairGrid(data = plot_data, size = 3, diag_sharey=False, hue = 'TARGET', vars = [x for x in list(plot_data.columns) if x != 'TARGET'])тАЛ #  -  grid.map_upper(plt.scatter, alpha = 0.2)тАЛ #  -  grid.map_diag(sns.kdeplot)тАЛ #  -   grid.map_lower(sns.kdeplot, cmap = plt.cm.OrRd_r);тАЛ plt.suptitle('Ext Source and Age Features Pairs Plot', size = 32, y = 1.05);  #       age_data = app_train[['TARGET', 'DAYS_BIRTH']] age_data['YEARS_BIRTH'] = age_data['DAYS_BIRTH'] / 365тАЛ #     plot_data = ext_data.drop(labels = ['DAYS_BIRTH'], axis=1).copy()тАЛ #   plot_data['YEARS_BIRTH'] = age_data['YEARS_BIRTH']тАЛ #         100 .  plot_data = plot_data.dropna().loc[:100000, :]тАЛ #     def corr_func(x, y, **kwargs): r = np.corrcoef(x, y)[0][1] ax = plt.gca() ax.annotate("r = {:.2f}".format(r), xy=(.2, .8), xycoords=ax.transAxes, size = 20)тАЛ #   pairgrid object grid = sns.PairGrid(data = plot_data, size = 3, diag_sharey=False, hue = 'TARGET', vars = [x for x in list(plot_data.columns) if x != 'TARGET'])тАЛ #  -  grid.map_upper(plt.scatter, alpha = 0.2)тАЛ #  -  grid.map_diag(sns.kdeplot)тАЛ #  -   grid.map_lower(sns.kdeplot, cmap = plt.cm.OrRd_r);тАЛ plt.suptitle('Ext Source and Age Features Pairs Plot', size = 32, y = 1.05); 



рдЪреБрдХрд╛рдиреЗ рдпреЛрдЧреНрдп рдЛрдг рдиреАрд▓реЗ рд░рдВрдЧ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЧреИрд░-рдЪреБрдХреМрддреА рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВред рдпрд╣ рд╕рдм рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдЯреА-рд╢рд░реНрдЯ рдпрд╛ рдЖрдзреБрдирд┐рдХ рдХрд▓рд╛ рдХреЗ рд╕рдВрдЧреНрд░рд╣рд╛рд▓рдп рдореЗрдВ рдПрдХ рддрд╕реНрд╡реАрд░ рдкрд░ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░рд┐рдВрдЯ рдЗрд╕ рддрд╕реНрд╡реАрд░ рд╕реЗ рдмрд╛рд╣рд░ рдЖ рд╕рдХрддрд╛ рд╣реИред

рдЕрдиреНрдп рд╕рдВрдХреЗрддреЛрдВ рдХреА рдкрд░реАрдХреНрд╖рд╛


рдЖрдЗрдП рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рд▓рдХреНрд╖реНрдп рдЪрд░ рдкрд░ рдЙрдирдХреА рдирд┐рд░реНрднрд░рддрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЪреВрдВрдХрд┐ рдХрдИ рд╢реНрд░реЗрдгреАрдмрджреНрдз рд╣реИрдВ (рдФрд░ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдВрдХреЗрддрд┐рдХ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдмрджрд▓рдирд╛), рд╣рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдЗрдП рднреНрд░рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдмреБрд▓рд╛рдПрдВ

 application_train = pd.read_csv(PATH+"application_train.csv") application_test = pd.read_csv(PATH+"application_test.csv") 

рд╣рдореЗрдВ рд╡рд┐рддрд░рдг рдЪрд░ рдФрд░ рд▓рдХреНрд╖реНрдп рдЪрд░ рдкрд░ рдЙрдирдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЗрд╕ рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж

 def plot_stats(feature,label_rotation=False,horizontal_layout=True): temp = application_train[feature].value_counts() df1 = pd.DataFrame({feature: temp.index,' ': temp.values})тАЛ #   target=1   cat_perc = application_train[[feature, 'TARGET']].groupby([feature],as_index=False).mean() cat_perc.sort_values(by='TARGET', ascending=False, inplace=True) if(horizontal_layout): fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(12,6)) else: fig, (ax1, ax2) = plt.subplots(nrows=2, figsize=(12,14)) sns.set_color_codes("pastel") s = sns.barplot(ax=ax1, x = feature, y=" ",data=df1) if(label_rotation): s.set_xticklabels(s.get_xticklabels(),rotation=90) s = sns.barplot(ax=ax2, x = feature, y='TARGET', order=cat_perc[feature], data=cat_perc) if(label_rotation): s.set_xticklabels(s.get_xticklabels(),rotation=90) plt.ylabel(' ', fontsize=10) plt.tick_params(axis='both', which='major', labelsize=10)тАЛ plt.show();  def plot_stats(feature,label_rotation=False,horizontal_layout=True): temp = application_train[feature].value_counts() df1 = pd.DataFrame({feature: temp.index,' ': temp.values})тАЛ #   target=1   cat_perc = application_train[[feature, 'TARGET']].groupby([feature],as_index=False).mean() cat_perc.sort_values(by='TARGET', ascending=False, inplace=True) if(horizontal_layout): fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(12,6)) else: fig, (ax1, ax2) = plt.subplots(nrows=2, figsize=(12,14)) sns.set_color_codes("pastel") s = sns.barplot(ax=ax1, x = feature, y=" ",data=df1) if(label_rotation): s.set_xticklabels(s.get_xticklabels(),rotation=90) s = sns.barplot(ax=ax2, x = feature, y='TARGET', order=cat_perc[feature], data=cat_perc) if(label_rotation): s.set_xticklabels(s.get_xticklabels(),rotation=90) plt.ylabel(' ', fontsize=10) plt.tick_params(axis='both', which='major', labelsize=10)тАЛ plt.show();  def plot_stats(feature,label_rotation=False,horizontal_layout=True): temp = application_train[feature].value_counts() df1 = pd.DataFrame({feature: temp.index,' ': temp.values})тАЛ #   target=1   cat_perc = application_train[[feature, 'TARGET']].groupby([feature],as_index=False).mean() cat_perc.sort_values(by='TARGET', ascending=False, inplace=True) if(horizontal_layout): fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(12,6)) else: fig, (ax1, ax2) = plt.subplots(nrows=2, figsize=(12,14)) sns.set_color_codes("pastel") s = sns.barplot(ax=ax1, x = feature, y=" ",data=df1) if(label_rotation): s.set_xticklabels(s.get_xticklabels(),rotation=90) s = sns.barplot(ax=ax2, x = feature, y='TARGET', order=cat_perc[feature], data=cat_perc) if(label_rotation): s.set_xticklabels(s.get_xticklabels(),rotation=90) plt.ylabel(' ', fontsize=10) plt.tick_params(axis='both', which='major', labelsize=10)тАЛ plt.show(); 

рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдореБрдЦреНрдп рд╕рдВрдХреЗрддреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ

рдЛрдг рдХрд╛ рдкреНрд░рдХрд╛рд░


 plot_stats('NAME_CONTRACT_TYPE') 



рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рд░рд┐рд╡рд╛рд▓реНрд╡рд┐рдВрдЧ рд▓реЛрди (рд╢рд╛рдпрдж рдУрд╡рд░рдбреНрд░рд╛рдлреНрдЯ рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ) рдЬреЛ рдХреБрд▓ рд▓реЛрди рдХрд╛ 10% рд╕реЗ рдХрдо рд╣реЛред рдЗрд╕реА рд╕рдордп, рдЙрдирдореЗрдВ рд╕реЗ рдЧреИрд░-рд╡рд╛рдкрд╕реА рдХрд╛ рдкреНрд░рддрд┐рд╢рдд рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИред рдЗрди рдЛрдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг, рдФрд░ рд╢рд╛рдпрдж рдЙрдиреНрд╣реЗрдВ рдЫреЛрдбрд╝ рджреЗрдирд╛ рднреА рд╣реИред

рдЧреНрд░рд╛рд╣рдХ рд▓рд┐рдВрдЧ


 plot_stats('CODE_GENDER') 



рдкреБрд░реБрд╖реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рдЧрднрдЧ рджреЛ рдЧреБрдирд╛ рдЕрдзрд┐рдХ рдорд╣рд┐рд▓рд╛ рдЧреНрд░рд╛рд╣рдХ рд╣реИрдВ, рдкреБрд░реБрд╖реЛрдВ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬреЛрдЦрд┐рдо рд╣реИред

рдХрд╛рд░ рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд╕реНрд╡рд╛рдорд┐рддреНрд╡


 plot_stats('FLAG_OWN_CAR') plot_stats('FLAG_OWN_REALTY') 




рдХрд╛рд░ рдХреЗ рдЧреНрд░рд╛рд╣рдХ рдЖрдзреЗ "рд╣реЙрд░реНрд╕рд▓реЗрд╕" рд╣реИрдВред рдЬреЛрдЦрд┐рдо рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИ, рдорд╢реАрди рд╡рд╛рд▓реЗ рдЧреНрд░рд╛рд╣рдХ рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рднреБрдЧрддрд╛рди рдХрд░рддреЗ рд╣реИрдВред

рдЕрдЪрд▓ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдкрд░реАрдд рд╕рдЪ рд╣реИ - рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХреБрдЫ рдЧреНрд░рд╛рд╣рдХ рдЖрдзреЗ рд╣реИрдВред рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛрдЦрд┐рдо рднреА рдереЛрдбрд╝рд╛ рдХрдо рд╣реИред

рд╡реИрд╡рд╛рд╣рд┐рдХ рд╕реНрдерд┐рддрд┐


 plot_stats('NAME_FAMILY_STATUS',True, True) 



рдЬрдмрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЧреНрд░рд╛рд╣рдХ рд╡рд┐рд╡рд╛рд╣рд┐рдд рд╣реИрдВ, рд╕рдмрд╕реЗ рдЬреЛрдЦрд┐рдо рднрд░рд╛ рдирд╛рдЧрд░рд┐рдХ рдФрд░ рдПрдХрд▓ рдЧреНрд░рд╛рд╣рдХ рд╣реИрдВред рд╡рд┐рдзреБрд░ рдиреНрдпреВрдирддрдо рдЬреЛрдЦрд┐рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред

рдмрдЪреНрдЪреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛


 plot_stats('CNT_CHILDREN') 



рдЬреНрдпрд╛рджрд╛рддрд░ рдЧреНрд░рд╛рд╣рдХ рдирд┐рдГрд╕рдВрддрд╛рди рд╣реИрдВред рдЗрд╕реА рд╕рдордп, 9 рдФрд░ 11 рдмрдЪреНрдЪреЛрдВ рд╡рд╛рд▓реЗ рдЧреНрд░рд╛рд╣рдХ рдкреВрд░реНрдг рдЧреИрд░-рд╡рд╛рдкрд╕реА рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ

 application_train.CNT_CHILDREN.value_counts() 

0 215371
1 61119
2 26749
3 3717
4 429
5 84
6 21
7 7
14 3
19 2
12 2
10 2
9 2
8 2
11 1
Name: CNT_CHILDREN, dtype: int64


рдЬреИрд╕рд╛ рдХрд┐ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдпрд╣ рдбреЗрдЯрд╛ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рд╣реАрди рд╣реИ - рджреЛрдиреЛрдВ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рдХреЗрд╡рд▓ 1-2 рдЧреНрд░рд╛рд╣рдХред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рднреА рддреАрди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореЗрдВ рдЪрд▓реЗ рдЧрдП, рдЬреИрд╕рд╛ рдХрд┐ 6 рдмрдЪреНрдЪреЛрдВ рд╡рд╛рд▓реЗ рдЖрдзреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдиреЗ рдХрд┐рдпрд╛ рдерд╛ред

рдкрд░рд┐рд╡рд╛рд░ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛


 plot_stats('CNT_FAM_MEMBERS',True) 



рд╕реНрдерд┐рддрд┐ рд╕рдорд╛рди рд╣реИ - рдХрдо рдореБрдВрд╣, рдЙрдЪреНрдЪ рд╡рд╛рдкрд╕реАред

рдЖрдп рдХрд╛ рдкреНрд░рдХрд╛рд░


 plot_stats('NAME_INCOME_TYPE',False,False) 



рдПрдХрд▓ рдорд╛рддрд╛рдУрдВ рдФрд░ рдмреЗрд░реЛрдЬрдЧрд╛рд░реЛрдВ рдХреЗ рдЖрд╡реЗрджрди рдХреЗ рдЪрд░рдг рдореЗрдВ рдХрд╛рдЯ рджрд┐рдП рдЬрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ - рдирдореВрдиреЗ рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рдХрдо рд╣реИрдВред рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛рдПрдВ рдХрд╛рдлреА рд╣рдж рддрдХ рджрд┐рдЦ рд░рд╣реА рд╣реИрдВред

рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдкреНрд░рдХрд╛рд░


 plot_stats('OCCUPATION_TYPE',True, False) 



 application_train.OCCUPATION_TYPE.value_counts() 

Laborers 55186
Sales staff 32102
Core staff 27570
Managers 21371
Drivers 18603
High skill tech staff 11380
Accountants 9813
Medicine staff 8537
Security staff 6721
Cooking staff 5946
Cleaning staff 4653
Private service staff 2652
Low-skill Laborers 2093
Waiters/barmen staff 1348
Secretaries 1305
Realty agents 751
HR staff 563
IT staff 526
Name: OCCUPATION_TYPE, dtype: int64


рдпрд╣ рдЙрди рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдЕрдзрд┐рдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд░реВрдЪрд┐ рд░рдЦрддрд╛ рд╣реИ рдЬреЛ рдХрд╛рдлреА рд╣реИрдВ рдФрд░ рдЕрдиреНрдп рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдмрд╛рд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВред

рдЧрдарди


 plot_stats('NAME_EDUCATION_TYPE',True) 



рдЙрдЪреНрдЪ рд╢рд┐рдХреНрд╖рд╛, рдмреЗрд╣рддрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗред

рд╕рдВрдЧрдарди рдХрд╛ рдкреНрд░рдХрд╛рд░ - рдирд┐рдпреЛрдХреНрддрд╛


 plot_stats('ORGANIZATION_TYPE',True, False) 



рдЧреИрд░-рд░рд┐рдЯрд░реНрди рдХрд╛ рдЙрдЪреНрдЪрддрдо рдкреНрд░рддрд┐рд╢рдд рдкрд░рд┐рд╡рд╣рди рдореЗрдВ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдЯрд╛рдЗрдк 3 (16%), рдЙрджреНрдпреЛрдЧ: рдкреНрд░рдХрд╛рд░ 13 (13.5%), рдЙрджреНрдпреЛрдЧ: рдЯрд╛рдЗрдк 8 (12.5%) рдФрд░ рд░реЗрд╕реНрддрд░рд╛рдВ (12% рддрдХ)ред

рдЛрдг рдЖрд╡рдВрдЯрди


рдЛрдг рд░рд╛рд╢рд┐рдпреЛрдВ рдХреЗ рд╡рд┐рддрд░рдг рдФрд░ рдкреБрдирд░реНрднреБрдЧрддрд╛рди рдкрд░ рдЙрдирдХреЗ рдкреНрд░рднрд╛рд╡ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ

 plt.figure(figsize=(12,5)) plt.title(" AMT_CREDIT") ax = sns.distplot(app_train["AMT_CREDIT"]) 



 plt.figure(figsize=(12,5))тАЛ # KDE ,   sns.kdeplot(app_train.loc[app_train['TARGET'] == 0, 'AMT_CREDIT'], label = 'target == 0')тАЛ # KDE   sns.kdeplot(app_train.loc[app_train['TARGET'] == 1, 'AMT_CREDIT'], label = 'target == 1')тАЛ #  plt.xlabel(' '); plt.ylabel(''); plt.title(' ');  plt.figure(figsize=(12,5))тАЛ # KDE ,   sns.kdeplot(app_train.loc[app_train['TARGET'] == 0, 'AMT_CREDIT'], label = 'target == 0')тАЛ # KDE   sns.kdeplot(app_train.loc[app_train['TARGET'] == 1, 'AMT_CREDIT'], label = 'target == 1')тАЛ #  plt.xlabel(' '); plt.ylabel(''); plt.title(' ');  plt.figure(figsize=(12,5))тАЛ # KDE ,   sns.kdeplot(app_train.loc[app_train['TARGET'] == 0, 'AMT_CREDIT'], label = 'target == 0')тАЛ # KDE   sns.kdeplot(app_train.loc[app_train['TARGET'] == 1, 'AMT_CREDIT'], label = 'target == 1')тАЛ #  plt.xlabel(' '); plt.ylabel(''); plt.title(' ');  plt.figure(figsize=(12,5))тАЛ # KDE ,   sns.kdeplot(app_train.loc[app_train['TARGET'] == 0, 'AMT_CREDIT'], label = 'target == 0')тАЛ # KDE   sns.kdeplot(app_train.loc[app_train['TARGET'] == 1, 'AMT_CREDIT'], label = 'target == 1')тАЛ #  plt.xlabel(' '); plt.ylabel(''); plt.title(' '); 



рдЬреИрд╕рд╛ рдХрд┐ рдШрдирддреНрд╡ рдЧреНрд░рд╛рдл рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдордЬрдмреВрдд рдорд╛рддреНрд░рд╛ рдЕрдзрд┐рдХ рдмрд╛рд░ рд▓реМрдЯрд╛рдИ рдЬрд╛рддреА рд╣реИ

рдШрдирддреНрд╡ рд╡рд┐рддрд░рдг


 plt.figure(figsize=(12,5)) plt.title(" REGION_POPULATION_RELATIVE") ax = sns.distplot(app_train["REGION_POPULATION_RELATIVE"]) 



 plt.figure(figsize=(12,5))тАЛ # KDE ,   sns.kdeplot(app_train.loc[app_train['TARGET'] == 0, 'REGION_POPULATION_RELATIVE'], label = 'target == 0')тАЛ # KDE   sns.kdeplot(app_train.loc[app_train['TARGET'] == 1, 'REGION_POPULATION_RELATIVE'], label = 'target == 1')тАЛ #  plt.xlabel(''); plt.ylabel(' '); plt.title(' ');  plt.figure(figsize=(12,5))тАЛ # KDE ,   sns.kdeplot(app_train.loc[app_train['TARGET'] == 0, 'REGION_POPULATION_RELATIVE'], label = 'target == 0')тАЛ # KDE   sns.kdeplot(app_train.loc[app_train['TARGET'] == 1, 'REGION_POPULATION_RELATIVE'], label = 'target == 1')тАЛ #  plt.xlabel(''); plt.ylabel(' '); plt.title(' ');  plt.figure(figsize=(12,5))тАЛ # KDE ,   sns.kdeplot(app_train.loc[app_train['TARGET'] == 0, 'REGION_POPULATION_RELATIVE'], label = 'target == 0')тАЛ # KDE   sns.kdeplot(app_train.loc[app_train['TARGET'] == 1, 'REGION_POPULATION_RELATIVE'], label = 'target == 1')тАЛ #  plt.xlabel(''); plt.ylabel(' '); plt.title(' ');  plt.figure(figsize=(12,5))тАЛ # KDE ,   sns.kdeplot(app_train.loc[app_train['TARGET'] == 0, 'REGION_POPULATION_RELATIVE'], label = 'target == 0')тАЛ # KDE   sns.kdeplot(app_train.loc[app_train['TARGET'] == 1, 'REGION_POPULATION_RELATIVE'], label = 'target == 1')тАЛ #  plt.xlabel(''); plt.ylabel(' '); plt.title(' '); 



рдЕрдзрд┐рдХ рдЖрдмрд╛рджреА рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЧреНрд░рд╛рд╣рдХ рдмреЗрд╣рддрд░ рдЛрдг рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдореЗрдВ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкрд░ рдЙрдирдХреЗ рдкреНрд░рднрд╛рд╡ рдХрд╛ рдПрдХ рд╡рд┐рдЪрд╛рд░ рдорд┐рд▓рд╛ред рд╣рдо рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╡реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдХрд╛рдо рдореЗрдВ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдлрд╝реАрдЪрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ - рдлрд╝реАрдЪрд░ рд░реВрдкрд╛рдВрддрд░рдг


рдХрд╛рдЧрд▓реЗ рдкрд░ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЛ рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдЬреАрддрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╡рд╣ рдЬреЛ рдбреЗрдЯрд╛ рдЬреАрдд рд╕реЗ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╕рдВрдХреЗрдд рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдХрдо рд╕реЗ рдХрдо рд╕рдВрд░рдЪрд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП, рдЬреАрддрдиреЗ рд╡рд╛рд▓реЗ рдореЙрдбрд▓ рдЕрдм рдореВрд▓ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧреНрд░реЗрдбрд┐рдВрдЧ рдмреВрд╕реНрдЯрд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдЕрдзрд┐рдХ рдмрд╛рд░ рдирд╣реАрдВ, рд╣рд╛рдЗрдкрд░рдкрд░рдореАрдЯрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдпрд╛ рдореЙрдбрд▓ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рдордп рдмрджрд▓рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЦрд░реНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИред рдПрдХ рдореЙрдбрд▓ рдЕрднреА рднреА рдХреЗрд╡рд▓ рдЙрд╕ рдбреЗрдЯрд╛ рд╕реЗ рд╕реАрдЦ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ рдбреЗрдЯрд╛ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ, рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдХреА рддрд╛рд░реАрдЦ рдХреА рдореБрдЦреНрдп рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╣реИред

рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдирдП рдЙрдкрд▓рдмреНрдз рдбреЗрдЯрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрдкрд▓рдмреНрдз рдХрд╛ рдЪрдпрди, рдЖрджрд┐ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕ рдмрд╛рд░ рдмрд╣реБрдкрдж рд╕рдВрдХреЗрдд рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред

рдмрд╣реБрдкрдж рд╕рдВрдХреЗрдд


рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдмрд╣реБрдкрдж рд╡рд┐рдзрд┐ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рдЙрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЙрдкрд▓рдмреНрдз рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдФрд░ рдЙрдирдХреЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рдбрд┐рдЧреНрд░реА рд╣реИрдВред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдРрд╕реА рдирд┐рд░реНрдорд┐рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рдЙрдирдХреЗ "рдорд╛рддрд╛-рдкрд┐рддрд╛" рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рдХреНрд╖реНрдп рдЪрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдордЬрдмреВрдд рд╕рдВрдмрдВрдз рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджреНрдпрдкрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдЕрдХреНрд╕рд░ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдореЙрдбрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡реЗ рдорд╢реАрди рд╕реАрдЦрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдЖрдо рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ред рдХреБрдЫ рднреА рд╣рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЖрдЬрд╝рдорд╛рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди рдореЗрдВ рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рд╡рд░реНрдЧ рд╣реИ - рдмрд╣реБрдкрдж рдлреАрдЪрд░реНрд╕ - рдЬреЛ рдмрд╣реБрдкрдж рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдФрд░ рдЙрдирдХреЗ рдЙрддреНрдкрд╛рджреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдореВрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХрддрдо рдбрд┐рдЧреНрд░реА рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдКрдкрд░ рдЙрдард╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдореЙрдбрд▓ рдХреЛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 4 рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ рдбрд┐рдЧреНрд░реА 3 рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкрд░ рд╕рдмрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкреНрд░рднрд╛рд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдУрд╡рд░рдлрд┐рдЯрд┐рдВрдЧ (рдореЙрдбрд▓ рдХреЗ рдУрд╡рд░рдЯреНрд░реЗрдВрд╕рд┐рдВрдЧ - рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдирдореВрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЕрддреНрдпрдзрд┐рдХ рд╕рдорд╛рдпреЛрдЬрди) рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВред

 #       poly_features = app_train[['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3', 'DAYS_BIRTH', 'TARGET']] poly_features_test = app_test[['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3', 'DAYS_BIRTH']]тАЛ #    from sklearn.preprocessing import Imputer imputer = Imputer(strategy = 'median')тАЛ poly_target = poly_features['TARGET']тАЛ poly_features = poly_features.drop('TARGET', axis=1)тАЛ poly_features = imputer.fit_transform(poly_features) poly_features_test = imputer.transform(poly_features_test) from sklearn.preprocessing import PolynomialFeatures #     3 poly_transformer = PolynomialFeatures(degree = 3) #    poly_transformer.fit(poly_features) #   poly_features = poly_transformer.transform(poly_features) poly_features_test = poly_transformer.transform(poly_features_test) print('  : ', poly_features.shape) 

: (307511, 35)
get_feature_names


 poly_transformer.get_feature_names(input_features = ['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3', 'DAYS_BIRTH'])[:15] 

['1',
'EXT_SOURCE_1',
'EXT_SOURCE_2',
'EXT_SOURCE_3',
'DAYS_BIRTH',
'EXT_SOURCE_1^2',
'EXT_SOURCE_1 EXT_SOURCE_2',
'EXT_SOURCE_1 EXT_SOURCE_3',
'EXT_SOURCE_1 DAYS_BIRTH',
'EXT_SOURCE_2^2',
'EXT_SOURCE_2 EXT_SOURCE_3',
'EXT_SOURCE_2 DAYS_BIRTH',
'EXT_SOURCE_3^2',
'EXT_SOURCE_3 DAYS_BIRTH',
'DAYS_BIRTH^2']


рдХреБрд▓ 35 рдмрд╣реБрдкрдж рдФрд░ рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВред рд▓рдХреНрд╖реНрдп рдХреЗ рд╕рд╛рде рдЙрдирдХреЗ рд╕рд╣рд╕рдВрдмрдВрдз рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред

 #     poly_features = pd.DataFrame(poly_features, columns = poly_transformer.get_feature_names(['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3', 'DAYS_BIRTH']))тАЛ #   poly_features['TARGET'] = poly_targetтАЛ #   poly_corrs = poly_features.corr()['TARGET'].sort_values()тАЛ #      print(poly_corrs.head(10)) print(poly_corrs.tail(5)) 

EXT_SOURCE_2 EXT_SOURCE_3 -0.193939
EXT_SOURCE_1 EXT_SOURCE_2 EXT_SOURCE_3 -0.189605
EXT_SOURCE_2 EXT_SOURCE_3 DAYS_BIRTH -0.181283
EXT_SOURCE_2^2 EXT_SOURCE_3 -0.176428
EXT_SOURCE_2 EXT_SOURCE_3^2 -0.172282
EXT_SOURCE_1 EXT_SOURCE_2 -0.166625
EXT_SOURCE_1 EXT_SOURCE_3 -0.164065
EXT_SOURCE_2 -0.160295
EXT_SOURCE_2 DAYS_BIRTH -0.156873
EXT_SOURCE_1 EXT_SOURCE_2^2 -0.156867
Name: TARGET, dtype: float64
DAYS_BIRTH -0.078239
DAYS_BIRTH^2 -0.076672
DAYS_BIRTH^3 -0.074273
TARGET 1.000000
1 NaN
Name: TARGET, dtype: float64


рддреЛ, рдХреБрдЫ рд╕рдВрдХреЗрдд рдореВрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдЙрдЪреНрдЪ рд╕рд╣рд╕рдВрдмрдВрдз рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдЙрдирдХреЗ рдФрд░ рдЙрдирдХреЗ рдмрд┐рдирд╛ рд╕реАрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдорд╢реАрди рд╕реАрдЦрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ, рдпрд╣ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛рдлреНрд░реЗрдо рдХреА рдПрдХ рдкреНрд░рддрд┐ рдмрдирд╛рдПрдБ рдФрд░ рд╡рд╣рд╛рдВ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЬреЛрдбрд╝реЗрдВред

 #      poly_features_test = pd.DataFrame(poly_features_test, columns = poly_transformer.get_feature_names(['EXT_SOURCE_1', 'EXT_SOURCE_2', 'EXT_SOURCE_3', 'DAYS_BIRTH']))тАЛ #    poly_features['SK_ID_CURR'] = app_train['SK_ID_CURR'] app_train_poly = app_train.merge(poly_features, on = 'SK_ID_CURR', how = 'left')тАЛ #    poly_features_test['SK_ID_CURR'] = app_test['SK_ID_CURR'] app_test_poly = app_test.merge(poly_features_test, on = 'SK_ID_CURR', how = 'left')тАЛ #   app_train_poly, app_test_poly = app_train_poly.align(app_test_poly, join = 'inner', axis = 1)тАЛ #   print('    : ', app_train_poly.shape) print('    : ', app_test_poly.shape) 

: (307511, 277)
: (48744, 277)


рдореЙрдбрд▓ рдкреНрд░рд╢рд┐рдХреНрд╖рдг


рдореВрд▓ рд╕реНрддрд░


рдЧрдгрдирд╛рдУрдВ рдореЗрдВ, рдЖрдкрдХреЛ рдореЙрдбрд▓ рдХреЗ рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рд╕реНрддрд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдиреАрдЪреЗ рдЕрдм рдЧрд┐рд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП 0.5 рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдЗрд╕рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЕрдВрджрд╛рдЬрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдЛрдг рдЪреБрдХрд╛рдПрдЧрд╛ рдпрд╛ рдирд╣реАрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдп рдкрд╣рд▓реЗ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд▓реЙрдЬрд┐рд╕реНрдЯрд┐рдХ рд░рд┐рдЧреНрд░реЗрд╢рди


рд▓реЙрдЬрд┐рд╕реНрдЯрд┐рдХ рд░рд┐рдЧреНрд░реЗрд╢рди рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП , рд╣рдореЗрдВ рдХреЛрдбреЗрдб рд╢реНрд░реЗрдгреАрдмрджреНрдз рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд▓реЗрдиреЗ, рд▓рд╛рдкрддрд╛ рдбреЗрдЯрд╛ рдХреЛ рднрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЙрдиреНрд╣реЗрдВ 0 рд╕реЗ 1 рддрдХ рдорд╛рдиреЛрдВ рдкрд░ рд▓рд╛рдПрдВ)ред рдпрд╣ рд╕рдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ:

 from sklearn.preprocessing import MinMaxScaler, ImputerтАЛ #      if 'TARGET' in app_train: train = app_train.drop(labels = ['TARGET'], axis=1) else: train = app_train.copy() features = list(train.columns)тАЛ #    test = app_test.copy()тАЛ #     imputer = Imputer(strategy = 'median')тАЛ #  scaler = MinMaxScaler(feature_range = (0, 1))тАЛ #    imputer.fit(train)тАЛ #      train = imputer.transform(train) test = imputer.transform(app_test)тАЛ #      scaler.fit(train) train = scaler.transform(train) test = scaler.transform(test)тАЛ print('  : ', train.shape) print('  : ', test.shape) 

: (307511, 242)
: (48744, 242)


рд╣рдо рдкрд╣рд▓реЗ рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдХрд┐рдХрд┐рдЯ-рд▓рд░реНрди рд╕реЗ рд▓реЙрдЬрд┐рд╕реНрдЯрд┐рдХ рд░рд┐рдЧреНрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЪрд▓реЛ рдПрдХ рд╕реБрдзрд╛рд░ рдХреЗ рд╕рд╛рде рд╢реМрдЪ рдореЙрдбрд▓ рд▓реЗрдВ - рд╣рдо рдУрд╡рд░рдлрд╝рд┐рдЯрд┐рдВрдЧ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рддреАрдХрд░рдг рдкреИрд░рд╛рдореАрдЯрд░ рд╕реА рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВред рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ - рд╣рдо рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрднрд╛рд╡реНрдпрддрд╛ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ (рд╣рдореЗ рд╕рдВрднрд╛рд╡рдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, 0-2 рдирд╣реАрдВ)

 from sklearn.linear_model import LogisticRegressionтАЛ #   log_reg = LogisticRegression(C = 0.0001)тАЛ #   log_reg.fit(train, train_labels) LogisticRegression(C=0.0001, class_weight=None, dual=False, fit_intercept=True, intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1, penalty='l2', random_state=None, solver='liblinear', tol=0.0001, verbose=0, warm_start=False)      .  prdict_proba     mx 2,  m -  ,   -  0,  -  1.    ( ). log_reg_pred = log_reg.predict_proba(test)[:, 1] 

рдЕрдм рдЖрдк рдХрд╛рдЧрд▓ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЧреНрд░рд╛рд╣рдХ рдЖрдИрдбреА рд╕реЗ рдбреЗрдЯрд╛ рдлреНрд░реЗрдо рдмрдирд╛рдПрдВ рдФрд░ рдмрд┐рдирд╛ рд░рд┐рдЯрд░реНрди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдФрд░ рдЗрд╕реЗ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВред

 submit = app_test[['SK_ID_CURR']] submit['TARGET'] = log_reg_predтАЛ submit.head() 

SK_ID_CURR TARGET
0 100001 0.087954
1 100005 0.163151
2 100013 0.109923
3 100028 0.077124
4 100038 0.151694


 submit.to_csv('log_reg_baseline.csv', index = False) 

рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдЯрд╛рдЗрдЯреИрдирд┐рдХ рдХрд╛рд░реНрдп рдХрд╛ рдкрд░рд┐рдгрд╛рдо: 0.673, рдЖрдЬ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо 0.802 рд╣реИред

рдмреЗрд╣рддрд░ рдореЙрдбрд▓ - рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рди


Logreg рдЦреБрдж рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдЪрд▓реЛ рдПрдХ рдмреЗрд╣рддрд░ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ - рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЬрдВрдЧрд▓ред рдпрд╣ рдПрдХ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдореЙрдбрд▓ рд╣реИ рдЬреЛ рд╕реИрдХрдбрд╝реЛрдВ рдкреЗрдбрд╝реЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рдо 100 рдкреЗрдбрд╝реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╕рдорд╛рди рд╣реИ, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╛рдирдХ - рдХреНрд▓рд╛рд╕рд┐рдлрд╛рдпрд░рд┐рдпрд░ рд▓реЛрдбрд┐рдВрдЧ, рдкреНрд░рд╢рд┐рдХреНрд╖рдгред рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреАред

 from sklearn.ensemble import RandomForestClassifierтАЛ #   random_forest = RandomForestClassifier(n_estimators = 100, random_state = 50)тАЛ #     random_forest.fit(train, train_labels)тАЛ #     predictions = random_forest.predict_proba(test)[:, 1]тАЛ #     submit = app_test[['SK_ID_CURR']] submit['TARGET'] = predictionsтАЛ #  submit.to_csv('random_forest_baseline.csv', index = False) 


рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рди рдкрд░рд┐рдгрд╛рдо рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рд╣реИ - 0.683

рдмрд╣реБрдкрдж рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдореЙрдбрд▓


рдЕрдм рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдореЙрдбрд▓ рд╣реИред рдЬреЛ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рд╣рдорд╛рд░реЗ рдмрд╣реБрдкрдж рд╕рдВрдХреЗрддреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЖрдЗрдП рдЙрдирдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рдХрд░реЗрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред

 poly_features_names = list(app_train_poly.columns)тАЛ #         imputer = Imputer(strategy = 'median')тАЛ poly_features = imputer.fit_transform(app_train_poly) poly_features_test = imputer.transform(app_test_poly)тАЛ #  scaler = MinMaxScaler(feature_range = (0, 1))тАЛ poly_features = scaler.fit_transform(poly_features) poly_features_test = scaler.transform(poly_features_test)тАЛ random_forest_poly = RandomForestClassifier(n_estimators = 100, random_state = 50) #     random_forest_poly.fit(poly_features, train_labels)тАЛ #  predictions = random_forest_poly.predict_proba(poly_features_test)[:, 1]тАЛ #    submit = app_test[['SK_ID_CURR']] submit['TARGET'] = predictionsтАЛ #   submit.to_csv('random_forest_baseline_engineered.csv', index = False) 


рдмрд╣реБрдкрдж рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдмрджрддрд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ - 0.633ред рдЬреЛ рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░ рд╕рд╡рд╛рд▓ рдЙрдард╛рддрд╛ рд╣реИред

рдзреАрд░реЗ-рдзреАрд░реЗ рдмреВрд╕реНрдЯ


рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдмреВрд╕реНрдЯрд┐рдВрдЧ рдПрдХ "рдЧрдВрднреАрд░ рдореЙрдбрд▓" рд╣реИред рд▓рдЧрднрдЧ рд╕рднреА рдирд╡реАрдирддрдо рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЛ "рдмрд┐рд▓реНрдХреБрд▓" рдкрд░ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдореЙрдбрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред

 from lightgbm import LGBMClassifierтАЛ clf = LGBMClassifier() clf.fit(train, train_labels)тАЛ predictions = clf.predict_proba(test)[:, 1]тАЛ #    submit = app_test[['SK_ID_CURR']] submit['TARGET'] = predictionsтАЛ #   submit.to_csv('lightgbm_baseline.csv', index = False) 


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

рдореЙрдбрд▓ рд╡реНрдпрд╛рдЦреНрдпрд╛ - рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдорд╣рддреНрд╡


рдХрд┐рд╕реА рдореЙрдбрд▓ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдорд╣рддреНрд╡ рдХреЛ рджреЗрдЦрдирд╛ рд╣реИ (рдЬреЛ рд╕рднреА рдореЙрдбрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдХреНрд▓рд╛рд╕рд┐рдлрд╛рдпрд░рд┐рдпрд░ рдиреЗ рд╕рд░рдгреА рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд╕рд░рдгреА рдХреЗ рдХреЙрд▓рдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреЙрд▓рдо рдирд╛рдореЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рдХрд╛рдо рд▓рдЧреЗрдЧрд╛ред

 #      def show_feature_importances(model, features): plt.figure(figsize = (12, 8)) #          results = pd.DataFrame({'feature': features, 'importance': model.feature_importances_}) results = results.sort_values('importance', ascending = False) #  print(results.head(10)) print('\n     0.01 = ', np.sum(results['importance'] > 0.01)) #  results.head(20).plot(x = 'feature', y = 'importance', kind = 'barh', color = 'red', edgecolor = 'k', title = 'Feature Importances'); return results #         feature_importances = show_feature_importances(clf, features) 

рдЙрдореНрдореАрдж рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рднреА рдПрдХ рд╣реА 4 рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЙрдбрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдорд╣рддреНрд╡ рдореЙрдбрд▓ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдкрдХреЛ рдореБрдЦреНрдп рдХрд╛рд░рдХреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдореЙрдбрд▓ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИfeature importance
28 EXT_SOURCE_1 310
30 EXT_SOURCE_3 282
29 EXT_SOURCE_2 271
7 DAYS_BIRTH 192
3 AMT_CREDIT 161
4 AMT_ANNUITY 142
5 AMT_GOODS_PRICE 129
8 DAYS_EMPLOYED 127
10 DAYS_ID_PUBLISH 102
9 DAYS_REGISTRATION 69

0.01 = 158






рдЕрдиреНрдп рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╕реЗ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдирд╛


рдЕрдм рд╣рдо рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдЧреЗ рдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рдЯреЗрдмрд▓ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рдореЗрдореЛрд░реА рд╕реЗ рдкрд┐рдЫрд▓реА рдЬреНрд╡рд╛рд▓рд╛рдореБрдЦреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрдореЛрд░реА рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ, рдФрд░ рдЖрдЧреЗ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░реЗрдВред

 import gcтАЛ #del app_train, app_test, train_labels, application_train, application_test, poly_features, poly_features_testтАЛ gc.collect() import pandas as pd import numpy as npтАЛ from sklearn.preprocessing import MinMaxScaler, LabelEncoder from sklearn.model_selection import train_test_split, KFold from sklearn.metrics import accuracy_score, roc_auc_score, confusion_matrix from sklearn.feature_selection import VarianceThresholdтАЛ from lightgbm import LGBMClassifier 

рдбреЗрдЯрд╛ рдЖрдпрд╛рдд рдХрд░реЗрдВ, рддреБрд░рдВрдд рд▓рдХреНрд╖реНрдп рдХреЙрд▓рдо рдХреЛ рдПрдХ рдЕрд▓рдЧ рдХреЙрд▓рдо рдореЗрдВ рд╣рдЯрд╛ рджреЗрдВ

 data = pd.read_csv('../input/application_train.csv') test = pd.read_csv('../input/application_test.csv') prev = pd.read_csv('../input/previous_application.csv') buro = pd.read_csv('../input/bureau.csv') buro_balance = pd.read_csv('../input/bureau_balance.csv') credit_card = pd.read_csv('../input/credit_card_balance.csv') POS_CASH = pd.read_csv('../input/POS_CASH_balance.csv') payments = pd.read_csv('../input/installments_payments.csv')тАЛ #Separate target variable y = data['TARGET'] del data['TARGET'] 

рддреБрд░рдВрдд рд╢реНрд░реЗрдгреАрдмрджреНрдз рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕рд╛рдВрдХреЗрддрд┐рдХ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдмрджрд▓рдирд╛ред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдРрд╕рд╛ рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рд╣рдордиреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдирдореВрдиреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЛрдбрд┐рдд рдХрд┐рдпрд╛, рдФрд░ рдлрд┐рд░ рдбреЗрдЯрд╛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд┐рдпрд╛ред рдЖрдЗрдП рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ - рд╣рдо рдЗрди рд╕рднреА рд╢реНрд░реЗрдгреАрдмрджреНрдз рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рдбреЗрдЯрд╛ рдлрд╝реНрд░реЗрдореЛрдВ рдХреЛ рдорд┐рд▓рд╛рдПрдВрдЧреЗ, рдкрд╛рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рдПрдирдХреЛрдб рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рдирдореВрдиреЛрдВ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВрдЧреЗред

 categorical_features = [col for col in data.columns if data[col].dtype == 'object']тАЛ one_hot_df = pd.concat([data,test]) one_hot_df = pd.get_dummies(one_hot_df, columns=categorical_features)тАЛ data = one_hot_df.iloc[:data.shape[0],:] test = one_hot_df.iloc[data.shape[0]:,]тАЛ print ('  ', data.shape) print ('  ', test.shape) 

(307511, 245)
(48744, 245)


рдорд╛рд╕рд┐рдХ рдЛрдг рд╢реЗрд╖ рдкрд░ рдХреНрд░реЗрдбрд┐рдЯ рдмреНрдпреВрд░реЛ рдбреЗрдЯрд╛ред


 buro_balance.head() 



MONTHS_BALANCE - рдЛрдг рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреА рддрд┐рдерд┐ рд╕реЗ рдкрд╣рд▓реЗ рдХреА рдорд╣реАрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред "рд╕реНрдерд┐рддрд┐рдпреЛрдВ" рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ

 buro_balance.STATUS.value_counts() 

C 13646993
0 7499507
X 5810482
1 242347
5 62406
2 23419
3 8924
4 5847
Name: STATUS, dtype: int64


рд╕реНрдЯреЗрдЯрд╕ рдХрд╛ рдЕрд░реНрде рдирд┐рдореНрди рд╣реИ:

- рдмрдВрдж, рдпрд╛рдиреА рдЪреБрдХрд╛рдпрд╛ рд╣реБрдЖ рдЛрдгред X рдПрдХ рдЕрдЬреНрдЮрд╛рдд рд╕реНрдерд┐рддрд┐ рд╣реИред 0 - рд╡рд░реНрддрдорд╛рди рдЛрдг, рдХреЛрдИ рд╡рд┐рд▓рдВрдм рдирд╣реАрдВред 1 - 1-30 рджрд┐рдиреЛрдВ рдХреА рджреЗрд░реА, 2 - 31-60 рджрд┐рдиреЛрдВ рдХреА рджреЗрд░реА, рдФрд░ рдЗрд╕реА рддрд░рд╣ рд╕реНрдерд┐рддрд┐ 5 рддрдХ - рдЛрдг рдХреЛ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЛ рдмреЗрдЪ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣рд╛рдБ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: buro_grouped_size - рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ buro_grouped_max - рдЕрдзрд┐рдХрддрдо рдЛрдг рд╢реЗрд╖ buro_grouped_min - рдиреНрдпреВрдирддрдо рдЛрдг рд╢реЗрд╖ рд░рд╛рд╢рд┐

рдФрд░ рдЗрди рд╕рднреА рдЛрдг рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╣рдо рдЕрдирд╕реНрдЯреИрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХреЛ buoc рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред SK_ID_BUREAU рдпрд╣рд╛рдВ рдФрд░ рд╡рд╣рд╛рдВ рд╕рдорд╛рди рд╣реИред

 buro_grouped_size = buro_balance.groupby('SK_ID_BUREAU')['MONTHS_BALANCE'].size() buro_grouped_max = buro_balance.groupby('SK_ID_BUREAU')['MONTHS_BALANCE'].max() buro_grouped_min = buro_balance.groupby('SK_ID_BUREAU')['MONTHS_BALANCE'].min()тАЛ buro_counts = buro_balance.groupby('SK_ID_BUREAU')['STATUS'].value_counts(normalize = False) buro_counts_unstacked = buro_counts.unstack('STATUS') buro_counts_unstacked.columns = ['STATUS_0', 'STATUS_1','STATUS_2','STATUS_3','STATUS_4','STATUS_5','STATUS_C','STATUS_X',] buro_counts_unstacked['MONTHS_COUNT'] = buro_grouped_size buro_counts_unstacked['MONTHS_MIN'] = buro_grouped_min buro_counts_unstacked['MONTHS_MAX'] = buro_grouped_maxтАЛ buro = buro.join(buro_counts_unstacked, how='left', on='SK_ID_BUREAU') del buro_balance gc.collect() 

рдХреНрд░реЗрдбрд┐рдЯ рдмреНрдпреВрд░реЛ рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА


 buro.head() 


(рдкрд╣рд▓реЗ 7 рдХреЙрд▓рдо рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВ)

рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреЗрдЯрд╛ рд╣реИрдВ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдк рдмрд╕ рдПрдХ-рд╣реЙрдЯ-рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рд╛рдВрдХреЗрддрд┐рдХ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдмрджрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, SK_ID_CURR рджреНрд╡рд╛рд░рд╛ рд╕рдореВрд╣, рдФрд╕рдд рдФрд░, рдЙрд╕реА рддрд░рд╣, рдореБрдЦреНрдп рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рдиреЗ рдХреА рддреИрдпрд╛рд░реА рдХрд░реЗрдВ

 buro_cat_features = [bcol for bcol in buro.columns if buro[bcol].dtype == 'object'] buro = pd.get_dummies(buro, columns=buro_cat_features) avg_buro = buro.groupby('SK_ID_CURR').mean() avg_buro['buro_count'] = buro[['SK_ID_BUREAU', 'SK_ID_CURR']].groupby('SK_ID_CURR').count()['SK_ID_BUREAU'] del avg_buro['SK_ID_BUREAU'] del buro gc.collect() 


рдкрд┐рдЫрд▓реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдкрд░ рдбреЗрдЯрд╛


 prev.head() 



рдЗрд╕реА рддрд░рд╣, рд╣рдо рд╢реНрд░реЗрдгреАрдЧрдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдПрдиреНрдХреЛрдб рдХрд░рддреЗ рд╣реИрдВ, рдФрд╕рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд░реНрддрдорд╛рди рдЖрдИрдбреА рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред

 prev_cat_features = [pcol for pcol in prev.columns if prev[pcol].dtype == 'object'] prev = pd.get_dummies(prev, columns=prev_cat_features) avg_prev = prev.groupby('SK_ID_CURR').mean() cnt_prev = prev[['SK_ID_CURR', 'SK_ID_PREV']].groupby('SK_ID_CURR').count() avg_prev['nb_app'] = cnt_prev['SK_ID_PREV'] del avg_prev['SK_ID_PREV'] del prev gc.collect() 


рдХреНрд░реЗрдбрд┐рдЯ рдХрд╛рд░реНрдб рдХрд╛ рдмреИрд▓реЗрдВрд╕


 POS_CASH.head() 



 POS_CASH.NAME_CONTRACT_STATUS.value_counts() 

Active 9151119
Completed 744883
Signed 87260
Demand 7065
Returned to the store 5461
Approved 4917
Amortized debt 636
Canceled 15
XNA 2
Name: NAME_CONTRACT_STATUS, dtype: int64


рд╣рдо рд╕реНрдкрд╖реНрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдХреВрдЯрдмрджреНрдз рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ

 le = LabelEncoder() POS_CASH['NAME_CONTRACT_STATUS'] = le.fit_transform(POS_CASH['NAME_CONTRACT_STATUS'].astype(str)) nunique_status = POS_CASH[['SK_ID_CURR', 'NAME_CONTRACT_STATUS']].groupby('SK_ID_CURR').nunique() nunique_status2 = POS_CASH[['SK_ID_CURR', 'NAME_CONTRACT_STATUS']].groupby('SK_ID_CURR').max() POS_CASH['NUNIQUE_STATUS'] = nunique_status['NAME_CONTRACT_STATUS'] POS_CASH['NUNIQUE_STATUS2'] = nunique_status2['NAME_CONTRACT_STATUS'] POS_CASH.drop(['SK_ID_PREV', 'NAME_CONTRACT_STATUS'], axis=1, inplace=True) 

рдХрд╛рд░реНрдб рдбреЗрдЯрд╛


 credit_card.head() 


(рдкрд╣рд▓реЗ 7 рдХреЙрд▓рдо)

рд╕рдорд╛рди рдХрд╛рдо

 credit_card['NAME_CONTRACT_STATUS'] = le.fit_transform(credit_card['NAME_CONTRACT_STATUS'].astype(str)) nunique_status = credit_card[['SK_ID_CURR', 'NAME_CONTRACT_STATUS']].groupby('SK_ID_CURR').nunique() nunique_status2 = credit_card[['SK_ID_CURR', 'NAME_CONTRACT_STATUS']].groupby('SK_ID_CURR').max() credit_card['NUNIQUE_STATUS'] = nunique_status['NAME_CONTRACT_STATUS'] credit_card['NUNIQUE_STATUS2'] = nunique_status2['NAME_CONTRACT_STATUS'] credit_card.drop(['SK_ID_PREV', 'NAME_CONTRACT_STATUS'], axis=1, inplace=True) 

рднреБрдЧрддрд╛рди рдбреЗрдЯрд╛


 payments.head() 


(рдкрд╣рд▓реЗ 7 рдХреЙрд▓рдо рджрд┐рдЦрд╛рдП рдЧрдП рд╣реИрдВ)

рдЖрдЗрдП рддреАрди рдЯреЗрдмрд▓ рдмрдирд╛рдПрдВ - рдЗрд╕ рдЯреЗрдмрд▓ рд╕реЗ рдФрд╕рдд, рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рдорд╛рдиред

 avg_payments = payments.groupby('SK_ID_CURR').mean() avg_payments2 = payments.groupby('SK_ID_CURR').max() avg_payments3 = payments.groupby('SK_ID_CURR').min() del avg_payments['SK_ID_PREV'] del payments gc.collect() 

рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ


 data = data.merge(right=avg_prev.reset_index(), how='left', on='SK_ID_CURR') test = test.merge(right=avg_prev.reset_index(), how='left', on='SK_ID_CURR')тАЛ data = data.merge(right=avg_buro.reset_index(), how='left', on='SK_ID_CURR') test = test.merge(right=avg_buro.reset_index(), how='left', on='SK_ID_CURR')тАЛ data = data.merge(POS_CASH.groupby('SK_ID_CURR').mean().reset_index(), how='left', on='SK_ID_CURR') test = test.merge(POS_CASH.groupby('SK_ID_CURR').mean().reset_index(), how='left', on='SK_ID_CURR')тАЛ data = data.merge(credit_card.groupby('SK_ID_CURR').mean().reset_index(), how='left', on='SK_ID_CURR') test = test.merge(credit_card.groupby('SK_ID_CURR').mean().reset_index(), how='left', on='SK_ID_CURR')тАЛ data = data.merge(right=avg_payments.reset_index(), how='left', on='SK_ID_CURR') test = test.merge(right=avg_payments.reset_index(), how='left', on='SK_ID_CURR')тАЛ data = data.merge(right=avg_payments2.reset_index(), how='left', on='SK_ID_CURR') test = test.merge(right=avg_payments2.reset_index(), how='left', on='SK_ID_CURR')тАЛ data = data.merge(right=avg_payments3.reset_index(), how='left', on='SK_ID_CURR') test = test.merge(right=avg_payments3.reset_index(), how='left', on='SK_ID_CURR') del avg_prev, avg_buro, POS_CASH, credit_card, avg_payments, avg_payments2, avg_payments3 gc.collect() print ('  ', data.shape) print ('  ', test.shape) print ('  ', y.shape) 

(307511, 504)
(48744, 504)
(307511,)


рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдЗрд╕ рджреЛрдЧреБрдиреА рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд╕рд╛рде рдорд╛рд░реЗрдВрдЧреЗ!

 from lightgbm import LGBMClassifierтАЛ clf2 = LGBMClassifier() clf2.fit(data, y)тАЛ predictions = clf2.predict_proba(test)[:, 1]тАЛ #    submission = test[['SK_ID_CURR']] submission['TARGET'] = predictionsтАЛ #   submission.to_csv('lightgbm_full.csv', index = False) 

рдкрд░рд┐рдгрд╛рдо 0.770 рд╣реИред

рдареАрдХ рд╣реИ, рдЕрдВрдд рдореЗрдВ, рдЖрдЗрдП рд╕рд┐рд▓рд╡рдЯреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рддрдХрдиреАрдХ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдХреНрд░реЙрд╕-рд╡реИрд▓рд┐рдбреЗрд╢рди рдХрд░реЗрдВ рдФрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдЪреБрдиреЗрдВред

 folds = KFold(n_splits=5, shuffle=True, random_state=546789) oof_preds = np.zeros(data.shape[0]) sub_preds = np.zeros(test.shape[0])тАЛ feature_importance_df = pd.DataFrame()тАЛ feats = [f for f in data.columns if f not in ['SK_ID_CURR']]тАЛ for n_fold, (trn_idx, val_idx) in enumerate(folds.split(data)): trn_x, trn_y = data[feats].iloc[trn_idx], y.iloc[trn_idx] val_x, val_y = data[feats].iloc[val_idx], y.iloc[val_idx] clf = LGBMClassifier( n_estimators=10000, learning_rate=0.03, num_leaves=34, colsample_bytree=0.9, subsample=0.8, max_depth=8, reg_alpha=.1, reg_lambda=.1, min_split_gain=.01, min_child_weight=375, silent=-1, verbose=-1, ) clf.fit(trn_x, trn_y, eval_set= [(trn_x, trn_y), (val_x, val_y)], eval_metric='auc', verbose=100, early_stopping_rounds=100 #30 ) oof_preds[val_idx] = clf.predict_proba(val_x, num_iteration=clf.best_iteration_)[:, 1] sub_preds += clf.predict_proba(test[feats], num_iteration=clf.best_iteration_)[:, 1] / folds.n_splits fold_importance_df = pd.DataFrame() fold_importance_df["feature"] = feats fold_importance_df["importance"] = clf.feature_importances_ fold_importance_df["fold"] = n_fold + 1 feature_importance_df = pd.concat([feature_importance_df, fold_importance_df], axis=0) print('Fold %2d AUC : %.6f' % (n_fold + 1, roc_auc_score(val_y, oof_preds[val_idx]))) del clf, trn_x, trn_y, val_x, val_y gc.collect()тАЛ print('Full AUC score %.6f' % roc_auc_score(y, oof_preds))тАЛ test['TARGET'] = sub_predsтАЛ test[['SK_ID_CURR', 'TARGET']].to_csv('submission_cross.csv', index=False) 

Full AUC score 0.785845

рдХрд╛рдЧрд▓ рдкрд░ рдЕрдВрддрд┐рдо рд╕реНрдХреЛрд░ 0.783

рдЖрдЧреЗ рдХрд╣рд╛рдБ рдЬрд╛рдирд╛ рд╣реИ


рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВред рдбреЗрдЯрд╛ рдХрд╛ рдЕрдиреНрд╡реЗрд╖рдг рдХрд░реЗрдВ, рдХреБрдЫ рд╕рдВрдХреЗрддреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдЙрдиреНрд╣реЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░реЗрдВ, рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВред рдЖрдк рд╣рд╛рдЗрдкрд░рдкреИрд░рдореАрдЯрд░ рдореЛрдЧрд▓реА рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдмрд╣реБрдд рд╕рд╛рд░реА рджрд┐рд╢рд╛рдПрдВред

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рдЫреЛрдЯреЗ рд╕рдВрдХрд▓рди рдиреЗ рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдкрд░ рд╢реЛрдз рдХрд░рдиреЗ рдФрд░ рднрд╡рд┐рд╖реНрдп рдХрд╣рдиреЗрд╡рд╛рд▓рд╛ рдореЙрдбрд▓ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдЖрдзреБрдирд┐рдХ рддрд░реАрдХреЗ рджрд┐рдЦрд╛рдП рд╣реИрдВред рдбреЗрдЯрд╛рдЯреЗрдиреНрд╕ рд╕реАрдЦреЗрдВ, рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛рдУрдВ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдВ, рдорд╕реНрдд рд░рд╣реЗрдВ!

рдФрд░ рдлрд┐рд░ рд╕реЗ рдЧреБрдард▓реА рдХреЗ рд▓рд┐рдВрдХ рдЬреЛ рдореБрдЭреЗ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдЦ рдХреЛ рдЬреАрдердм рдкрд░ рд▓реИрдкрдЯреЙрдк рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдЖрдк рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдбреЗрдЯрд╛рд╕реЗрдЯ рдФрд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреЛрд╣реЗрд░реНрд╕рди рдХрд░реЗрдВрдЧреЗред рдпрд╣рд╛рдВ рд╢реБрд░реВ рдХрд░реЗрдВ: рдПрдХ рд╕реМрдореНрдп рдкрд░рд┐рдЪрдп
рд╕рд╛рдВрдмрдиред HomeCreditRisk: рд╡реНрдпрд╛рдкрдХ EDA + рдЖрдзрд╛рд░ рд░реЗрдЦрд╛ [0.772]
Gabriel Preda. Home Credit Default Risk Extensive EDA
Pavan Raj. Loan repayers v/s Loan defaulters тАФ HOME CREDIT
Lem Lordje Ko. 15 lines: Just EXT_SOURCE_x
Shanth. HOME CREDIT тАФ BUREAU DATA тАФ FEATURE ENGINEERING
Dmitriy Kisil. Good_fun_with_LigthGBM

Source: https://habr.com/ru/post/hi414613/


All Articles