Ошибка KNN в `[.default` (xj, i): недопустимый индекс типа 'list' - PullRequest
0 голосов
/ 04 мая 2020

Я имею дело с базой данных, содержащей акции трех разных компаний и столбец, состоящий из 1 и 0, который указывает, идет ли цена акций первой компании вверх или вниз. Я пытаюсь использовать KNN для прогнозирования направления движения цены, но когда я с этим справляюсь, я получаю [.default (xj, i): недопустимый индекс типа 'list', может ли кто-нибудь мне помочь?

dput(head(df,10))
structure(list(ENEL = structure(c(38L, 2L, 7L, 6L, 27L, 4L, 3L, 
14L, 5L, 21L), .Label = c("3,398", "3,442", "3,446", "3,46", 
"3,476", "3,486", "3,492", "3,494", "3,498", "3,526", "3,536", 
"3,538", "3,54", "3,544", "3,546", "3,586", "3,6", "3,604", "3,608", 
"3,616", "3,618", "3,62", "3,628", "3,634", "3,638", "3,64", 
"3,644", "3,646", "3,648", "3,65", "3,652", "3,658", "3,66", 
"3,662", "3,67", "3,672", "3,676", "3,68", "3,684", "3,702", 
"3,704", "3,708", "3,714", "3,716", "3,72", "3,728", "3,73", 
"3,734", "3,736", "3,738", "3,74", "3,742", "3,744", "3,746", 
"3,75", "3,754", "3,756", "3,758", "3,76", "3,762", "3,764", 
"3,768", "3,772", "3,776", "3,778", "3,78", "3,786", "3,788", 
"3,79", "3,794", "3,802", "3,806", "3,808", "3,814", "3,818", 
"3,82", "3,822", "3,824", "3,826", "3,828", "3,83", "3,834", 
"3,836", "3,838", "3,84", "3,842", "3,844", "3,846", "3,85", 
"3,852", "3,856", "3,858", "3,864", "3,866", "3,868", "3,87", 
"3,876", "3,878", "3,88", "3,882", "3,884", "3,888", "3,89", 
"3,892", "3,896", "3,898", "3,9", "3,902", "3,904", "3,906", 
"3,908", "3,91", "3,912", "3,914", "3,916", "3,918", "3,92", 
"3,922", "3,924", "3,926", "3,928", "3,93", "3,934", "3,936", 
"3,938", "3,94", "3,942", "3,944", "3,946", "3,95", "3,952", 
"3,954", "3,956", "3,958", "3,96", "3,962", "3,966", "3,968", 
"3,97", "3,972", "3,974", "3,976", "3,978", "3,98", "3,982", 
"3,984", "3,986", "3,988", "3,99", "3,992", "3,994", "3,996", 
"4", "4,002", "4,004", "4,006", "4,008", "4,012", "4,014", "4,016", 
"4,018", "4,02", "4,022", "4,024", "4,026", "4,028", "4,03", 
"4,034", "4,036", "4,038", "4,04", "4,042", "4,044", "4,046", 
"4,048", "4,05", "4,052", "4,054", "4,056", "4,058", "4,06", 
"4,062", "4,064", "4,066", "4,068", "4,072", "4,074", "4,076", 
"4,078", "4,08", "4,082", "4,084", "4,086", "4,088", "4,09", 
"4,094", "4,098", "4,1", "4,102", "4,104", "4,106", "4,108", 
"4,11", "4,112", "4,114", "4,116", "4,118", "4,12", "4,122", 
"4,124", "4,126", "4,128", "4,13", "4,134", "4,136", "4,14", 
"4,142", "4,144", "4,148", "4,15", "4,154", "4,156", "4,158", 
"4,16", "4,162", "4,166", "4,172", "4,174", "4,178", "4,188", 
"4,19", "4,194", "4,196", "4,202", "4,204", "4,206", "4,21", 
"4,212", "4,214", "4,216", "4,222", "4,224", "4,226", "4,23", 
"4,234", "4,236", "4,24", "4,248", "4,252", "4,256", "4,26", 
"4,264", "4,266", "4,268", "4,27", "4,276", "4,282", "4,284", 
"4,286", "4,292", "4,296", "4,298", "4,306", "4,31", "4,324", 
"4,33", "4,334", "4,338", "4,34", "4,342", "4,348", "4,35", "4,352", 
"4,354", "4,358", "4,36", "4,362", "4,364", "4,372", "4,376", 
"4,378", "4,386", "4,39", "4,396", "4,4", "4,404", "4,406", "4,41", 
"4,414", "4,418", "4,438", "4,446", "4,456", "4,464"), class = "factor"), 
    A2a = structure(c(15L, 5L, 2L, 1L, 13L, 6L, 4L, 7L, 3L, 8L
    ), .Label = c("0,791", "0,796", "0,801", "0,806", "0,808", 
    "0,81", "0,812", "0,814", "0,821", "0,822", "0,825", "0,826", 
    "0,827", "0,833", "0,836", "0,839", "0,84", "0,841", "0,842", 
    "0,843", "0,844", "0,847", "0,849", "0,851", "0,853", "0,856", 
    "0,857", "0,858", "0,893", "0,894", "0,897", "0,904", "0,905", 
    "0,908", "0,915", "0,918", "0,932", "0,94", "0,948", "0,953", 
    "0,955", "0,956", "0,96", "0,963", "0,965", "0,967", "0,968", 
    "0,969", "0,972", "0,977", "0,979", "0,982", "0,985", "0,988", 
    "0,989", "0,999", "1,003", "1,013", "1,014", "1,017", "1,02", 
    "1,021", "1,025", "1,029", "1,031", "1,032", "1,033", "1,034", 
    "1,036", "1,038", "1,042", "1,043", "1,045", "1,047", "1,05", 
    "1,051", "1,053", "1,055", "1,057", "1,058", "1,06", "1,062", 
    "1,063", "1,065", "1,066", "1,067", "1,068", "1,069", "1,07", 
    "1,071", "1,072", "1,073", "1,075", "1,076", "1,077", "1,078", 
    "1,079", "1,08", "1,081", "1,083", "1,085", "1,086", "1,089", 
    "1,09", "1,091", "1,092", "1,093", "1,094", "1,096", "1,097", 
    "1,098", "1,099", "1,1", "1,101", "1,102", "1,103", "1,104", 
    "1,105", "1,106", "1,107", "1,108", "1,109", "1,11", "1,112", 
    "1,113", "1,114", "1,115", "1,116", "1,118", "1,12", "1,121", 
    "1,123", "1,124", "1,125", "1,126", "1,127", "1,128", "1,129", 
    "1,13", "1,133", "1,134", "1,136", "1,138", "1,14", "1,141", 
    "1,142", "1,143", "1,145", "1,146", "1,147", "1,15", "1,151", 
    "1,152", "1,153", "1,155", "1,156", "1,157", "1,158", "1,159", 
    "1,16", "1,162", "1,164", "1,165", "1,166", "1,167", "1,169", 
    "1,17", "1,171", "1,173", "1,174", "1,175", "1,176", "1,177", 
    "1,178", "1,18", "1,181", "1,182", "1,183", "1,184", "1,185", 
    "1,188", "1,189", "1,19", "1,191", "1,192", "1,194", "1,195", 
    "1,197", "1,198", "1,199", "1,2", "1,202", "1,203", "1,204", 
    "1,205", "1,206", "1,207", "1,208", "1,209", "1,21", "1,211", 
    "1,212", "1,213", "1,214", "1,215", "1,216", "1,217", "1,219", 
    "1,22", "1,221", "1,222", "1,224", "1,226", "1,227", "1,228", 
    "1,229", "1,23", "1,231", "1,232", "1,233", "1,234", "1,235", 
    "1,236", "1,237", "1,238", "1,239", "1,24", "1,241", "1,242", 
    "1,243", "1,244", "1,246", "1,247", "1,249", "1,25", "1,251", 
    "1,252", "1,253", "1,254", "1,255", "1,256", "1,257", "1,26", 
    "1,262", "1,263", "1,266", "1,267", "1,269", "1,27", "1,271", 
    "1,272", "1,274", "1,277", "1,278", "1,279", "1,281", "1,282", 
    "1,287", "1,291", "1,293", "1,3", "1,308", "1,31", "1,316", 
    "1,319", "1,321", "1,326", "1,329", "1,33", "1,336", "1,338", 
    "1,352"), class = "factor"), EDNn = structure(c(275L, 261L, 
    261L, 252L, 261L, 245L, 247L, 256L, 245L, 251L), .Label = c("0,6045", 
    "0,606", "0,611", "0,6145", "0,615", "0,6155", "0,6175", 
    "0,6195", "0,62", "0,6215", "0,622", "0,623", "0,6235", "0,624", 
    "0,6245", "0,625", "0,626", "0,6265", "0,627", "0,6275", 
    "0,628", "0,6295", "0,63", "0,631", "0,6315", "0,632", "0,633", 
    "0,634", "0,635", "0,6355", "0,636", "0,6365", "0,637", "0,638", 
    "0,64", "0,641", "0,6415", "0,6435", "0,644", "0,6445", "0,645", 
    "0,646", "0,6475", "0,6485", "0,649", "0,6495", "0,65", "0,651", 
    "0,6535", "0,655", "0,6555", "0,656", "0,6565", "0,658", 
    "0,6585", "0,659", "0,66", "0,6605", "0,661", "0,663", "0,6635", 
    "0,664", "0,6645", "0,665", "0,6655", "0,667", "0,6675", 
    "0,6685", "0,6695", "0,67", "0,671", "0,672", "0,6725", "0,673", 
    "0,6735", "0,674", "0,6745", "0,675", "0,6755", "0,676", 
    "0,677", "0,678", "0,6785", "0,679", "0,6795", "0,68", "0,681", 
    "0,682", "0,6835", "0,684", "0,685", "0,686", "0,6865", "0,687", 
    "0,6875", "0,688", "0,689", "0,6895", "0,69", "0,6905", "0,691", 
    "0,6925", "0,6935", "0,694", "0,695", "0,696", "0,6965", 
    "0,697", "0,6985", "0,699", "0,7", "0,7005", "0,701", "0,702", 
    "0,703", "0,704", "0,7045", "0,705", "0,7055", "0,706", "0,7065", 
    "0,707", "0,708", "0,7085", "0,71", "0,711", "0,712", "0,7125", 
    "0,713", "0,714", "0,7145", "0,715", "0,716", "0,7165", "0,717", 
    "0,7175", "0,719", "0,7195", "0,72", "0,7205", "0,7215", 
    "0,722", "0,7225", "0,723", "0,7235", "0,724", "0,7245", 
    "0,725", "0,7255", "0,726", "0,7265", "0,727", "0,728", "0,7285", 
    "0,7295", "0,73", "0,7305", "0,731", "0,7315", "0,732", "0,7325", 
    "0,733", "0,7335", "0,734", "0,735", "0,736", "0,737", "0,739", 
    "0,7395", "0,74", "0,7405", "0,741", "0,7415", "0,742", "0,7425", 
    "0,743", "0,744", "0,7445", "0,745", "0,7455", "0,746", "0,7465", 
    "0,747", "0,748", "0,7495", "0,75", "0,7505", "0,751", "0,752", 
    "0,7525", "0,7535", "0,754", "0,7545", "0,755", "0,756", 
    "0,7575", "0,758", "0,76", "0,7605", "0,761", "0,7625", "0,7635", 
    "0,764", "0,7645", "0,765", "0,7675", "0,7685", "0,769", 
    "0,77", "0,7705", "0,771", "0,772", "0,774", "0,7755", "0,776", 
    "0,7775", "0,7785", "0,78", "0,782", "0,7825", "0,784", "0,7855", 
    "0,7895", "0,79", "0,792", "0,7955", "0,798", "0,8", "0,802", 
    "0,808", "0,809", "0,81", "0,818", "0,8195", "0,821", "0,825", 
    "0,831", "0,8315", "0,833", "0,835", "0,8365", "0,837", "0,839", 
    "0,8395", "0,84", "0,8415", "0,842", "0,843", "0,8435", "0,844", 
    "0,8445", "0,845", "0,8455", "0,846", "0,8465", "0,847", 
    "0,848", "0,8485", "0,849", "0,8495", "0,85", "0,8505", "0,851", 
    "0,852", "0,853", "0,8545", "0,855", "0,856", "0,8565", "0,857", 
    "0,8575", "0,858", "0,859", "0,8595", "0,86", "0,862", "0,8705"
    ), class = "factor"), Aumento = c(0L, 0L, 1L, 0L, 1L, 0L, 
    0L, 1L, 0L, 1L)), row.names = c("02/01/2015", "05/01/2015", 
"06/01/2015", "07/01/2015", "08/01/2015", "09/01/2015", "12/01/2015", 
"13/01/2015", "14/01/2015", "15/01/2015"), class = "data.frame")

    df <-  structure(list(ENEL = structure(c(38L, 2L), .Label = c("3,398", "3,442", "3,446", "3,46", "3,476"), class = "factor"), A2a = structure(c(15L, 5L), .Label = c("0,791", "0,796", "0,801", "0,806", "0,808"), class = "factor"), EDNn = structure(c(275L, 261L), .Label = c("0,6045", "0,606", "0,611", "0,6145", "0,615"), class = "factor"), Aumento = c(0L, 0L)), row.names = c("02/01/2015", "05/01/2015"), class = "data.frame")



train<-df[1:(0.75*nrow(df)),]

test<-df[(0.75*nrow(df)+1):(nrow(df)+1),]

predictors<-cbind.data.frame(Enel = lag(df$ENEL),A2a = lag(df$A2a),Edn =lag(df$EDNn)) 
#I use edit to put a value inside the first cell which otherwise will be NA
predictors<-edit(predictors)


prediction <- knn(predictors[train,],predictors[test,], df$increase[train],k = 1)
...