рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЯреЙрдХрд┐рдВрдЧ рд╣реИрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрд╕рдВрдзрд╛рди рд╕реЗ рд▓реЗрдХрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддрдХ рдбреЗрдЯрд╛ рд╡рд┐рдЬреНрдЮрд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛


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


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


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


рдпрд╣ рдХрд╛рд░реНрдп рддреБрдЪреНрдЫ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рдПрдВрдЧреЗ (рддрд╛рдХрд┐ рдЗрд╕рдореЗрдВ 2 рдШрдВрдЯреЗ рд╕реЗ рдХрдо рд╕рдордп рд▓рдЧреЗ) рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдкрд░ (рддрд╛рдХрд┐ рдЗрд╕рдХрд╛ рдкрдврд╝рдиреЗ рдХрд╛ рд╕рдордп 15 рдорд┐рдирдЯ рд╕реЗ рдХрдо рд╣реЛ)ред


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


рд▓реЗрдЦ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдЬреАрдердм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рднреА рдЙрддреНрд╕реБрдХ рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреГрдкрдпрд╛ PR рдЦреЛрд▓реЗрдВред


рд╣рдо рд╕рдорд╕реНрдпрд╛ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ


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


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдПрдХ рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:


" " => [?] => Griffindor 

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


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


рдЪ ( < рди рд╛ рдо > < рдЙ рдк рди рд╛ рдо > ) = ( рдкреА рдЬреА рдЖрд░ рдореИрдВ рдЪ рдЪ рдореИрдВ рдПрди рдбреА рдУ рдЖрд░ ; рдкреА рдЖрд░ рдПрдХ рд╡реА рдПрд▓ рдПрд▓ рдПрдХ рдбрдмреНрд▓реНрдпреВ ; рдкреА рдПрдЪ рдпреВ рдПрдл рдПрдл рдПрд▓ рдкреА рдпреВ рдЪ рдЪ ; рдкреА s l i t h e e r i n )

рдирд╛рдордЙрдкрдирд╛рдо


рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рдХреНрд╡рд╛рд▓рд┐рдЯреА рдЕрд╕реЗрд╕рдореЗрдВрдЯ


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


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


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


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


рдПрдХ рдЖрджрд░реНрд╢ рдЖрд░рдУрд╕реА рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП, рдПрдпреВрд╕реА 1 рд╣реИ, рдПрдХ рдЖрджрд░реНрд╢ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ - 0.5ред


ROC AUC[0.5;1]$рдореЗ


рдПрд▓реНрдЧреЛрд░рд┐рджрдо


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


рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ, рдХрд╛рд░рдХрдХрд░рдг рдорд╢реАрдиреЗрдВ, рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдорди, рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрд╕рд╡реАрдПрдоред


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


рдФрд░ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ:


  • рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдЧрдорди
  • рдмреВрд╕реНрдЯрд┐рдВрдЧ (XGboost, рд▓рд╛рдЗрдЯ рдЬреАрдмреАрдПрдо)
  • рдкреЗрдбрд╝реЛрдВ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛ (рд╕рдЦреНрддреА рд╕реЗ рдмреЛрд▓рдирд╛, рдпрд╣ рд╡рд╣реА рдмрдврд╝рд╛рд╡рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ рдирд┐рдХрд╛рд▓реЗрдВрдЧреЗ: рдЕрддрд┐рд░рд┐рдХреНрдд рдкреЗрдбрд╝)
  • рдмреИрдЧрд┐рдВрдЧ (рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рди)
  • SVM

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


рдбреЗрдЯрд╛


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



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


рдереЛрдбрд╝рд╛ ctrl + c & ctrl + v рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рд╣рдореЗрдВ 4 рдЯреЗрдХреНрд╕реНрдЯ рдлрд╛рдЗрд▓реЗрдВ рдорд┐рд▓рддреА рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ 2 рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рдирд╛рдо рд╣реЛрддреЗ рд╣реИрдВ: рдЕрдВрдЧреНрд░реЗрдЬреА рдФрд░ рд░реВрд╕реАред


рд╣рдо рдПрдХрддреНрд░ рдбреЗрдЯрд╛ (EDA, рдЦреЛрдЬрдкреВрд░реНрдг рдбреЗрдЯрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг) рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВ


рдЗрд╕ рдЪрд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 4 рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕рдВрдХрд╛рдпреЛрдВ рдХреЗ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рдирд╛рдо рд╣реИрдВ, рд╣рдо рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦреЗрдВрдЧреЗ:


 $ ls ../input griffindor.txt hufflpuff.txt ravenclaw.txt slitherin.txt 

рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рддрд┐ рдкрдВрдХреНрддрд┐ рдЫрд╛рддреНрд░ рдХрд╛ 1 рдирд╛рдо рдФрд░ рдЙрдкрдирд╛рдо (рдпрджрд┐ рдХреЛрдИ рд╣реЛ):


 $ wc -l ../input/*.txt 250 ../input/griffindor.txt 167 ../input/hufflpuff.txt 180 ../input/ravenclaw.txt 254 ../input/slitherin.txt 851 total 

рдПрдХрддреНрд░рд┐рдд рдбреЗрдЯрд╛ рдлреЙрд░реНрдо рдХрд╛ рд╣реИ:


 $ cat ../input/griffindor.txt | head -3 && cat ../input/griffindor.txt | tail -3      Charlie Stainforth Melanie Stanmore Stewart 

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


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


рдбреЗрдЯрд╛ рддреИрдпрд╛рд░реА (рдлрд╝реАрдЪрд░ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ)


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


  1. рдкрд░рд┐рдореЗрдп рд╕рдВрдЦреНрдпрд╛
  2. рд╢реНрд░реЗрдгреА (12, 12-18 рдпрд╛ 18+ рддрдХ)
  3. рдмрд╛рдЗрдирд░реА рд╡реИрд▓реНрдпреВ (рдкрд╣рд▓рд╛ рдЛрдг рд▓реМрдЯрд╛рдпрд╛ рдпрд╛ рдирд╣реАрдВ)
  4. рджрд┐рдирд╛рдВрдХ, рд░рдВрдЧ, рд╢реЗрдпрд░ рдЖрджрд┐ред

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


рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ (рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рд╡рд┐рдЬреНрдЮрд╛рди рдХрд╛ рдЕрдзреНрдпрдпрди - рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдХреГрддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ, рдХрднреА рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛), рд╣рдо рдкрд╣рд▓реЗ рдФрд░ рдЕрдВрддрд┐рдо рдирд╛рдо рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:


  1. 1 рдФрд░ рд╢рдмреНрдж рдХрд╛ рдЕрдВрддрд┐рдо рдЕрдХреНрд╖рд░ - рд╕реНрд╡рд░ рдпрд╛ рд╡реНрдпрдВрдЬрди
  2. рдбрдмрд▓ рд╕реНрд╡рд░ рдФрд░ рд╡реНрдпрдВрдЬрди
  3. рд╕реНрд╡рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рд╡реНрдпрдВрдЬрди, рдмрд╣рд░рд╛, рдЖрд╡рд╛рдЬ рдЙрдард╛рдИ
  4. рдирд╛рдо рд▓рдВрдмрд╛рдИ, рдЕрдВрддрд┐рдо рдирд╛рдо рд▓рдВрдмрд╛рдИ
  5. ...

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕ рднрдВрдбрд╛рд░ рдХреЛ рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдВрдЧреЗ рдФрд░ рдПрдХ рд╡рд░реНрдЧ рдЬреЛрдбрд╝реЗрдВрдЧреЗ рддрд╛рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓реИрдЯрд┐рди рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдпрд╣ рд╣рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрдЧрд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЕрдХреНрд╖рд░ рдХреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред


 >> from Phonetic import RussianLetter, EnglishLetter >> RussianLetter('').classify() {'consonant': True, 'deaf': False, 'hard': False, 'mark': False, 'paired': False, 'shock': False, 'soft': False, 'sonorus': True, 'vowel': False} >> EnglishLetter('d').classify() {'consonant': True, 'deaf': False, 'hard': True, 'mark': False, 'paired': False, 'shock': False, 'soft': False, 'sonorus': True, 'vowel': False} 

рдЕрдм рд╣рдо рдЖрдБрдХрдбрд╝реЛрдВ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:


 def starts_with_letter(word, letter_type='vowel'): """   ,    . :param word:  :param letter_type: 'vowel'  'consonant'.   . :return: Boolean """ if len(word) == 0: return False return Letter(word[0]).classify()[letter_type] def count_letter_type(word): """       . :param word:  :param debug:    :return: :obj:`dict` of :obj:`str` => :int:count """ count = { 'consonant': 0, 'deaf': 0, 'hard': 0, 'mark': 0, 'paired': 0, 'shock': 0, 'soft': 0, 'sonorus': 0, 'vowel': 0 } for letter in word: classes = Letter(letter).classify() for key in count.keys(): if classes[key]: count[key] += 1 return count 

рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╣рд▓реЗ рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 from feature_engineering import * >> print("  (┬л┬╗): ", len(""))   (┬л┬╗): 5 >> print(" (┬л┬╗)   : ", starts_with_letter('', 'vowel'))  (┬л┬╗)   : False >> print(" (┬л┬╗)   : ", starts_with_letter('', 'consonant'))  (┬л┬╗)   : True >> count_Harry = count_letter_type("") >> print ("     (┬л┬╗): ", count_Harry['paired'])      (┬л┬╗): 1 

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


f (<рдирд╛рдо> <рдЙрдкрдирд╛рдо>) => (рд▓рдВрдмрд╛рдИ_ {рдирд╛рдо}, рд▓рдВрдмрд╛рдИ_ {рдЙрдкрдирд╛рдо}, ..., \ _vowels_ {рдЙрдкрдирд╛рдо] рдХреА рд╕рдВрдЦреНрдпрд╛)


рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:


 >> from data_loaders import load_processed_data >> hogwarts_df = load_processed_data() >> hogwarts_df.head() 


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЫрд╛рддреНрд░ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рдХреНрд╖рдг рдорд┐рд▓рддреЗ рд╣реИрдВ:


 >> hogwarts_df[hogwarts_df.columns].dtypes 

рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рд╣реБрдП
 name object surname object is_english bool name_starts_with_vowel bool name_starts_with_consonant bool name_ends_with_vowel bool name_ends_with_consonant bool name_length int64 name_vowels_count int64 name_double_vowels_count int64 name_consonant_count int64 name_double_consonant_count int64 name_paired_count int64 name_deaf_count int64 name_sonorus_count int64 surname_starts_with_vowel bool surname_starts_with_consonant bool surname_ends_with_vowel bool surname_ends_with_consonant bool surname_length int64 surname_vowels_count int64 surname_double_vowels_count int64 surname_consonant_count int64 surname_double_consonant_count int64 surname_paired_count int64 surname_deaf_count int64 surname_sonorus_count int64 is_griffindor int64 is_hufflpuff int64 is_ravenclaw int64 is_slitherin int64 dtype: object 

рдЕрдВрддрд┐рдо 4 рдХреЙрд▓рдо рд▓рдХреНрд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ - рдЙрдирдореЗрдВ рд╡рд╣ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕ рдкрд░ рдПрдХ рдЫрд╛рддреНрд░ рджреНрд╡рд╛рд░рд╛ рджрд╛рдЦрд┐рд▓рд╛ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдПрд▓реНрдЧреЛрд░рд┐рдердо рдкреНрд░рд╢рд┐рдХреНрд╖рдг


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


рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рд╕реАрдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХрдИ рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВ:


  1. рдПрдХ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░реЗрдВред
  2. рддреНрд░реБрдЯрд┐ рджрд░ред
  3. рдореЙрдбрд▓ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдареАрдХ рдХрд░реЗрдВред
  4. 1-3 рддрдХ рджреЛрд╣рд░рд╛рдПрдВ рдЬрдм рддрдХ рдХрд┐ рд▓рдХреНрд╖реНрдп рдкреВрд░рд╛ рди рд╣реЛ рдЬрд╛рдП, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░реБрдХ рдЬрд╛рддреА рд╣реИ рдпрд╛ рдбреЗрдЯрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
  5. рдкрд░рд┐рдгрд╛рдореА рдореЙрдбрд▓ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рд░реЗрдЯ рдХрд░реЗрдВред


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



рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо 4 рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдВрдЧреЗ: рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдХрд╛рдп рдХреЗ рд▓рд┐рдП рдПрдХред рдЗрд╕рд▓рд┐рдП, рд╣рдо Slytherin рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗ:


 #  ,     - : >> data_full = hogwarts_df.drop( [ 'name', 'surname', 'is_griffindor', 'is_hufflpuff', 'is_ravenclaw' ], axis=1).copy() #    ,   : >> X_data = data_full.drop('is_slitherin', axis=1) #     ,   1    >> y = data_full.is_slitherin 

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


 from sklearn.cross_validation import train_test_split from sklearn.ensemble import RandomForestClassifier #      >> seed = 7 #    >> test_size = 0.3 >> X_train, X_test, y_train, y_test = train_test_split(X_data, y, test_size=test_size, random_state=seed) >> rfc = RandomForestClassifier() >> rfc_model = rfc.fit(X_train, y_train) 

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


рдХреЛрдб рджреЗрдЦреЗрдВ
 from data_loaders import parse_line_to_hogwarts_df import pandas as pd def get_single_student_features (name): """      :param name: string     :return: pd.DataFrame     """ featurized_person_df = parse_line_to_hogwarts_df(name) person_df = pd.DataFrame(featurized_person_df, columns=[ 'name', 'surname', 'is_english', 'name_starts_with_vowel', 'name_starts_with_consonant', 'name_ends_with_vowel', 'name_ends_with_consonant', 'name_length', 'name_vowels_count', 'name_double_vowels_count', 'name_consonant_count', 'name_double_consonant_count', 'name_paired_count', 'name_deaf_count', 'name_sonorus_count', 'surname_starts_with_vowel', 'surname_starts_with_consonant', 'surname_ends_with_vowel', 'surname_ends_with_consonant', 'surname_length', 'surname_vowels_count', 'surname_double_vowels_count', 'surname_consonant_count', 'surname_double_consonant_count', 'surname_paired_count', 'surname_deaf_count', 'surname_sonorus_count', ], index=[0] ) featurized_person = person_df.drop( ['name', 'surname'], axis = 1 ) return featurized_person def get_predictions_vector (model, person): """    :param model:   :param person: string   :return: list    """ encoded_person = get_single_student_features(person) return model.predict_proba(encoded_person)[0] 

рдЕрдм рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдкрд░реАрдХреНрд╖рдг рдбреЗрдЯрд╛ рд╕реЗрдЯ рджреЗрдВред


 def score_testing_dataset (model): """      . :param model:   """ testing_dataset = [ " ", "Kirill Malev", " ", "Harry Potter", " ", " ","Severus Snape", " ", "Tom Riddle", " ", "Salazar Slytherin"] for name in testing_dataset: print ("{} тАФ {}".format(name, get_predictions_vector(model, name)[1])) score_testing_dataset(rfc_model) 

   тАФ 0.5 Kirill Malev тАФ 0.5   тАФ 0.0 Harry Potter тАФ 0.0   тАФ 0.75   тАФ 0.9 Severus Snape тАФ 0.5   тАФ 0.2 Tom Riddle тАФ 0.5   тАФ 0.2 Salazar Slytherin тАФ 0.3 

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


 from sklearn.metrics import accuracy_score, roc_auc_score, classification_report predictions = rfc_model.predict(X_test) print("Classification report: ") print(classification_report(y_test, predictions)) print("Accuracy for Random Forest Model: %.2f" % (accuracy_score(y_test, predictions) * 100)) print("ROC AUC from first Random Forest Model: %.2f" % (roc_auc_score(y_test, predictions))) 

 Classification report: precision recall f1-score support 0 0.66 0.88 0.75 168 1 0.38 0.15 0.21 89 avg / total 0.56 0.62 0.56 257 Accuracy for Random Forest Model: 62.26 ROC AUC from first Random Forest Model: 0.51 

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


рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдгред рдЧреБрдгрд╡рддреНрддрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕


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



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


 from model_training import train_classifiers from data_loaders import load_processed_data import warnings warnings.filterwarnings('ignore') #   hogwarts_df = load_processed_data() #     data_full = hogwarts_df.drop( [ 'name', 'surname', 'is_griffindor', 'is_hufflpuff', 'is_ravenclaw' ], axis=1).copy() X_data = data_full.drop('is_slitherin', axis=1) y = data_full.is_slitherin #    slitherin_models = train_classifiers(data_full, X_data, y) score_testing_dataset(slitherin_models[5]) 

   тАФ 0.09437856871661066 Kirill Malev тАФ 0.20820536334902712   тАФ 0.07550095601699099 Harry Potter тАФ 0.07683794773639624   тАФ 0.9414529336862744   тАФ 0.9293671807790949 Severus Snape тАФ 0.6576783576162999   тАФ 0.18577792617672767 Tom Riddle тАФ 0.8351835484058869   тАФ 0.25930925139546795 Salazar Slytherin тАФ 0.24008788903854789 

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



 >> from model_training import train_all_models #      >> slitherin_models, griffindor_models, ravenclaw_models, hufflpuff_models = \ train_all_models() 

рдмрд╣реБрдкрдж рдкреНрд░рддрд┐рдЧрдорди рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рд▓рдВрдмрд╛ рдирд┐рд╖реНрдХрд░реНрд╖
 SVM Default Report Accuracy for SVM Default: 73.93 ROC AUC for SVM Default: 0.53 Tuned SVM Report Accuracy for Tuned SVM: 72.37 ROC AUC for Tuned SVM: 0.50 KNN Default Report Accuracy for KNN Default: 70.04 ROC AUC for KNN Default: 0.58 Tuned KNN Report Accuracy for Tuned KNN: 69.65 ROC AUC for Tuned KNN: 0.58 XGBoost Default Report Accuracy for XGBoost Default: 70.43 ROC AUC for XGBoost Default: 0.54 Tuned XGBoost Report Accuracy for Tuned XGBoost: 68.09 ROC AUC for Tuned XGBoost: 0.56 Random Forest Default Report Accuracy for Random Forest Default: 73.93 ROC AUC for Random Forest Default: 0.62 Tuned Random Forest Report Accuracy for Tuned Random Forest: 74.32 ROC AUC for Tuned Random Forest: 0.54 Extra Trees Default Report Accuracy for Extra Trees Default: 69.26 ROC AUC for Extra Trees Default: 0.57 Tuned Extra Trees Report Accuracy for Tuned Extra Trees: 73.54 ROC AUC for Tuned Extra Trees: 0.55 LGBM Default Report Accuracy for LGBM Default: 70.82 ROC AUC for LGBM Default: 0.62 Tuned LGBM Report Accuracy for Tuned LGBM: 74.71 ROC AUC for Tuned LGBM: 0.53 RGF Default Report Accuracy for RGF Default: 70.43 ROC AUC for RGF Default: 0.58 Tuned RGF Report Accuracy for Tuned RGF: 71.60 ROC AUC for Tuned RGF: 0.60 FRGF Default Report Accuracy for FRGF Default: 68.87 ROC AUC for FRGF Default: 0.59 Tuned FRGF Report Accuracy for Tuned FRGF: 69.26 ROC AUC for Tuned FRGF: 0.59 SVM Default Report Accuracy for SVM Default: 70.43 ROC AUC for SVM Default: 0.50 Tuned SVM Report Accuracy for Tuned SVM: 71.60 ROC AUC for Tuned SVM: 0.50 KNN Default Report Accuracy for KNN Default: 63.04 ROC AUC for KNN Default: 0.49 Tuned KNN Report Accuracy for Tuned KNN: 65.76 ROC AUC for Tuned KNN: 0.50 XGBoost Default Report Accuracy for XGBoost Default: 69.65 ROC AUC for XGBoost Default: 0.54 Tuned XGBoost Report Accuracy for Tuned XGBoost: 68.09 ROC AUC for Tuned XGBoost: 0.50 Random Forest Default Report Accuracy for Random Forest Default: 66.15 ROC AUC for Random Forest Default: 0.51 Tuned Random Forest Report Accuracy for Tuned Random Forest: 70.43 ROC AUC for Tuned Random Forest: 0.50 Extra Trees Default Report Accuracy for Extra Trees Default: 64.20 ROC AUC for Extra Trees Default: 0.49 Tuned Extra Trees Report Accuracy for Tuned Extra Trees: 70.82 ROC AUC for Tuned Extra Trees: 0.51 LGBM Default Report Accuracy for LGBM Default: 67.70 ROC AUC for LGBM Default: 0.56 Tuned LGBM Report Accuracy for Tuned LGBM: 70.82 ROC AUC for Tuned LGBM: 0.50 RGF Default Report Accuracy for RGF Default: 66.54 ROC AUC for RGF Default: 0.52 Tuned RGF Report Accuracy for Tuned RGF: 65.76 ROC AUC for Tuned RGF: 0.53 FRGF Default Report Accuracy for FRGF Default: 65.76 ROC AUC for FRGF Default: 0.53 Tuned FRGF Report Accuracy for Tuned FRGF: 69.65 ROC AUC for Tuned FRGF: 0.52 SVM Default Report Accuracy for SVM Default: 74.32 ROC AUC for SVM Default: 0.50 Tuned SVM Report Accuracy for Tuned SVM: 74.71 ROC AUC for Tuned SVM: 0.51 KNN Default Report Accuracy for KNN Default: 69.26 ROC AUC for KNN Default: 0.48 Tuned KNN Report Accuracy for Tuned KNN: 73.15 ROC AUC for Tuned KNN: 0.49 XGBoost Default Report Accuracy for XGBoost Default: 72.76 ROC AUC for XGBoost Default: 0.49 Tuned XGBoost Report Accuracy for Tuned XGBoost: 74.32 ROC AUC for Tuned XGBoost: 0.50 Random Forest Default Report Accuracy for Random Forest Default: 73.93 ROC AUC for Random Forest Default: 0.52 Tuned Random Forest Report Accuracy for Tuned Random Forest: 74.32 ROC AUC for Tuned Random Forest: 0.50 Extra Trees Default Report Accuracy for Extra Trees Default: 73.93 ROC AUC for Extra Trees Default: 0.52 Tuned Extra Trees Report Accuracy for Tuned Extra Trees: 73.93 ROC AUC for Tuned Extra Trees: 0.50 LGBM Default Report Accuracy for LGBM Default: 73.54 ROC AUC for LGBM Default: 0.52 Tuned LGBM Report Accuracy for Tuned LGBM: 74.32 ROC AUC for Tuned LGBM: 0.50 RGF Default Report Accuracy for RGF Default: 73.54 ROC AUC for RGF Default: 0.51 Tuned RGF Report Accuracy for Tuned RGF: 73.93 ROC AUC for Tuned RGF: 0.50 FRGF Default Report Accuracy for FRGF Default: 73.93 ROC AUC for FRGF Default: 0.53 Tuned FRGF Report Accuracy for Tuned FRGF: 73.93 ROC AUC for Tuned FRGF: 0.50 SVM Default Report Accuracy for SVM Default: 80.54 ROC AUC for SVM Default: 0.50 Tuned SVM Report Accuracy for Tuned SVM: 80.93 ROC AUC for Tuned SVM: 0.52 KNN Default Report Accuracy for KNN Default: 78.60 ROC AUC for KNN Default: 0.50 Tuned KNN Report Accuracy for Tuned KNN: 80.16 ROC AUC for Tuned KNN: 0.51 XGBoost Default Report Accuracy for XGBoost Default: 80.54 ROC AUC for XGBoost Default: 0.50 Tuned XGBoost Report Accuracy for Tuned XGBoost: 77.04 ROC AUC for Tuned XGBoost: 0.52 Random Forest Default Report Accuracy for Random Forest Default: 77.43 ROC AUC for Random Forest Default: 0.49 Tuned Random Forest Report Accuracy for Tuned Random Forest: 80.54 ROC AUC for Tuned Random Forest: 0.50 Extra Trees Default Report Accuracy for Extra Trees Default: 76.26 ROC AUC for Extra Trees Default: 0.48 Tuned Extra Trees Report Accuracy for Tuned Extra Trees: 78.60 ROC AUC for Tuned Extra Trees: 0.50 LGBM Default Report Accuracy for LGBM Default: 75.49 ROC AUC for LGBM Default: 0.51 Tuned LGBM Report Accuracy for Tuned LGBM: 80.54 ROC AUC for Tuned LGBM: 0.50 RGF Default Report Accuracy for RGF Default: 78.99 ROC AUC for RGF Default: 0.52 Tuned RGF Report Accuracy for Tuned RGF: 75.88 ROC AUC for Tuned RGF: 0.55 FRGF Default Report Accuracy for FRGF Default: 76.65 ROC AUC for FRGF Default: 0.50 #   ,        

 from sklearn.linear_model import LogisticRegression clf = LogisticRegression(random_state=0, solver='lbfgs', multi_class='multinomial') hogwarts_df = load_processed_data_multi() #     data_full = hogwarts_df.drop( [ 'name', 'surname', ], axis=1).copy() X_data = data_full.drop('faculty', axis=1) y = data_full.faculty clf.fit(X_data, y) score_testing_dataset(clf) 

   тАФ [0.3602361 0.16166944 0.16771712 0.31037733] Kirill Malev тАФ [0.47473072 0.16051924 0.13511385 0.22963619]   тАФ [0.38697926 0.19330242 0.17451052 0.2452078 ] Harry Potter тАФ [0.40245098 0.16410043 0.16023278 0.27321581]   тАФ [0.13197025 0.16438855 0.17739254 0.52624866]   тАФ [0.17170203 0.1205678 0.14341742 0.56431275] Severus Snape тАФ [0.15558044 0.21589378 0.17370406 0.45482172]   тАФ [0.39301231 0.07397324 0.1212741 0.41174035] Tom Riddle тАФ [0.26623969 0.14194379 0.1728505 0.41896601]   тАФ [0.24843037 0.21632736 0.21532696 0.3199153 ] Salazar Slytherin тАФ [0.09359144 0.26735897 0.2742305 0.36481909] 

confusion_matrix:


 confusion_matrix(clf.predict(X_data), y) 

 array([[144, 68, 64, 78], [ 8, 9, 8, 6], [ 22, 18, 31, 20], [ 77, 73, 78, 151]]) 

 def get_predctions_vector (models, person): predictions = [get_predictions_vector (model, person)[1] for model in models] return { 'slitherin': predictions[0], 'griffindor': predictions[1], 'ravenclaw': predictions[2], 'hufflpuff': predictions[3] } def score_testing_dataset (models): testing_dataset = [ " ", "Kirill Malev", " ", "Harry Potter", " ", " ","Severus Snape", " ", "Tom Riddle", " ", "Salazar Slytherin"] data = [] for name in testing_dataset: predictions = get_predctions_vector(models, name) predictions['name'] = name data.append(predictions) scoring_df = pd.DataFrame(data, columns=['name', 'slitherin', 'griffindor', 'hufflpuff', 'ravenclaw']) return scoring_df # Data Science тАФ    ,       top_models = [ slitherin_models[3], griffindor_models[3], ravenclaw_models[3], hufflpuff_models[3] ] score_testing_dataset(top_models) 

  name slitherin griffindor hufflpuff ravenclaw 0   0.349084 0.266909 0.110311 0.091045 1 Kirill Malev 0.289914 0.376122 0.384986 0.103056 2   0.338258 0.400841 0.016668 0.124825 3 Harry Potter 0.245377 0.357934 0.026287 0.154592 4   0.917423 0.126997 0.176640 0.096570 5   0.969693 0.106384 0.150146 0.082195 6 Severus Snape 0.663732 0.259189 0.290252 0.074148 7   0.268466 0.579401 0.007900 0.083195 8 Tom Riddle 0.639731 0.541184 0.084395 0.156245 9   0.653595 0.147506 0.172940 0.137134 10 Salazar Slytherin 0.647399 0.169964 0.095450 0.26126 


, . ROC AUC , 0.5. , :


  • ;
  • ;
  • , ;
  • , ;
  • , , .

, , , , XGBoost CV , .


! , 70% . , 4 .


 from model_training import train_production_models from xgboost import XGBClassifier best_models = [] for i in range (0,4): best_models.append(XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1, colsample_bytree=0.7, gamma=0, learning_rate=0.05, max_delta_step=0, max_depth=6, min_child_weight=11, missing=-999, n_estimators=1000, n_jobs=1, nthread=4, objective='binary:logistic', random_state=0, reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=1337, silent=1, subsample=0.8)) slitherin_model, griffindor_model, ravenclaw_model, hufflpuff_model = \ train_production_models(best_models) top_models = slitherin_model, griffindor_model, ravenclaw_model, hufflpuff_model score_testing_dataset(top_models) 

 name slitherin griffindor hufflpuff ravenclaw 0   0.273713 0.372337 0.065923 0.279577 1 Kirill Malev 0.401603 0.761467 0.111068 0.023902 2   0.031540 0.616535 0.196342 0.217829 3 Harry Potter 0.183760 0.422733 0.119393 0.173184 4   0.945895 0.021788 0.209820 0.019449 5   0.950932 0.088979 0.084131 0.012575 6 Severus Snape 0.634035 0.088230 0.249871 0.036682 7   0.426440 0.431351 0.028444 0.083636 8 Tom Riddle 0.816804 0.136530 0.069564 0.035500 9   0.409634 0.213925 0.028631 0.252723 10 Salazar Slytherin 0.824590 0.067910 0.111147 0.085710 

, , .


, , . .


 import pickle pickle.dump(slitherin_model, open("../output/slitherin.xgbm", "wb")) pickle.dump(griffindor_model, open("../output/griffindor.xgbm", "wb")) pickle.dump(ravenclaw_model, open("../output/ravenclaw.xgbm", "wb")) pickle.dump(hufflpuff_model, open("../output/hufflpuff.xgbm", "wb")) 


, . , , , .


, , . , . , Data Scientist тАФ -.


:


  • ;
  • json- json;
  • .

, docker-, python-. , flask.


 from __future__ import print_function # In python 2.7 import os import subprocess import json import re from flask import Flask, request, jsonify from inspect import getmembers, ismethod import numpy as npb import pandas as pd import math import os import pickle import xgboost as xgb import sys from letter import Letter from talking_hat import * from sklearn.ensemble import RandomForestClassifier import warnings def prod_predict_classes_for_name (full_name): featurized_person = parse_line_to_hogwarts_df(full_name) person_df = pd.DataFrame(featurized_person, columns=[ 'name', 'surname', 'is_english', 'name_starts_with_vowel', 'name_starts_with_consonant', 'name_ends_with_vowel', 'name_ends_with_consonant', 'name_length', 'name_vowels_count', 'name_double_vowels_count', 'name_consonant_count', 'name_double_consonant_count', 'name_paired_count', 'name_deaf_count', 'name_sonorus_count', 'surname_starts_with_vowel', 'surname_starts_with_consonant', 'surname_ends_with_vowel', 'surname_ends_with_consonant', 'surname_length', 'surname_vowels_count', 'surname_double_vowels_count', 'surname_consonant_count', 'surname_double_consonant_count', 'surname_paired_count', 'surname_deaf_count', 'surname_sonorus_count', ], index=[0] ) slitherin_model = pickle.load(open("models/slitherin.xgbm", "rb")) griffindor_model = pickle.load(open("models/griffindor.xgbm", "rb")) ravenclaw_model = pickle.load(open("models/ravenclaw.xgbm", "rb")) hufflpuff_model = pickle.load(open("models/hufflpuff.xgbm", "rb")) predictions = get_predctions_vector([ slitherin_model, griffindor_model, ravenclaw_model, hufflpuff_model ], person_df.drop(['name', 'surname'], axis=1)) return { 'slitherin': float(predictions[0][1]), 'griffindor': float(predictions[1][1]), 'ravenclaw': float(predictions[2][1]), 'hufflpuff': float(predictions[3][1]) } def predict(params): fullname = params['fullname'] print(params) return prod_predict_classes_for_name(fullname) def create_app(): app = Flask(__name__) functions_list = [predict] @app.route('/<func_name>', methods=['POST']) def api_root(func_name): for function in functions_list: if function.__name__ == func_name: try: json_req_data = request.get_json() if json_req_data: res = function(json_req_data) else: return jsonify({"error": "error in receiving the json input"}) except Exception as e: data = { "error": "error while running the function" } if hasattr(e, 'message'): data['message'] = e.message elif len(e.args) >= 1: data['message'] = e.args[0] return jsonify(data) return jsonify({"success": True, "result": res}) output_string = 'function: %s not found' % func_name return jsonify({"error": output_string}) return app if __name__ == '__main__': app = create_app() app.run(host='0.0.0.0') 

Dockerfile:


 FROM datmo/python-base:cpu-py35 #  python3-wheel,        RUN apt-get update; apt-get install -y python3-pip python3-numpy python3-scipy python3-wheel ADD requirements.txt / RUN pip3 install -r /requirements.txt RUN mkdir /code;mkdir /code/models COPY ./python_api.py ./talking_hat.py ./letter.py ./request.py /code/ COPY ./models/* /code/models/ WORKDIR /code CMD python3 /code/python_api.py 

:


 docker build -t talking_hat . && docker rm talking_hat && docker run --name talking_hat -p 5000:5000 talking_hat 


тАФ . , Apache Benchmark . , . тАФ .


 $ ab -p data.json -T application/json -c 50 -n 10000 http://0.0.0.0:5000/predict 

ab
 This is ApacheBench, Version 2.3 <$Revision: 1807734 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 0.0.0.0 (be patient) Completed 1000 requests Completed 2000 requests Completed 3000 requests Completed 4000 requests Completed 5000 requests Completed 6000 requests Completed 7000 requests Completed 8000 requests Completed 9000 requests Completed 10000 requests Finished 10000 requests Server Software: Werkzeug/0.14.1 Server Hostname: 0.0.0.0 Server Port: 5000 Document Path: /predict Document Length: 141 bytes Concurrency Level: 50 Time taken for tests: 238.552 seconds Complete requests: 10000 Failed requests: 0 Total transferred: 2880000 bytes Total body sent: 1800000 HTML transferred: 1410000 bytes Requests per second: 41.92 [#/sec] (mean) Time per request: 1192.758 [ms] (mean) Time per request: 23.855 [ms] (mean, across all concurrent requests) Transfer rate: 11.79 [Kbytes/sec] received 7.37 kb/s sent 19.16 kb/s total Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 3 Processing: 199 1191 352.5 1128 3352 Waiting: 198 1190 352.5 1127 3351 Total: 202 1191 352.5 1128 3352 Percentage of the requests served within a certain time (ms) 50% 1128 66% 1277 75% 1378 80% 1451 90% 1668 95% 1860 98% 2096 99% 2260 100% 3352 (longest request) 

, :


 def prod_predict_classes_for_name (full_name): <...> predictions = get_predctions_vector([ app.slitherin_model, app.griffindor_model, app.ravenclaw_model, app.hufflpuff_model ], person_df.drop(['name', 'surname'], axis=1)) return { 'slitherin': float(predictions[0][1]), 'griffindor': float(predictions[1][1]), 'ravenclaw': float(predictions[2][1]), 'hufflpuff': float(predictions[3][1]) } def create_app(): <...> with app.app_context(): app.slitherin_model = pickle.load(open("models/slitherin.xgbm", "rb")) app.griffindor_model = pickle.load(open("models/griffindor.xgbm", "rb")) app.ravenclaw_model = pickle.load(open("models/ravenclaw.xgbm", "rb")) app.hufflpuff_model = pickle.load(open("models/hufflpuff.xgbm", "rb")) return app 

:


 $ docker build -t talking_hat . && docker rm talking_hat && docker run --name talking_hat -p 5000:5000 talking_hat $ ab -p data.json -T application/json -c 50 -n 10000 http://0.0.0.0:5000/predict 

ab
 This is ApacheBench, Version 2.3 <$Revision: 1807734 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 0.0.0.0 (be patient) Completed 1000 requests Completed 2000 requests Completed 3000 requests Completed 4000 requests Completed 5000 requests Completed 6000 requests Completed 7000 requests Completed 8000 requests Completed 9000 requests Completed 10000 requests Finished 10000 requests Server Software: Werkzeug/0.14.1 Server Hostname: 0.0.0.0 Server Port: 5000 Document Path: /predict Document Length: 141 bytes Concurrency Level: 50 Time taken for tests: 219.812 seconds Complete requests: 10000 Failed requests: 3 (Connect: 0, Receive: 0, Length: 3, Exceptions: 0) Total transferred: 2879997 bytes Total body sent: 1800000 HTML transferred: 1409997 bytes Requests per second: 45.49 [#/sec] (mean) Time per request: 1099.062 [ms] (mean) Time per request: 21.981 [ms] (mean, across all concurrent requests) Transfer rate: 12.79 [Kbytes/sec] received 8.00 kb/s sent 20.79 kb/s total Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 2 Processing: 235 1098 335.2 1035 3464 Waiting: 235 1097 335.2 1034 3462 Total: 238 1098 335.2 1035 3464 Percentage of the requests served within a certain time (ms) 50% 1035 66% 1176 75% 1278 80% 1349 90% 1541 95% 1736 98% 1967 99% 2141 100% 3464 (longest request) 

. . , .


рдирд┐рд╖реНрдХрд░реНрд╖


, . - .


, :


  • feature engineering- ( ), , Soundex .
  • PyTorch . , , .
  • flask Quart , , .
  • - -, .

, , . , !


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

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


All Articles