Quantification de l'IA et processus d'apprentissage automatique : des données au modèle

Le 99e article original se concentre sur "la croissance personnelle et la liberté de richesse, la logique du fonctionnement mondial, l'investissement quantitatif de l'IA".

C'est le 99e article, et les 100 premiers petits objectifs originaux sont sur le point d'être terminés, ce qui est très bien.

Quel sera l'effet si vous insistez pour faire une chose pendant 1000 jours ? Attendons voir.

Les articles de ces derniers jours ont parlé de données ( hdf5 : format de stockage quantifié approprié pour les dataframes compatibles avec les pandas ), d'ingénierie des caractéristiques ( ingénierie des caractéristiques factorielles : basée sur les pandas et talib (code) ), d'évaluation à un seul facteur ( [Weekly research report ] AI Alphalens of quantitative feature engineering : un ensemble d'outils généraux pour l'analyse des facteurs alpha ), aujourd'hui je vais parler du modèle.

Combinez d'abord la modélisation financière avec le processus d'apprentissage automatique :

01 Préparation des données, ingénierie des fonctionnalités et étiquetage

def feature_engineer(df): 
    features = [] 
    for p in [1, 5, 20, 60]: 
        features.append('mom_{}'.format(p)) 
        df['mom_{}'.format(p) ] = df['close'].pct_change(p) 

    df['f_return_1'] = np.sign(df['close'].shift(-1) / df['close'] - 1) 
    features.append( 'code') 
    features.append('f_return_1') 
    print(features) 
    df = df[features] 
    return df

importer des pandas en tant que symboles pd 

= ['SPX', '000300.SH'] 
dfs = [] 
avec pd.HDFStore('data/index.h5') comme magasin : 
    pour le symbole dans les symboles : 
        df = store[symbol] 
        df[ 'fermer'] = df['fermer'] / df['fermer'].iloc[0] 
        df = feature_engineer(df) 
        dfs.append(df) 
all = pd.concat(dfs) 
# all.set_index([all .index,'code'],inplace=True) 
all.sort_index(ascending=True, level=0, inplace=True) 
all.dropna(inplace=True) 
all

Ici, nous obtenons l'ingénierie des fonctionnalités et l'ensemble de données étiquetées,

Ce processus est générique :

02 Diviser le jeu de données

import numpy as np 
import datetime 

def get_date_by_percent(start_date,end_date,percent): 
    days = (end_date - start_date).days 
    target_days = np.trunc(days * percent) 
    target_date = start_date + datetime.timedelta(days=target_days) 
    #print days , target_days,target_date 
    return target_date 

def split_dataset(df,input_column_array,label,split_ratio): 
    split_date = get_date_by_percent(df.index[0],df.index[df.shape[0]-1],split_ratio) 

    input_data = df[input_column_array ] 
    output_data = df[label] 

    # Créer des ensembles d'apprentissage et de test 
    X_train = input_data[input_data.index < split_date] 
    X_test = input_data[input_data.index >= split_date]
    Y_train = output_data[output_data.index < split_date] 
    Y_test = output_data[output_data.index >= split_date] 

    return X_train,X_test,Y_train,Y_test

03 Modèle de référence

Mettre en œuvre trois modèles de référence, à savoir la régression logistique, Sensen aléatoire et SVM.

de sklearn.ensemble import RandomForestClassifier 
de sklearn.linear_model import LogisticRegression 
de sklearn.svm import LinearSVC, SVC 

def do_logistic_regression(x_train,y_train): 
    classifier = LogisticRegression() 
    classifier.fit(x_train, y_train) 
    return classifier 


def do_random_forest(x_train,y_train) : 
    classifier = RandomForestClassifier() 
    classifier.fit(x_train, y_train) 
    return classifier 


def do_svm(x_train,y_train): 
    classifier = SVC() 
    classifier.fit(x_train, y_train)

classificateur de retour

04 essai

def test_predictor(classifier, x_test, y_test): 
    pred = classifier.predict(x_test) 

    hit_count = 0 
    total_count = len(y_test) 
    for index in range(total_count): 
        if (pred[index]) == (y_test[index]) : 
            hit_count = hit_count + 1 

    hit_ratio = hit_count / total_count 
    score = classifier.score(x_test, y_test) 
    print("hit_count=%s, total=%s, hit_ratio = %s" % (hit_count, total_count, hit_ratio)) 

    return hit_ratio , score

La quantification financière est injectée dans l'ensemble du processus d'apprentissage automatique, principalement le prétraitement des données, le calcul des facteurs, l'étiquetage automatique des données, la formation des modèles, la prédiction des modèles, etc.

 Ce processus est presque standard, et plus tard, il s'agit principalement d'ajouter des facteurs plus nombreux et meilleurs, différentes méthodes d'étiquetage, qui peuvent être catégorielles ou continues. Dans le même temps, le facteur peut également effectuer un prétraitement, un filtrage, etc.

Ensuite, il existe des modèles meilleurs et plus performants.

 

Je suppose que tu aimes

Origine blog.csdn.net/weixin_38175458/article/details/127766817
conseillé
Classement