public static List<Treinamento> SelecionarTreinamentos_V2(List<DadosBE> dadosBE, int janelaEntrada, int n) { if (n <= 0) n = 1; List<Treinamento> treinamentos = new List<Treinamento>(); for (int divisao = 0; divisao < numeroDivisoesCrossValidation; divisao++) { for (int i = dadosBE.Count / numeroDivisoesCrossValidation * divisao; i < dadosBE.Count / numeroDivisoesCrossValidation * (divisao + 1); i += n) { //i deve ter valor menor que o numero de elementos de dadosBE - a quantidade de elementos que serão selecionados (janelaentrada + 1[janela saida]) if (i >= dadosBE.Count - janelaEntrada) break; Treinamento treinamento = new Treinamento(); treinamento.DivisaoCrossValidation = divisao; List<DadosBE> dadosBEInput = dadosBE.Skip(i).Take(janelaEntrada).ToList(); treinamento.Input = SelecionarInput_V2(dadosBEInput); DadosBE dadoBEOutput = dadosBE.Skip(i + janelaEntrada).First(); treinamento.Output = new List<double>() { dadoBEOutput.ValorNormalizado, (double)dadoBEOutput.CotacaoDolarNormalizado }; treinamentos.Add(treinamento); } } //Comentado por enquanto //Pode não haver dados suficientes para terminar de preencher o output, gerando um output com menos dados do que o solicitado return treinamentos; //.Where(trein => trein.Output.Count == janelaSaida).ToList(); }
public static Treinamento TransformarDadoBE_Em_Treinamento_RNV5(DadosBE dadoBE, double versao) { Treinamento treinamento = new Treinamento(); treinamento.Input = new List<double>(); treinamento.Input.Add(dadoBE.ValorNormalizado); if (dicIndicesRN[versao].Contains("PercentualCrescimentoValorAtivo")) //Adiciona cada um dos percentuais dos n dias anteriores e do dia da cotação dadoBE.PercentualCrescimentoValorAtivo.ForEach(percent => treinamento.Input.Add(percent)); if (dicIndicesRN[versao].Contains("ValorBollinger")) treinamento.Input.Add(dadoBE.ValorBollinger); if (dicIndicesRN[versao].Contains("Pontuacao3MediasMoveis")) treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis); if (dicIndicesRN[versao].Contains("PercentualTotalNegociacoesMediaNDias")) treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias); if (dicIndicesRN[versao].Contains("PercentualTotalNegociacoes")) treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes); if (dicIndicesRN[versao].Contains("PercentualCrescimentoDolar")) treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar); if (dicIndicesRN[versao].Contains("PercentualCrescimentoValorAtivoMediaNDias")) treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias); if (dicIndicesRN[versao].Contains("PercentualDesviosPadroesEmRelacaoNDias")) treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias); if (dicIndicesRN[versao].Contains("DiaSemana")) treinamento.Input.Add(dadoBE.DiaSemana); if (dicIndicesRN[versao].Contains("PercentualValorAtivo_Max_Min_Med")) treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med); if (dicIndicesRN[versao].Contains("PercentualCrescimentoAtivoEm2Indices")) dadoBE.PercentualCrescimentoAtivoEm2Indices.ForEach(val => treinamento.Input.Add(val)); if (dicIndicesRN[versao].Contains("ValoresAtivoSemanaPassada")) { treinamento.Input.Add(dadoBE.ValorAtivoDMenos7); treinamento.Input.Add(dadoBE.ValorAtivoDMenos8); } if (dicIndicesRN[versao].Contains("ValoresAtivoSemanaPassada_PERCENTUAL")) treinamento.Input.Add(dadoBE.PercentualAtivoSemanaPassadaD_7_D_8); if (dicIndicesRN[versao].Contains("ValoresAtivoMesPassado")) { treinamento.Input.Add(dadoBE.ValorAtivoDMenos30); treinamento.Input.Add(dadoBE.ValorAtivoDMenos31); } if (dicIndicesRN[versao].Contains("ValoresAtivoMesPassado_PERCENTUAL")) treinamento.Input.Add(dadoBE.PercentualAtivoMesPassadoD_30_D_31); treinamento.Output = new List<double>() { dadoBE.ValorNormalizadoDiaSeguinte }; return treinamento; }
public static List<Treinamento> SelecionarTreinamentos(List<double> dados, int janelaEntrada, int janelaSaida, int n) { if (n <= 0) n = 1; List<Treinamento> treinamentos = new List<Treinamento>(); for (int divisao = 0; divisao < numeroDivisoesCrossValidation; divisao++) { for (int i = dados.Count / numeroDivisoesCrossValidation * divisao; i < dados.Count / numeroDivisoesCrossValidation * (divisao + 1); i += n) { Treinamento treinamento = new Treinamento(); treinamento.DivisaoCrossValidation = divisao; treinamento.Input = dados.Skip(i).Take(janelaEntrada).ToList(); treinamento.Output = dados.Skip(i + janelaEntrada).Take(janelaSaida).ToList(); treinamentos.Add(treinamento); } } //Pode não haver dados suficientes para terminar de preencher o output, gerando um output com menos dados do que o solicitado return treinamentos.Where(trein => trein.Output.Count == janelaSaida).ToList(); }
public static Treinamento TransformarDadoBE_Em_Treinamento_RNV3(DadosBE dadoBE, double versao) { Treinamento treinamento = new Treinamento(); treinamento.Input = new List<double>(); //Adiciona cada um dos percentuais dos n dias anteriores e do dia da cotação dadoBE.PercentualCrescimentoValorAtivo.ForEach(percent => treinamento.Input.Add(percent)); treinamento.Input.Add(dadoBE.ValorNormalizado); if (versao == 3) { treinamento.Input.Add(dadoBE.ValorBollinger); treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis); treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias); treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes); treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar); treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias); treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias); treinamento.Input.Add(dadoBE.DiaSemana); treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med); } if (versao == 3.2) { treinamento.Input.Add(dadoBE.ValorBollinger); //treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis); //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias); treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes); treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar); //treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias); treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias); //treinamento.Input.Add(dadoBE.DiaSemana); treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med); } if (versao == 3.3) { treinamento.Input.Add(dadoBE.ValorBollinger); ////treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis); ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias); //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes); //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar); ////treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias); treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias); ////treinamento.Input.Add(dadoBE.DiaSemana); treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med); } if (versao == 3.4) { treinamento.Input.Add(dadoBE.ValorBollinger); ////treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis); ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias); //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes); //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar); ////treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias); treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias); ////treinamento.Input.Add(dadoBE.DiaSemana); treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med); } if (versao == 3.5) { treinamento.Input.Add(dadoBE.ValorBollinger); ////treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis); ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias); //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes); //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar); //treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias); treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias); ////treinamento.Input.Add(dadoBE.DiaSemana); //treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med); } if (versao == 3.6) {//Apenas tiramos o ValorBollinger para ver se houve alguma diferença //treinamento.Input.Add(dadoBE.ValorBollinger); ////treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis); ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias); //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes); //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar); //treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias); treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias); ////treinamento.Input.Add(dadoBE.DiaSemana); //treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med); } if (versao == 3.7) {//Com todos os índices possíveis para previsao em cima de previsao, mas agora com 2 percentuais em relação aos dias anteriores ao invés de 4 treinamento.Input.Add(dadoBE.ValorBollinger); ////treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis); ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias); //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes); //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar); treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias); treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias); ////treinamento.Input.Add(dadoBE.DiaSemana); //treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med); } if (versao == 3.8) {//Com todos os índices possíveis para previsao em cima de previsao, mas agora com 10 percentuais em relação aos dias anteriores ao invés de 4 treinamento.Input.Add(dadoBE.ValorBollinger); ////treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis); ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias); //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes); //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar); treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias); treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias); ////treinamento.Input.Add(dadoBE.DiaSemana); //treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med); } if (versao == 3.9) { treinamento.Input.Add(dadoBE.ValorBollinger); ////treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis); ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias); //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes); //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar); treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias); //treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias); ////treinamento.Input.Add(dadoBE.DiaSemana); //treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med); } if (versao == 4.01) { treinamento.Input.Add(dadoBE.ValorBollinger); ////treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis); ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias); //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes); //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar); treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias); //treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias); ////treinamento.Input.Add(dadoBE.DiaSemana); //treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med); } if (versao == 4.02) { treinamento.Input.Add(dadoBE.ValorBollinger); treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis); ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias); //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes); //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar); //treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias); treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias); treinamento.Input.Add(dadoBE.DiaSemana); //treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med); } if (versao == 4.03) { treinamento.Input.Add(dadoBE.ValorBollinger); ////treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis); ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias); //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes); //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar); ////treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias); treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias); ////treinamento.Input.Add(dadoBE.DiaSemana); treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med); } if (versao == 4.04) { treinamento.Input.Add(dadoBE.ValorBollinger); ////treinamento.Input.Add(dadoBE.Pontuacao3MediasMoveis); ////treinamento.Input.Add(dadoBE.PercentualTotalNegociacoesMediaNDias); //treinamento.Input.Add(dadoBE.PercentualTotalNegociacoes); //treinamento.Input.Add(dadoBE.PercentualCrescimentoDolar); ////treinamento.Input.Add(dadoBE.PercentualCrescimentoValorAtivoMediaNDias); treinamento.Input.Add(dadoBE.PercentualDesviosPadroesEmRelacaoNDias); ////treinamento.Input.Add(dadoBE.DiaSemana); treinamento.Input.Add(dadoBE.PercentualValorAtivo_Max_Min_Med); treinamento.Input.Add(1);//Valor Bias } treinamento.Output = new List<double>() { dadoBE.ValorNormalizadoDiaSeguinte }; return treinamento; }