트레이딩의 머신러닝: 이론, 모델, 실전 및 알고리즘 트레이딩 - 페이지 2801

 
mytarmailS #:
책은 어땠나요?
4년 전에 읽었어요. 더 이상 뭐라고 말할 수 없네요. 처음 읽은 책이라 기념으로 간직해야겠다고 생각해서 한 페이지를 제 블로그에 복사해 두었습니다. )
 

그건 그렇고, 지니 지수의 근을 계산하는 방법을 아는 사람이 있습니까 (나는 근을 계산하는 방법을 이해하지만 지니 지수 자체는 이해합니다)? 코드 예제를 선호합니다.
당시 "지니 지수와지니 계수는 다른 것이므로 혼동하지 마십시오 "라고 언급했듯이.
지니 계수의 경우 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)
사유: