L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 2801

 
mytarmailS #:
Com'è il libro?
L'ho letto 4 anni fa. Non posso più dire nulla al riguardo. Ho copiato una pagina sul mio blog perché era nuova per me e ho deciso di tenerla come ricordo. )
 

A proposito, qualcuno sa come calcolare la radice dell'indice di Gini (ho capito come calcolare la radice, ma l'indice di Gini stesso)? Preferirei un esempio di codice. Sarebbe interessante sperimentarlo.
Come ho notato a suo tempo, "l'indice di Ginie il coefficiente di Gini sono cose diverse - non confondetele ".
Per il coefficiente di Gini usiamo un GSC, cioè aggiungiamo del rumore. Ho allegato all'articolo il codice trovato per calcolare R e PY.
Index è un'altra cosa.

 
elibrarius #:

A proposito, qualcuno sa come calcolare la radice dell'indice di Gini (ho capito come calcolare la radice, ma l'indice di Gini in sé)? Preferirei un esempio di codice. Sarebbe interessante sperimentarlo.
Come ho notato a suo tempo "l'indice di Ginie il coefficiente di Gini sono cose diverse - non confondetele ".
Per il coefficiente di Gini usiamo un GSC, cioè aggiungiamo del rumore. Ho allegato all'articolo il codice trovato per calcolare R e PY.
Index è un'altra cosa.

C'è il coefficiente di Gini e c'è l'impurità di Gini. Il primo è utilizzato come metrica nella classificazione binaria, articolo. Il secondo è utilizzato negli alberi decisionali come analogo dell'entropia.

Коэффициент Джини. Из экономики в машинное обучение
Коэффициент Джини. Из экономики в машинное обучение
  • 2018.03.06
  • habr.com
Интересный факт: в 1912 году итальянский статистик и демограф Коррадо Джини написал знаменитый труд «Вариативность и изменчивость признака», и в этом же году «Титаник» затонул в водах Атлантики. Казалось бы, что общего между этими двумя событиями? Всё просто, их последствия нашли широкое применение в области машинного обучения. И если датасет...
 

Una volta hai fatto uno script, che ho deciso di usare di nuovo.

library('caret')

way <-         "D:\\FX\\MT5_CB\\MQL5\\Files\\Po_Vektoru_TP_0_SL_0\\EURUSD_0\\Setup"
df1 = read.csv("D:\\FX\\MT5_CB\\MQL5\\Files\\Po_Vektoru_TP_0_SL_0\\EURUSD_0\\Setup\\train.csv", header = TRUE, sep = ";",dec = ".")


cor.test.range <- seq(from = 0.1,to = 0.9,by = 0.1)  # диапазон перебора в коеф корр

get.findCorrelation <- function(data , not.used.colums , cor.coef){
  library('caret')
  df2 <-  cor(     data[, ! colnames(data)  %in%  not.used.colums])  
  not.need <- findCorrelation(df2, cutoff=cor.coef) 
  not.need.nms <- colnames(df2[,not.need])  # получаем имена переменных что не прошли коррел тест
  reduced_Data <- data[, ! colnames(data)  %in%  not.need.nms]
  return(reduced_Data)}


for(i in 1:length(cor.test.range)){
  
    reduced_Data <- get.findCorrelation(data = df1 , 
                                      not.used.colums = c("Target_100_Buy","Target_100_Sell","Target_P","Time","Target_100"),
                                      cor.coef = cor.test.range[i] )


  
  #reduced_Data <- get.findCorrelation(data = reduced_Data , 
  #                                    not.used.colums = c("Target_100_Buy","Target_100_Sell","Target_P","Time","Target_100"),
  #                                    cor.coef = cor.test.range[i]*-1 )  
    
  file.name <- paste0("train2_" , cor.test.range[i] , ".csv")
  final.way <- paste0(way , file.name)
  
  
  #write.csv2(x = reduced_Data,file = final.way,row.names = F)  # возможно это лучше
  
   write.table(reduced_Data, file = final.way,
               append = FALSE, quote = FALSE, sep=";",
               eol = "\n", na = "NA", dec = ".", row.names = FALSE,
               col.names = TRUE, qmethod = c("escape", "double"),
               fileEncoding = "")
}

L'ho eseguito su un campione e dà un errore - non riesco a capire dove cercare l'errore e come risolverlo - forse tu lo sai, visto che usi queste librerie/pacchetti?

R version 4.0.5 (2021-03-31) -- "Shake and Throw"
Copyright (C) 2021 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

[Workspace loaded from F:/FX/R/.RData]

Loading required package: Matrix
Error: package or namespace load failed for ‘Matrix’ in getClassDef(class1):
 reached elapsed time limit
> source('F:/FX/R/Viborka_Korrelyaciya_v_02.R', echo=TRUE)

> library('caret')
Загрузка требуемого пакета: lattice
Загрузка требуемого пакета: ggplot2

> #way <- "F:\\FX\\Открытие Брокер_Demo\\MQL5\\Files\\Proboy_236_TP_4_SL_4\\Si\\Setup\\"
> #df1 = read.csv("F:\\FX\\Открытие Брокер_Demo\\MQL5\\Files\ ..." ... [TRUNCATED] 

> df1 = read.csv("D:\\FX\\MT5_CB\\MQL5\\Files\\Po_Vektoru_TP_0_SL_0_G_2_Bi_v2\\EURUSD_0\\Setup\\train.csv", header = TRUE, sep = ";",dec = ".")

> cor.test.range <- seq(from = 0.1,to = 0.9,by = 0.1)  # диапазон перебора в коеф корр

> get.findCorrelation <- function(data , not.used.colums , cor.coef){
+   library('caret')
+   df2 <-  cor(     data[, ! colnames(data)  %in%  not.use .... [TRUNCATED] 

> for(i in 1:length(cor.test.range)){
+   
+     reduced_Data <- get.findCorrelation(data = df1 , 
+                                       not.used.co .... [TRUNCATED] 
Warning messages:
1: пакет ‘caret’ был собран под R версии 4.1.0 
2: пакет ‘ggplot2’ был собран под R версии 4.1.0 
> source('F:/FX/R/Viborka_Korrelyaciya_v_02.R', echo=TRUE)

> library('caret')

> #way <- "F:\\FX\\Открытие Брокер_Demo\\MQL5\\Files\\Proboy_236_TP_4_SL_4\\Si\\Setup\\"
> #df1 = read.csv("F:\\FX\\Открытие Брокер_Demo\\MQL5\\Files\ ..." ... [TRUNCATED] 

> df1 = read.csv("D:\\FX\\MT5_CB\\MQL5\\Files\\Po_Vektoru_TP_0_SL_0\\EURUSD_0\\Setup\\train.csv", header = TRUE, sep = ";",dec = ".")

> cor.test.range <- seq(from = 0.1,to = 0.9,by = 0.1)  # диапазон перебора в коеф корр

> get.findCorrelation <- function(data , not.used.colums , cor.coef){
+   library('caret')
+   df2 <-  cor(     data[, ! colnames(data)  %in%  not.use .... [TRUNCATED] 

> for(i in 1:length(cor.test.range)){
+   
+     reduced_Data <- get.findCorrelation(data = df1 , 
+                                       not.used.co .... [TRUNCATED] 
Error in findCorrelation_fast(x = x, cutoff = cutoff, verbose = verbose) : 
  The correlation matrix has some missing values.
In addition: Warning message:
In cor(data[, !colnames(data) %in% not.used.colums]) :
  стандартное отклонение нулевое

Tutto ha funzionato bene su un campione binario.

 
Aleksey Vyazmikin #:

Una volta hai realizzato uno script che ho deciso di riutilizzare.

L'ho eseguito su un campione e dà un errore - non riesco a capire dove trovare l'errore e come risolverlo - forse tu lo sai, visto che usi queste librerie/pacchetti?

Tutto ha funzionato bene su un campione binario.

Non uso questa libreria, l'ho fatto una volta, credo fosse solo per voi.... Devi aver fatto qualcosa di sbagliato nei tuoi nuovi dati se funziona con i vecchi dati.
 
mytarmailS #:
Non uso questa bibliotheca, l'ho fatto una volta, credo fosse solo per te.... Devi aver fatto qualcosa di sbagliato con i tuoi nuovi dati se funziona con i vecchi dati.

Sì, per me. Funziona con i dati binari, prima che io guardassi, funzionava per lo più con i dati binari. Peccato che non ti dicano quale colonna/riga è sbagliata.

 
Aleksey Vyazmikin #:

Sì, per me. Funziona con il formato binario, prima che lo guardassi funzionava principalmente con il formato binario. Peccato che non ti dicano quale colonna/riga è sbagliata.

Ricontrollate i vostri dati per assicurarvi che corrispondano al binario.

Se non riesci a capirlo, inviami una piccola parte dei tuoi dati con cui lo script non funziona, oltre allo script stesso e ricordami cosa dovrebbe fare.
Cercherò di aiutarti...

 
mytarmailS #:
Ricontrollate i vostri dati per assicurarvi che corrispondano a quelli binari....

Se non riuscite a risolvere il problema, inviatemi una piccola parte dei vostri dati con cui lo script non funziona, oltre allo script stesso e ricordatemi cosa dovrebbe fare.
Cercherò di aiutarti...

Perché devono corrispondere al binario? Ho appena detto che lo script funziona, ma non con tutti i dati.

Ho tagliato il campione e ho allegato lo script in un archivio separato.

Lo script rimuove le colonne correlate dal campione e salva il nuovo campione.

Le colonne vengono escluse a seconda della soglia di correlazione.

 
Aleksey Vyazmikin #:

Perché devono corrispondere al binario? Ho appena detto che lo script funziona, ma non con tutti i dati.

Non so, forse hai cambiato il separatore o qualcosa del genere...
E ancora non capisco quale errore dia lo script.
E perché hai installato i pacchetti sul nuovo R e usi il vecchio R?
 
Aleksey Vyazmikin #:

Ecco qui, ho dovuto riscrivere tutto da capo, era un codice talmente schifoso che non capivo cosa stesse facendo.

df <- read.csv(file = file.choose(), header = T,sep = ";",dec = ".",stringsAsFactors = F)


#  указываем какие колонки не использовать
not_used_vars <- c("Target_100_Buy","Target_100_Sell","Target_P","Time","Target_100")


#  сохраняем отдельно не испозуемые колонки
not_used_vars_df <- df[,not_used_vars]


#  создаем датафрейм для поиска, без колонок  not_used_vars
df <- df[!names(df) %in% not_used_vars]


#  чтобы прочитать как работает функция и примеры  ?caret::findCorrelation
#  находим колонки которые не коррелированы с порогом корреляции 0,9    "cutoff = 0.9"
not_corr_colums <- caret::findCorrelation(as.matrix(df), cutoff = 0.9, exact = F,names = F)


#  оставляем df с некоррелироваными колонками
df <- df[,not_corr_colums]


#  обьединяем все в результирующий датафрейм
df <- cbind.data.frame(not_used_vars_df , df)


#  сохраняем результат
res_save_way <- "C:\\......\\not_correl_data.csv"
write.csv2(x = df,file = res_save_way,row.names = F)