Aprendizado de máquina no trading: teoria, prática, negociação e não só - página 2801

 
mytarmailS #:
Como está o livro?
Eu o li há 4 anos. Não posso mais dizer nada sobre ele. Copiei uma página em meu blog, pois era novo para mim e decidi que deveria guardá-la como lembrança. )
 

A propósito, alguém sabe como calcular a raiz do índice de Gini (eu sei como calcular a raiz, mas o índice de Gini em si)? Eu preferiria um exemplo de código. Seria interessante fazer experiências com ele.
Como observei na época, "o índice de Gini e o coeficiente de Gini são coisas diferentes - não os confunda".
Para o coeficiente de Gini, usamos um GSC, ou seja, adicionamos ruído. Anexei ao artigo o código encontrado para calcular R e PY.
O índice é outra coisa.

 
elibrarius #:

A propósito, alguém sabe como calcular a raiz do índice de Gini (eu sei como calcular a raiz, mas o índice de Gini em si)? Eu preferiria um exemplo do código. Seria interessante fazer experimentos com ele.
Como observei na época, "o índice de Gini e o coeficiente de Gini são coisas diferentes - não os confunda".
Para o coeficiente de Gini, usamos um GSC, ou seja, adicionamos ruído. Anexei ao artigo o código encontrado para calcular R e PY.
O índice é outra coisa.

Há o coeficiente de Gini e há o Gini Impurity. O primeiro é usado como uma métrica na classificação binária, artigo. O segundo é usado em árvores de decisão como um análogo da entropia.

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

Uma vez você criou um script, que decidi usar novamente

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 = "")
}

Executei-o em uma amostra e ele apresentou um erro - não consigo entender onde procurar o erro e como corrigi-lo - talvez você saiba, já que usa essas bibliotecas/pacotes?

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]) :
  стандартное отклонение нулевое

Tudo funcionou bem em uma amostra binária.

 
Aleksey Vyazmikin #:

Uma vez você criou um script que decidi usar novamente.

Não consigo entender onde encontrar o erro e como corrigi-lo. Talvez você saiba, já que usa essas bibliotecas/pacotes?

Tudo funcionou bem em uma amostra binária.

Não uso essa biblioteca, mas fiz isso uma vez, acho que foi só para você.... Você deve ter feito algo errado em seus novos dados se ele funciona com os dados antigos
 
mytarmailS #:
Eu não uso essa bibliotheca, mas fiz isso uma vez, acho que foi só para você.... Você deve ter feito algo errado com seus novos dados se ele funciona com os dados antigos.

Sim, para mim. Funciona com binário, antes de eu dar uma olhada, estava funcionando principalmente em binário. É uma pena que eles não informem qual coluna/linha está errada.

 
Aleksey Vyazmikin #:

Sim, para mim. Ele funciona com binário, antes de eu olhar estava funcionando principalmente em binário. É uma pena que eles não informem qual coluna/linha está errada.

Verifique novamente seus dados para ter certeza de que correspondem ao binário.

Se não conseguir descobrir, envie-me uma pequena parte de seus dados com os quais o script não funciona, bem como o próprio script, e lembre-me do que ele deveria fazer.
Tentarei ajudar...

 
mytarmailS #:
Verifique novamente seus dados para ter certeza de que correspondem a esses binários....

Se não conseguir resolver o problema, envie-me uma pequena parte dos dados com os quais o script não funciona, bem como o próprio script, e lembre-me do que ele deve fazer.
Tentarei ajudar...

Por que eles precisam corresponder ao binário? Acabei de dizer que o script funciona, mas não funciona com todos os dados.

Cortei a amostra e anexei o script em um arquivo separado.

O script remove as colunas correlacionadas da amostra e salva a nova amostra.

As colunas são excluídas dependendo do limite de correlação.

Arquivos anexados:
 
Aleksey Vyazmikin #:

Por que eles precisam corresponder ao binário? Acabei de dizer que o script funciona, mas não funciona com todos os dados.

Não sei, talvez você tenha alterado o separador ou algo assim...
E ainda não entendi qual erro o script está apresentando.
E por que você instalou os pacotes no R mais novo e usou o R antigo?
 
Aleksey Vyazmikin #:

Aqui está, tive que reescrever tudo de novo, era um código tão ruim que eu não entendia o que ele estava fazendo

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)
Razão: