L'apprentissage automatique dans la négociation : théorie, modèles, pratique et algo-trading - page 2801

 
mytarmailS #:
Comment est le livre ?
Je l'ai lu il y a 4 ans. Je ne peux plus vraiment en parler. J'ai copié une page sur mon blog car c'était nouveau pour moi et j'ai décidé de la garder en souvenir. )
 

Au fait, quelqu'un sait-il comment calculer la racine de l'indice de Gini (je comprends comment calculer la racine, mais l'indice de Gini lui-même) ? Je préférerais un exemple de code. Il serait intéressant de l'expérimenter.
Comme je l'ai noté à l'époque, "l'indice de Giniet le coefficient de Gini sont deux choses différentes - ne les confondez pas ".
Pour le coefficient de Gini, nous utilisons un GSC, c'est-à-dire que nous ajoutons du bruit. J'ai joint à l'article le code trouvé pour calculer R et PY.
Index est autre chose.

 
elibrarius #:

Au fait, quelqu'un sait-il comment calculer la racine de l'indice de Gini (je comprends comment calculer la racine, mais l'indice de Gini lui-même) ? Je préférerais un exemple de code. Il serait intéressant de l'expérimenter.
Comme je l'ai noté à l'époque, "l'indice de Giniet le coefficient de Gini sont deux choses différentes - ne les confondez pas ".
Pour le coefficient de Gini, nous utilisons un GSC, c'est-à-dire que nous ajoutons du bruit. J'ai joint à l'article le code trouvé pour calculer R et PY.
Index est autre chose.

Il y a le coefficient de Gini et l'impureté de Gini. Le premier est utilisé comme métrique dans la classification binaire, article. Le second est utilisé dans les arbres de décision comme un analogue de l'entropie.

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

Une fois, vous avez fait un script, que j'ai décidé d'utiliser à nouveau

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

Je l'ai exécuté sur un échantillon, et il donne une erreur - je ne comprends pas où chercher l'erreur et comment la corriger - peut-être le savez-vous, puisque vous utilisez ces bibliothèques/packages ?

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

Tout a bien fonctionné sur un échantillon binaire.

 
Aleksey Vyazmikin #:

Vous avez réalisé un script que j'ai décidé d'utiliser à nouveau.

Je l'ai lancé sur un échantillon, et il donne une erreur - je n'arrive pas à comprendre où se trouve l'erreur et comment la corriger - peut-être le savez-vous, puisque vous utilisez ces bibliothèques/packages ?

Tout a bien fonctionné sur un échantillon binaire.

Je n'utilise pas cette bibliothèque, je l'ai fait une fois, je pense que c'était juste pour vous.... Vous devez avoir fait quelque chose de mal dans vos nouvelles données si cela fonctionne avec les anciennes données.
 
mytarmailS #:
Je n'utilise pas cette bibliotheca, je l'ai fait une fois, je pense que c'était juste pour vous.... Vous devez avoir fait quelque chose de mal avec vos nouvelles données si cela fonctionne avec les anciennes.

Oui, pour moi. Il fonctionne avec du binaire, avant que je ne regarde, il fonctionnait principalement avec du binaire. Dommage qu'ils ne vous disent pas quelle colonne/rangée est erronée.

 
Aleksey Vyazmikin #:

Oui, pour moi. Il fonctionne en binaire, avant que je ne regarde, il fonctionnait principalement en binaire. Dommage qu'ils ne vous disent pas quelle colonne/rangée est erronée.

Vérifiez à nouveau vos données pour vous assurer qu'elles correspondent au binaire.

Si vous n'y arrivez pas, envoyez-moi un petit morceau de vos données avec lesquelles le script ne fonctionne pas, ainsi que le script lui-même et rappelez-moi ce qu'il devrait faire.
J'essaierai de vous aider...

 
mytarmailS #:
Vérifiez deux fois vos données pour vous assurer qu'elles correspondent à ces binaires....

Si vous n'y arrivez pas, envoyez-moi un petit morceau de vos données avec lesquelles le script ne fonctionne pas, ainsi que le script lui-même et rappelez-moi ce qu'il devrait faire.
J'essaierai de vous aider...

Pourquoi doivent-ils correspondre au binaire ? Je viens de dire que le script fonctionne, mais pas avec toutes les données.

J'ai coupé l'échantillon et joint le script dans une archive séparée.

Le script supprime les colonnes corrélées de l'échantillon et enregistre le nouvel échantillon.

Les colonnes sont exclues en fonction du seuil de corrélation.

Dossiers :
 
Aleksey Vyazmikin #:

Pourquoi doivent-ils correspondre au binaire ? Je viens de dire que le script fonctionne, mais pas avec toutes les données.

Je ne sais pas, peut-être que vous avez changé le séparateur ou quelque chose comme ça...
Et je ne comprends toujours pas quelle erreur le script donne.
Et pourquoi avez-vous installé les paquets sur le nouveau R et utilisé l'ancien R ?
 
Aleksey Vyazmikin #:

Voilà, j'ai dû tout réécrire, c'était un code tellement merdique que je ne comprenais pas ce qu'il faisait.

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)