交易中的机器学习:理论、模型、实践和算法交易 - 页 2801

 
mytarmailS #:
这本书怎么样?
我四年前读过。我真的不能再说什么了。我把其中一页复制到我的博客上,因为它对我来说很新,我决定把它留作纪念。)
 

顺便问一下,有谁知道如何计算基尼指数 的根(我知道如何 计算根,但不 知道 基尼指数 本身)?我希望能有一个代码示例。
正如我当时指出的,"基尼指数和基尼系数是两码事--不要混为一谈"。
对于基尼系数,我们使用 GSC,即添加噪音。我在文章后面附上了计算 R 和 PY 的代码。
指数是另外一回事。

 
elibrarius #:

顺便问一下,有谁知道如何计算基尼系数 的根(我知道如何 计算根,但不 知道 基尼系数 本身)?我希望能有一个代码示例。
正如我当时指出的,"基尼指数和基尼系数是两码事--不要混为一谈"。
对于基尼系数,我们使用 GSC,即添加噪音。我在文章后面附上了计算 R 和 PY 的代码。
指数是另外一回事。

有基尼系数,也有基尼杂质。前者在二元分类中用作衡量标准。第二种在决策树中用作熵的类似物。

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

有一次,您制作了一个脚本,我决定再次使用它。

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

我在一个样本 上运行了这个脚本,结果出现了一个错误--我不知道从哪里可以找到这个错误,也不知道如何解决这个问题--也许你知道,因为你使用了这些库/包?

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

在二进制样本上一切正常。

 
Aleksey Vyazmikin #:

你曾经制作过一个脚本,我决定再次使用。

我在一个样本 上运行了这个脚本,结果出现了一个错误--我不知道在哪里可以找到这个错误,也不知道如何解决这个问题--也许你知道,因为你使用了这些库/包?

在二进制样本上一切正常。

我没用过这个库,只用过一次,我想那只是为了你....。如果在旧数据上也能正常工作,那么你一定是在新数据上做错了什么。
 
mytarmailS #:
我没用过这个书目,我用过一次,我想那只是为了你....。如果你的新数据能与旧数据一起使用,那一定是你做错了什么。

是的,对我来说。它可以使用二进制数据,在我查看之前,它主要是在二进制数据上运行的。可惜他们没有告诉你哪一列/行出了问题。

 
Aleksey Vyazmikin #:

对我来说是的。它能在二进制下运行,在我查看之前,它主要是在二进制下运行。可惜他们没有告诉你哪一列/行出了问题。

仔细检查你的数据,确保与二进制数据一致。

如果你搞不清楚,请给我发一小段脚本无法使用的数据,以及脚本本身,并提醒我它应该做什么。
我会尽力提供帮助...

 
mytarmailS #:
仔细检查您的数据,确保与二进制....。

如果你还搞不清楚,请给我发一小段脚本无法使用的数据,以及脚本本身,并提醒我它应该做什么。
我会尽力提供帮助...

为什么要匹配二进制?我刚才说了,脚本可以工作,但并不适用于所有数据。

我剪切了样本,并将脚本附在一个单独的存档中。

脚本会从样本中删除相关列,并保存新样本。

列的排除取决于相关性阈值。

附加的文件:
 
Aleksey Vyazmikin #:

为什么它们必须与二进制匹配?我刚说过,脚本可以工作,但并不适用于所有数据。

我不知道,也许你改变了分隔符什么的......
我还是不明白脚本出了什么错。
你为什么要在新版 R 上安装软件包,而使用旧版 R?
 
Aleksey Vyazmikin #:

给你,我不得不重新写了一遍,因为代码太烂了,我不知道它在做什么

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)