рдКрд░реНрдЬрд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдорд╢реАрди рд╕реАрдЦрдиреЗ, рдпрд╛ рди рдХреЗрд╡рд▓ рд╣рд░ рдХреЛрдИ рдХрд▓ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ

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

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


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

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

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

рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рдЦрдмрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдиреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдРрд╕реЗ "рд╡рд┐рд╢реЗрд╖ рджрд┐рди" рдкреНрд░рджрд╛рди рдХрд┐рдП рд╣реИрдВ рдЬреЛ 8% рдХреА рдФрд╕рдд рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рддреНрд░реБрдЯрд┐ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рд╕рднреА рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЧреНрд░рд╛рд╣рдХ 3 рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐ рдШрдВрдЯрд╛ рдмрд┐рдЬрд▓реА рдХреА рдЦрдкрдд рдХрд╛ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдбреЗрдЯрд╛ рдФрд░ рд╢рд╣рд░ рдХрд╛ рдирд╛рдо рд╣реИред


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

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt


# df - pandas DataFrame  
sns.heatmap(df.corr());


рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рд░реВрд╕реА рд╕рдВрдШ рдореЗрдВ рдмрд┐рдЬрд▓реА рдХреА рдЦрдкрдд рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореЙрдбрд▓ рдореЗрдВ, 2 рдХрд╛рд░рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЦрдкрдд рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рдФрд░ рддрд╛рдкрдорд╛рди рдХрд╛ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдиред 


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





рд╕рдкреНрддрд╛рд╣ рдХреЗ рджрд┐рдиреЛрдВ рдореЗрдВ рдПрдХ рджрд┐рди рдХреЗ рдЕрдВрджрд░, рдКрд░реНрдЬрд╛ рдХреА рдЦрдкрдд рдХрд╛ рдЪрд░рдо рдорд╛рди 11-12 рдШрдВрдЯреЗ рдкрд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рд╢рд╛рдо рдиреМ рдмрдЬреЗ рдХреЗ рдмрд╛рдж рддреЗрдЬ рдЧрд┐рд░рд╛рд╡рдЯ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИред 


рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХреЛрдВ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЬреИрд╕рд╛ рд╣реИ:

рдФрджреНрдпреЛрдЧрд┐рдХ рдФрд░ рд╕рд╛рдВрд╕реНрдХреГрддрд┐рдХ рдХреЗрдВрджреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рджреИрдирд┐рдХ рд╕рд░реНрджрд┐рдпреЛрдВ рдФрд░ рдЧрд░реНрдорд┐рдпреЛрдВ рдореЗрдВ рджреИрдирд┐рдХ рдЦрдкрдд рдХрд╛рд░реНрдпрдХреНрд░рдоред рд╕реНрд░реЛрдд

рдореЛрдбрд▓рд┐рдВрдЧ


рдирдмреА


рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдлреЗрд╕рдмреБрдХ рд╕реЗ рдкреИрдЧрдВрдмрд░ рдХреЛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХреЛ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗред рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдерд╛, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ "рдПрдХ рдРрд╕реА рдЪреАрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╛рдж рдХрд┐рдпрд╛ рдЬреЛ рдмрд╕ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреА рд╣реИред" рдкреИрдЧрдВрдмрд░ рдбреЗрдЯрд╛ рдлреНрд░реЗрдо рдореЗрдВ рдХреЙрд▓рдо "рдбреАрдПрд╕" рдФрд░ "рд╡рд╛рдИ" рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред YYYY-MM-DD HH рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рджрд┐рдирд╛рдВрдХ: MM: SS, рдФрд░ рд▓рдХреНрд╖реНрдп рдкреНрд░рддрд┐ рдШрдВрдЯреЗ рдЦрдкрдд рд╣реИ, рдХреНрд░рдорд╢рдГ (рдХрд╛рдо рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╣реИрдВ )ред

df = pd.read_pickle('full.pkl')
pjme = df.loc[:'2018-06-01 23:00'].rename(columns={'hour_value': 'y'}) 
pjme['ds'] = pjme.index
split_date = '2018-03-01 23:00'
pjme_train = pjme.loc[pjme.index <= split_date]
pjme_test = pjme.loc[pjme.index > split_date]


playoffs = pd.DataFrame({
  'holiday': 'playoff',
  'ds': df[(df.rest_day == 1)|(df.is_weekend == 1)].index,
  'lower_window': 0,
  'upper_window': 1,
})


model = Prophet(holidays=playoffs)
model.fit(pjme_train.reset_index())
forecast = model.predict(df=pjme_test.reset_index())



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

Sarimaax


рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рдкреНрд░рдпрд╛рд╕ SARIMAX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдЧреБрдгрд╛рдВрдХ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдХрд╛рдлреА рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рдкреИрдЧрдВрдмрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдХреА рддреНрд░реБрдЯрд┐ рдХреЛ 6-11% рддрдХ рдХрдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ред 

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

рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ SARIMA рдорд╛рдкрджрдВрдбреЛрдВ (p, d, q) (P, D, Q, s) рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

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

рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рдореМрд╕рдореА рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░, рдЖрдк рдЯреНрд░реЗрдВрдб рдФрд░ рд╕реАрдЬрд╝рдирд┐рдЯреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕реАрдЬрд╝рдирд▓_рдбреЛрдордХрдкреЛрдЬрд╝ рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

import statsmodels.api as sm
sm.tsa.seasonal_decompose(df_week).plot()


рдЖрдЯреЛрдХреНрд▓реЗрд░рд░реЗрд╢рди рдФрд░ рдЖрдВрд╢рд┐рдХ рдСрдЯреЛрдХреНрд░реЙрд▓реЗрд╢рди рдХреЗ рдЧреНрд░рд╛рдл рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЙрдиреНрд╣реЛрдВрдиреЗ SARIMAX рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдиреБрдорд╛рдиреЛрдВ рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛: p = 0, P = 1, q = 2, Q = 2ред

sm.graphics.tsa.plot_acf(df_week.diff_week[52:].values.squeeze(), lags=60, ax=ax)
sm.graphics.tsa.plot_pacf(df_week.diff_week[52:].values.squeeze(), lags=60, ax=ax)


рдФрд░ рдЕрдВрддрд┐рдо рдЪрдпрдирд┐рдд рдорд╛рди рд╣реИрдВ (0, 2, 2) x (1, 2, 0, 52)ред рдирддреАрдЬрддрди, рдЦрдкрдд рдХрд╛ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдЧреНрд░рд╛рдл рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛:


рдмрдврд╝рд╛рдиреЗ


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

рдкрд╣рд▓реЗ рд╣реА рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рдореМрд╕рдо рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЦрд░реАрджрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдпрд╛рд╕ рдерд╛ Yandexред рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рдЙрддреНрдХреГрд╖реНрдЯ рдПрдкреАрдЖрдИ рдФрд░ рддрдХрдиреАрдХреА рд╕рд╣рд╛рдпрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рд╢рд╣рд░ рдореЗрдВ рдбреЗрдЯрд╛ рдореЗрдВ рдХрд╛рдлреА рдЕрдВрддрд░рд╛рд▓ рдереЗред рдирддреАрдЬрддрди, рдореИрдВрдиреЗ $ 10 рдХреЗ рд▓рд┐рдП Openweathermap.org рд╕реЗрд╡рд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣ рдЦрд░реАрджрд╛ред рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдореМрд╕рдо рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдХрд╛рд░рдХ рд╣реИ, рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдВрддрд┐рдо рдПрдордПрдкреАрдИ рдореЙрдбрд▓ рдХреЛ рдЦрд░рд╛рдм рдХрд░ рджреЗрдВрдЧреАред рдореБрдЭреЗ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓реА рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдореМрд╕рдо рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдореЗрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рддреАрди рджрд┐рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдореМрд╕рдо рдХрд╛ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди, рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХреЛрдИ рдЕрд╡рд╕рд░ рдирд╣реАрдВ рдерд╛ред 

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

рд╕реНрдХреЗрд▓рд┐рдВрдЧ (MinMaxScale) рдФрд░ рд╡рди рд╣реЙрдЯ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ (рдкреНрд░рддреНрдпреЗрдХ рд╢реНрд░реЗрдгреА рдХреЗ рдЖрдЗрдЯрдо рдХреЗ рдорд╛рди 0 рдФрд░ 1 рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЙрд▓рдо рдмрди рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рддреАрди рдорд╛рди рд╡рд╛рд▓реЗ рдЖрдЗрдЯрдо рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЙрд▓рдо рдмрди рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдпреВрдирд┐рдЯ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╣реЛрдЧреА) рддреАрди рд▓реЛрдХрдкреНрд░рд┐рдп рдмреВрд╕реНрдЯ рдореЙрдбрд▓ XGBoost, LightGBM рдФрд░ CatBoost рдХреА рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ред 

XGBoost


XGBoost рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред 2016 рдореЗрдВ SIGKDD рд╕рдореНрдореЗрд▓рди рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд, рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рджрд┐рдЦрд╛рд╡рд╛ рдХрд┐рдпрд╛ рдФрд░ рдЕрднреА рднреА рдПрдХ рдЕрдЧреНрд░рдгреА рд╕реНрдерд╛рди рд░рдЦрддрд╛ рд╣реИред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╛рдордЧреНрд░реА рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИред

рдЖрдЗрдП рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ: 

from sklearn.preprocessing import MinMaxScaler, StandardScaler
from sklearn.model_selection import train_test_split


def gen_data(
    stop_day = '2018-06-01 23:00', 
    drop_columns = [],
    test_size=0.15,
    is_dummies=True,
    is_target_scale=False):

    df = pd.read_pickle('full.pkl')
    df = df.loc[:stop_day]
    scaler = MinMaxScaler()
    target_scaler = StandardScaler()
    y = df.hour_total
    
    if is_target_scale:        
        y = target_scaler.fit_transform(y.values.reshape(-1, 1)).reshape(1,-1)[0]
        
    X = df.drop(['hour_value', *drop_columns], axis=1)
    num_columns = X.select_dtypes(include=['float64']).columns
    X[num_columns] = scaler.fit_transform(X[num_columns])
    
    if is_dummies:
        X = pd.get_dummies(X)

    train_count_hours = len(X) - 72
    valid_count_hours = len(X) - int(len(X) * 0.2)
    X_test  = X[train_count_hours:]
    y_test  = y[train_count_hours:]
    X = X[:train_count_hours]
    y = y[:train_count_hours]

    #           ,       
    X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=test_size, random_state=42)
    train_dates = X_train.index
    val_dates = X_test.index
    return X, y, X_train, X_val, y_train, y_val, X_test, y_test, target_scaler


рдореИрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЪреБрдиреЗ рдЧрдП рд╣рд╛рдЗрдкрд░рдкреИрд░рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдореЙрдбрд▓ рд╕рд┐рдЦрд╛ рд░рд╣рд╛ рд╣реВрдВ:

X, y, X_train, X_val, y_train, y_val, X_test, y_test, _ = gen_data(
    stop_day = stop_day, 
    drop_columns = drop_columns,
    test_size=0.1,
    is_dump=True,
    is_target_scale=False)


params_last = {
    'base_score': 0.5, 
    'booster': 'gbtree', 
    'colsample_bylevel': 1, 
    'colsample_bynode': 1, 
    'colsample_bytree': 0.4, 
    'gamma': 0,
    'max_depth': 2, 
    'min_child_weight': 5, 
    'reg_alpha': 0, 
    'reg_lambda': 1, 
    'seed': 38,
    'subsample': 0.7, 
    'verbosity': 1,
    'learning_rate':0.01
}


reg = xgb.XGBRegressor(**params_last, n_estimators=2000)
print(X_train.columns)
reg.fit(X_train, y_train,
        eval_set=[(X_val, y_val)],
        early_stopping_rounds=20,
        verbose=False)


y_pred = reg.predict(X_test)


Lightgbm


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

import lightgbm as lgb
from lightgbm import LGBMRegressor
from sklearn.metrics import mean_squared_error


stop_day = '2018-06-01 23:00'
start_day_for_iterate = datetime.strptime(stop_day, '%Y-%m-%d %H:%M')
test_size = 0.2

X, y, X_train, X_val, y_train, y_val, X_test, y_test, _ = gen_data(
    stop_day = stop_day, 
    drop_columns = drop_columns,
    test_size=test_size,
    is_dump=True,
    drop_weekend=False,
    is_target_scale=False)


model = LGBMRegressor(boosting_type='gbdt'
                num_leaves=83
                max_depth=-1
                learning_rate=0.008
                n_estimators=15000
                max_bin=255
                subsample_for_bin=50000
                min_split_gain=0
                min_child_weight=3,
                min_child_samples=10
                subsample=0.3
                subsample_freq=1
                colsample_bytree=0.5
                reg_alpha=0.1
                reg_lambda=0
                seed=38,
                silent=False
                nthread=-1)


history = model.fit(X_train, y_train, 
            eval_metric='rmse',
            eval_set=[(X_val, y_val)],
            early_stopping_rounds=40,
            verbose = 0)


y_pred = model.predict(X_test, num_iteration=model.best_iteration_)


Catboost


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

cat_features=np.where(X.dtypes == 'category')[0]
eval_dataset = Pool(X_test, y_test)

model = CatBoostRegressor(learning_rate=0.5,
                          eval_metric='RMSE'
                          leaf_estimation_iterations=3,
                          depth=3)

model.fit(X_train, y_train,
          eval_set=(X_val, y_val),
          cat_features=cat_features,
          plot=True,
          verbose=True)

y_pred = model.predict(X_test)


XGBoost рдмрдирд╛рдо рд▓рд╛рдЗрдЯ рдЬреАрдмреАрдПрдо рдмрдирд╛рдо Catboost


рдХрдИ рд▓реЗрдЦреЛрдВ рдХреЛ рдирд╣реАрдВ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдпрд╣рд╛рдВ рд╕реЗ рдПрдХ рддреБрд▓рдирд╛рддреНрдордХ рддрд╛рд▓рд┐рдХрд╛ рджреВрдВрдЧрд╛ ред


рдПрдордПрдкреАрдИ рддреНрд░реБрдЯрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЕрдВрддрд┐рдо рдЬреНрдЮрд╛рдд рдорд╣реАрдирд╛ (28 рджрд┐рди) рд▓рд┐рдпрд╛ рдФрд░, рдПрдХ рдШрдВрдЯреЗ рдХреЗ рд╕рдВрдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЦрд┐рдбрд╝рдХреА рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рдЕрдЧрд▓реЗ 72 рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ред

рдФрд░ рдореЗрд░реА рдЕрднрд┐рд░реБрдЪрд┐ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рдкреБрд░рд╕реНрдХрд╛рд░ рдереЗ:

3 рд╕реНрдерд╛рди: рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ - рдПрдХреНрд╕рдЬреАрдмреЛрд╕реНрдЯ - рд╕рдмрд╕реЗ рдХрдо рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд╕рд╛рде;
рджреВрд╕рд░рд╛ рд╕реНрдерд╛рди: рдХреИрдЯрдмреЙрд╕реНрдЯ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ "рд╕рднреА рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░";
рдкрд╣рд▓рд╛ рд╕реНрдерд╛рди: рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдФрд░ рд╕рдмрд╕реЗ рд╕рдЯреАрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЗрдЯ рдЬреАрдмреАрдПрдоред

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

рдореЗрдЯреНрд░рд┐рдХреНрд╕LightgbmCatboostXGBoostрдирдмреАSarimaax
r2.репрек,резрейрен.репрей,репреорек.репреи,репрежреп.реорез,рекрейрел.ренрей,ренренрео
Msle.режреи,рекремрео.режреи,рекренрен.режрез,реирезреп.режреж,реореиреп.режреж,ремрелрео

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

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

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


All Articles