Cuantificación de IA y proceso de aprendizaje automático: de los datos al modelo

El artículo original número 99 se centra en "el crecimiento personal y la libertad de riqueza, la lógica de la operación mundial, la inversión cuantitativa de IA".

Es el artículo 99, y los primeros 100 pequeños objetivos originales están a punto de completarse, lo cual es muy bueno.

¿Cuál será el efecto si insistes en hacer una cosa durante 1000 días? Vamos a esperar y ver.

Los artículos de los últimos días han hablado sobre datos ( hdf5: formato de almacenamiento cuantificado adecuado para marcos de datos compatibles con pandas ), ingeniería de características ( ingeniería de características de factores: basada en pandas y talib (código) ), evaluación de un solo factor ( [Informe de investigación semanal ] AI Alphalens de ingeniería de características cuantitativas: un conjunto de herramientas generales para analizar factores alfa ), hoy hablaré sobre el modelo.

Primero combine el modelado financiero con el proceso de aprendizaje automático:

01 Preparación de datos, ingeniería de características y etiquetado

def feature_engineer(df): 
    características = [] 
    for p en [1, 5, 20, 60]: 
        características.append('mom_{}'.format(p)) 
        df['mom_{}'.format(p) ] = df['cerrar'].pct_change(p) 

    df['f_return_1'] = np.sign(df['cerrar'].shift(-1) / df['cerrar'] - 1) características.append 
    ( 'código') 
    características.append('f_return_1') 
    print(características) 
    df = df[características] 
    return df

importar pandas como símbolos pd 

= ['SPX', '000300.SH'] 
dfs = [] 
con pd.HDFStore('data/index.h5') como almacén: 
    para símbolo en símbolos: 
        df = almacén[símbolo] 
        df[ 'cerrar'] = df['cerrar'] / df['cerrar'].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

Aquí obtenemos la ingeniería de características y el conjunto de datos etiquetados,

Este proceso es genérico:

02 Dividir el conjunto de datos

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] 

    # Crear conjuntos de entrenamiento y prueba 
    X_train = input_data[input_data.index < split_date] 
    X_test = input_data[input_data.index >= split_date]
    Tren_Y = datos_salida[datos_salida.índice <fecha_dividida] 
    Prueba_Y = datos_salida[datos_salida.índice >= fecha_dividida] 

    return Tren_X,prueba_X,tren_Y,prueba_Y

03 Modelo base

Implemente tres modelos de referencia, a saber, regresión logística, Sensen aleatorio y SVM.

from sklearn.ensemble import RandomForestClassifier 
from sklearn.linear_model import LogisticRegression 
from 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) : 
    clasificador = RandomForestClassifier() 
    classifier.fit(x_train, y_train) 
    return clasificador 


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

clasificador de retorno

04 prueba

def test_predictor(clasificador, 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 , puntaje

La cuantificación financiera se inyecta en todo el proceso de aprendizaje automático, principalmente el preprocesamiento de datos, el cálculo de factores, el etiquetado automático de datos, el entrenamiento de modelos, la predicción de modelos, etc.

 Este proceso es casi estándar, y luego es principalmente para agregar más y mejores factores, diferentes métodos de etiquetado, que pueden ser categóricos o continuos. Al mismo tiempo, el factor también puede realizar algún preprocesamiento, filtrado y similares.

Luego hay modelos mejores y más capaces.

 

Supongo que te gusta

Origin blog.csdn.net/weixin_38175458/article/details/127766817
Recomendado
Clasificación