トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング - ページ 2801

 
mytarmailS #:
本はどうですか?
4年前に読みました。もう何も言えません。初めて読んだので、記念に残しておこうと思い、1ページだけブログにコピーしました。)
 

ところで、どなたかジニ 指数のルートの計算方法をご存じないでしょうか(ルートの 計算方法はわかるのですが、ジニ指数 自体は)コード例があるといいですね。
当時、「ジニ指数とジニ係数は違うもの-混同しない ように」と書いたとおりです。
ジニ 係数にはGSCを使う、つまりノイズを加える。
指数は別のものである。

 
elibrarius #:

ところで、どなたかジニ指数の 根を計算する方法をご存じないでしょうか(根の 計算方法はわかるのですが、ジニ指数 そのものがわかりません)コードの例を教えてください。
当時、「ジニ指数とジニ係数は違うものだ-混同しては いけない」と書いた。
ジニ 係数にはGSCを使う、つまりノイズを加える。
指数は別のものである。

ジニ係数とジニ不純物がある。前者は2値分類の指標として使われる もう1つは、決定木でエントロピーのアナログとして使われます。

Коэффициент Джини. Из экономики в машинное обучение
Коэффициент Джини. Из экономики в машинное обучение
  • 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)
理由: