рдкрд╛рдпрдерди рдиреНрдпреВрдЬ рдмрд┐рдЯрдХреЙрдЗрди рдореВрд▓реНрдп рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА

OTUS рд╕реЗ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдХреЛрд░реНрд╕ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдкрд╣рд▓реЗ рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ред




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


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



рдЙрдкрд░реЛрдХреНрдд рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рдПрдХ рджреИрдирд┐рдХ рдореВрд▓реНрдп рд╕рд╛рд░рд╛рдВрд╢ рд╣реЛрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ CHANGE рдХреЙрд▓рдо рдкрд┐рдЫрд▓реЗ рджрд┐рди рдХреА рдХреАрдордд ( PRICE ) рдмрдирд╛рдо рдирдП ( OPEN ) рдХреЗ рдкреНрд░рддрд┐рд╢рдд рдХреЗ рд░реВрдк рдореЗрдВ рдореВрд▓реНрдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИ ред

рд▓рдХреНрд╖реНрдп: рдХрд╛рд░реНрдп рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рдЕрдЧрд▓реЗ рджрд┐рди рдореВрд▓реНрдп рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреА ( CHANGE> 0 ) рдпрд╛ рдЧрд┐рд░рдирд╛ ( CHANGE <0 )ред (рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ" рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред

рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ

  • рдкрд╛рдпрдерди 2.6+ рдпрд╛ 3.1+ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
  • рдкрд╛рдВрдбрд╛ , рд╕реНрдХреЗрд▓реЗрд░ рдФрд░ рдУрдкрдирдмреНрд▓реЗрдВрдбрд░ (рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ

$ pip install pandas OpenBlender scikit-learn


рдЪрд░рдг 1. рдмрд┐рдЯрдХреЙрдЗрди рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ


рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░реЗрдВ:

import OpenBlender
import pandas as pd
import json


рдЕрдм OpenBlender API рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдЦреАрдВрдЪреЗрдВ ред
рдкрд╣рд▓реЗ, рдЖрдЗрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдмрд┐рдЯрдХреЙрдЗрди рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреА рдЖрдИрдбреА рд╣реИ ):

# It only contains the id, we'll add more parameters later.
parameters = { 
 'id_dataset':'5d4c3af79516290b01c83f51'
}

рдиреЛрдЯ: рдЖрдкрдХреЛ openblender.io (рдпрд╣ рдореБрдлрд╝реНрдд рд╣реИ) рдкрд░ рдПрдХ рдЦрд╛рддрд╛ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдПрдХ рдЯреЛрдХрди рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ (рдЖрдкрдХреЛ рдпрд╣ "рдЦрд╛рддрд╛" рдЯреИрдм рдореЗрдВ рдорд┐рд▓реЗрдЧрд╛):

parameters = {     
   'token':'your_token',
   'id_dataset':'5d4c3af79516290b01c83f51'
}

рдЕрдм рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо 'df' рдореЗрдВ рдбреЗрдЯрд╛ рдбрд╛рд▓рддреЗ рд╣реИрдВ :

# This function pulls the data and orders by timestamp
def pullObservationsToDF(parameters):
    action = 'API_getObservationsFromDataset'
    df = pd.read_json(json.dumps(OpenBlender.call(action,parameters)['sample']), convert_dates=False,convert_axes=False) .sort_values('timestamp', ascending=False)
    df.reset_index(drop=True, inplace=True)
    return df
df = pullObservationsToDF(parameters)

рдФрд░ рдЙрдиреНрд╣реЗрдВ рджреЗрдЦреЗрдВ:



рдзреНрдпрд╛рди рджреЗрдВ: рдорд╛рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛рд╕реЗрдЯ рд░реЛрдЬрд╛рдирд╛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ !

рдЪрд░рдг 2. рдбреЗрдЯрд╛ рддреИрдпрд╛рд░реА


рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рд▓рдХреНрд╖реНрдп рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ " рдкрд░рд┐рд╡рд░реНрддрди " рдмрдврд╝реЗрдЧрд╛ рдпрд╛ рдШрдЯреЗрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, 'success_thr_over': 0 рдХреЛ рд▓рдХреНрд╖реНрдп рд╕реАрдорд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

parameters = {
   'token':'your_token',   
   'id_dataset':'5d4c3af79516290b01c83f51',
   'target_threshold':{'feature':'change', 'success_thr_over': 0}
}

рдпрджрд┐ рд╣рдо рдлрд┐рд░ рд╕реЗ рдПрдкреАрдЖрдИ рд╕реЗ рдбреЗрдЯрд╛ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ:

df = pullObservationsToDF(parameters)
df.head() 



рд╡рд┐рд╢реЗрд╖рддрд╛ "рдмрджрд▓реЗрдВ" рдХреЛ рдПрдХ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛ 'change_over_0' рджреНрд╡рд╛рд░рд╛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ 1 рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ "CHANGE" рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╣реИ рдФрд░ 0 рдирд╣реАрдВ рддреЛред рдпрд╣ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдЯрд╛рд░рдЧреЗрдЯ рд╣реЛрдЧрд╛ред

рдпрджрд┐ рд╣рдо "рдХрд▓" тАЛтАЛрдХреЗ рд▓рд┐рдП рдЕрд╡рд▓реЛрдХрди рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХрд▓ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗ, рддреЛ рдЪрд▓рд┐рдП рдПрдХ рдЕрд╡рдзрд┐ рдХреА рджреЗрд░реА рдХрд░рддреЗ рд╣реИрдВред

parameters = { 
   'token':'your_token',
   'id_dataset':'5d4c3af79516290b01c83f51',
   'target_threshold':{'feature':'change','success_thr_over' : 0},
   'lag_target_feature':{'feature':'change_over_0', 'periods' : 1}
}
df = pullObservationsToDF(parameters)
df.head()



рдпрд╣ рдкрд┐рдЫрд▓реЗ рджрд┐рди (рдЕрд╡рдзрд┐) рдХреЗ рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде 'change_over_0' рдХреЛ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ 'TARGET_change_over_0' рдХрд░ рджреЗрддрд╛ рд╣реИ ред

рдЖрдЗрдП рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рджреЗрдЦреЗрдВ:

target_variable = 'TARGET_change_over_0'
df = df.dropna()
df.corr()[target_variable].sort_values()



рд╡реЗ рд░реИрдЦрд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ рдФрд░ рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред

рдЪрд░рдг 3. рд╡реНрдпрд╛рдкрд╛рд░ рд╕рдорд╛рдЪрд╛рд░ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ


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



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

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рд╕рдорд╛рдЪрд╛рд░ рдХреЗ 'рд╢реАрд░реНрд╖рдХ' рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ TextVectorizer рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ :

action = 'API_createTextVectorizer'
vectorizer_parameters = {
    'token' : 'your_token',
    'name' : 'Fox Business TextVectorizer',
    'sources':[{'id_dataset' : '5d571f9e9516293a12ad4f6d',
                'features' : ['title']}],
    'ngram_range' : {'min' : 1, 'max' : 2},
    'language' : 'en',
    'remove_stop_words' : 'on',
    'min_count_limit' : 2
}

рд╣рдо рд╕рднреА рдЪрд┐рд╣реНрдиреЛрдВ рдХреЛ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреЛрдХрди рд╢рдмреНрджреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдХреНрдЯрд░ рдмрдирд╛рдпреЗрдВрдЧреЗред рдКрдкрд░, рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдХреЗрдд рджрд┐рдП:

  • рдирд╛рдо : рдЪрд▓реЛ рдЗрд╕реЗ 'рдлреЙрдХреНрд╕ рдмрд┐рдЬрдиреЗрд╕ рдЯреЗрдХреНрд╕реНрдЯрд╡реЗрдХреНрдЯрд░' рдХрд╣рддреЗ рд╣реИрдВ ;
  • рд▓рдВрдЧрд░ : рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреА рдЖрдИрдбреА рдФрд░ рдЙрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдирд╛рдо, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдореЗрдВ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЗрд╡рд▓ 'рд╢реАрд░реНрд╖рдХ' рдХреЙрд▓рдо );
  • ngram_range : рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рд╢рдмреНрджреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреА рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рд▓рдВрдмрд╛рдИ;
  • рднрд╛рд╖рд╛ : рдЕрдВрдЧреНрд░реЗрдЬреА
  • remove_stop_words : рд╕реНрд░реЛрдд рд╕реЗ рд░реЛрдХ рд╢рдмреНрджреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП;
  • min_count_limit : рджреЛрд╣рд░рд╛рд╡ рдХреА рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рд╕реЗ рдЯреЛрдХрди рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдПрдХрд▓ рдШрдЯрдирд╛рдПрдВ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЙрдкрдпреЛрдЧреА рд╣реЛрддреА рд╣реИрдВ)ред

рдЕрдм рдЗрд╕реЗ рдЪрд▓рд╛рдПрдВ:

res = OpenBlender.call(action, vectorizer_parameters)
res


рдЙрддреНрддрд░:

{  
    'message' : 'TextVectorizer created successfully.'
    'id_textVectorizer' : '5dc1a404951629331f6359dd',
    'num_ngrams': 4270
}

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

5dc1a404951629331f6359dd

рдЪрд░рдг 4. рдмрд┐рдЯрдХреЙрдЗрди рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╕рдорд╛рдЪрд╛рд░ рд╕рд╛рд░рд╛рдВрд╢


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

parameters = { 
   'token':'your_token',  
   'id_dataset':'5d4c3af79516290b01c83f51',
   'target_threshold' : {'feature':'change','success_thr_over':0},
   'lag_target_feature' : {'feature':'change_over_0', 'periods':1},
   'blends':[{'id_blend':'5dc1a404951629331f6359dd',
               'blend_type' : 'text_ts',
               'restriction' : 'predictive', 
               'specifications':{'time_interval_size' : 3600*12 }}]
}

рдКрдкрд░, рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдХреЗрдд рджрд┐рдП:

  • id_blend : рд╣рдорд╛рд░реЗ textVectorizer рдХреА рдЖрдИрдбреА;
  • рдмреНрд▓реЗрдВрдб_рдЯрд╛рдЗрдк : 'text_ts' рддрд╛рдХрд┐ рдкрд╛рдпрдерди рдпрд╣ рд╕рдордЭ рд╕рдХреЗ рдХрд┐ рдпрд╣ рдЯреЗрдХреНрд╕реНрдЯ рдФрд░ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХрд╛ рдорд┐рд╢реНрд░рдг рд╣реИ;
  • рдкреНрд░рддрд┐рдмрдВрдз : 'рдкреНрд░реЗрдбрд┐рдХреНрдЯрд┐рд╡' , рддрд╛рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдЪрд╛рд░ рдХрд╛ "рдорд┐рд╢реНрд░рдг" рди рд╣реЛ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЬреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдП рдЧрдП рдереЗред
  • рдорд┐рд╢реНрд░рдг_рдХреНрд▓рд╛рд╕ : 'рдирд┐рдХрдЯрддрдо_рд╕рдВрд░рдХреНрд╖рдг' , рддрд╛рдХрд┐ рдХреЗрд╡рд▓ рдирд┐рдХрдЯрддрдо рдЕрд╡рд▓реЛрдХрди "рдорд┐рд╢реНрд░рд┐рдд" рд╣реЛрдВ;
  • рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ : рдЕрд╡рд▓реЛрдХрди рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдмреАрддрд╛ рд╕рдордп рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрднрд╡ рд░рд╛рд╢рд┐, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ 12 рдШрдВрдЯреЗ (3600 * 12)ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкрд┐рдЫрд▓реЗ 12 рдШрдВрдЯреЛрдВ рдХреА рдЦрдмрд░реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрд┐рдЯрдХреЙрдЗрди рдХреА рдХреАрдордд рдХреЗ рд╣рд░ рдЕрд╡рд▓реЛрдХрди рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА рдЬрд╛рдПрдЧреАред

рдЕрдВрдд рдореЗрдВ, рд╣рдо рд╕рд┐рд░реНрдл 20 рдЕрдЧрд╕реНрдд рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рддрд╛рд░реАрдЦ 'рддрд╛рд░реАрдЦ_рдлрд┐рд▓реНрдЯрд░' рдХреА рддрд╛рд░реАрдЦ рддрдХ рдПрдХ рдлрд┐рд▓реНрдЯрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ , рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдлреЙрдХреНрд╕ рдиреНрдпреВрдЬ рдиреЗ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ 'drop_non_numeric' рддрд╛рдХрд┐ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдирдВрдмрд░ рдорд┐рд▓реЗрдВ :

parameters = { 
   'token':'your_token',
   'id_dataset':'5d4c3af79516290b01c83f51',
   'target_threshold' : {'feature':'change','success_thr_over':0},
   'lag_target_feature' : {'feature':'change_over_0', 'periods':1},
   'blends':[{'id_blend':'5dc1a404951629331f6359dd',
               'blend_type' : 'text_ts',
               'restriction' : 'predictive',
               'blend_class' : 'closest_observation', 
               'specifications':{'time_interval_size' : 3600*12 }}],
   'date_filter':{'start_date':'2019-08-20T16:59:35.825Z',
                   'end_date':'2019-11-04T17:59:35.825Z'},
   'drop_non_numeric' : 1
}

рдиреЛрдЯ : рдореИрдВрдиреЗ 4 рдирд╡рдВрдмрд░ рдХреЛ 'end_date' рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЬрд┐рд╕ рджрд┐рди рдореИрдВрдиреЗ рдпрд╣ рдХреЛрдб рд▓рд┐рдЦрд╛ рдерд╛, рдЖрдк рддрд╛рд░реАрдЦ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдЪрд▓реЛ рдлрд┐рд░ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

df = pullObservationsToDF(parameters)
print(df.shape)
df.head()

(рел



Now , реирезрезрел) рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЯреЛрдХрди рдФрд░ рел) рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде реирежрежреж рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрдХреЗрдд рд╣реИрдВред

рдЪрд░рдг 5. рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рд▓рдХреНрд╖реНрдп рдХреЗ рд▓рд┐рдП рдПрдордПрд▓ рд▓рд╛рдЧреВ рдХрд░реЗрдВ


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

рдЖрдЗрдП Target Target_change_over_0 тАЩрдХреЗ рд╕рд╛рде рдЙрдЪреНрдЪрддрдо рд╕рд╣рд╕рдВрдмрдВрдзреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ :



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

X = df.loc[:, df.columns != target_variable].values
y = df.loc[:,[target_variable]].values
div = int(round(len(X) * 0.29))
# We take the first observations as test and the last as train because the dataset is ordered by timestamp descending.
X_test = X[:div]
y_test = y[:div]
print(X_test.shape)
print(y_test.shape)
X_train = X[div:]
y_train = y[div:]
print(X_train.shape)
print(y_train.shape)



рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП 40 рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП 17 рдЕрд╡рд▓реЛрдХрди рд╣реИрдВред
рдЕрдм рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ:

from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
from sklearn.metrics import accuracy_score
from sklearn.metrics import roc_auc_score
from sklearn import metrics

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

rf = RandomForestRegressor(n_estimators = 1000)
rf.fit(X_train, y_train)
y_pred = rf.predict(X_test)

рдЪреАрдЬреЛрдВ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд▓реЛ рдбреЗрдЯрд╛рдлрд╝реНрд░реЗрдо рдореЗрдВ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдФрд░ y_test рдбрд╛рд▓рддреЗ рд╣реИрдВ:

df_res = pd.DataFrame({'y_test':y_test[:,0], 'y_pred':y_pred})
df_res.head()

рд╣рдорд╛рд░реА рдЕрд╕рд▓реА 'y_test' рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ рдирд╛рд╡ , рддреЛ рдЙрдиреНрд╣реЗрдВ рджреМрд░, рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рд╣реИ рдХрд┐ рд╡реЗ 0.5 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдЕрд░реНрде рдХреАрдордд рдореЗрдВ рд╡реГрджреНрдзрд┐, рдФрд░ рдЕрдЧрд░ рдХрдо рд╕реЗ рдХрдо 0.5 - рдХрдореАред

threshold = 0.5
preds = [1 if val > threshold else 0 for val in df_res['y_pred']]

рдЕрдм, рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ AUC, рддреНрд░реБрдЯрд┐ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рд╕рдЯреАрдХрддрд╛ рд╕рдВрдХреЗрддрдХ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ:

print(roc_auc_score(preds, df_res['y_test']))
print(metrics.confusion_matrix(preds, df_res['y_test']))
print(accuracy_score(preds, df_res['y_test']))



рд╣рдореЗрдВ 0.65 рдПрдпреВрд╕реА рдХреЗ рд╕рд╛рде 64.7% рд╕рд╣реА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдорд┐рд▓реАред

  • 9 рдмрд╛рд░ рд╣рдордиреЗ рдЧрд┐рд░рд╛рд╡рдЯ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА, рдФрд░ рдХреАрдордд рдШрдЯ рдЧрдИ (рджрд╛рдПрдВ);
  • 5 рдмрд╛рд░ рд╣рдордиреЗ рдХрдореА рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА, рдФрд░ рдореВрд▓реНрдп рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реБрдИ (рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ);
  • 1 рдмрд╛рд░ рд╣рдордиреЗ рд╡реГрджреНрдзрд┐ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА, рд▓реЗрдХрд┐рди рдХреАрдордд рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдШрдЯ рдЧрдИ);
  • 2 рдмрд╛рд░ рд╣рдордиреЗ рд╡реГрджреНрдзрд┐ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА, рдФрд░ рдХреАрдордд рдмрдврд╝ рдЧрдИ (рд╕рдЪ)ред

рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВ ред

All Articles