Ticarette makine öğrenimi: teori, pratik, ticaret ve daha fazlası - sayfa 267

 
mytarmailS :

Peki, sonunda " Y " ye NA eklemek yerine ve sonra NA'sını silersem, SomeData'daki son satırı alıp silersem, aynı olmaz mı?

Farkı gerçekten anlamıyorum, belki de zaten tamamen ısınmıştır ((

Kesinlikle aynı. Sadece yapmıyorum ve çözümünüzü anlamıyorum.
 
mytarmailS :
Yazık değil ama nasıl oluyor bilmiyorum sadece olmuyor zaten kaç kere denedim sen kendi yönteminle dene hangi hedefi tuttum sen bilirsin nasıl yaptığını yazarsın O
Her şeyi herhangi bir paketleyici ile paketlersiniz ve dosyayı eklersiniz
 
San Sanych Fomenko :
Her şeyi herhangi bir paketleyici ile paketlersiniz ve dosyayı eklersiniz

Evet defalarca denedim olmuyor olmuyor forumdan atıyorum o kadar...

Kodlarımı al, her şeyi gönderdim, ilk kod özelliklerin oluşturulması, ikinci modelin eğitimi, tam olarak aynı şeyi yapacaksın, yap ve ne olduğunu göster

 
mytarmailS :

Evet defalarca denedim olmuyor olmuyor forumdan atıyorum o kadar...

Kodlarımı al, her şeyi gönderdim, ilk kod özelliklerin oluşturulması, ikinci modelin eğitimi, tam olarak aynı şeyi yapacaksın, yap ve ne olduğunu göster

TAMAM. Bırak olsun. benimkini deneyeceğim Yarın
 
mytarmailS :

farklılaşma sırasında, seri bir eleman tarafından kısaldığından, kayma otomatik olarak gider, o zaman gereken tek şey numuneyi (gözlemleri içeren tablo) son eleman kadar kısaltmaktır.

Koddaki iki şey hakkında endişeliyim:

1) ohlc tahmin için kullanıldığından, en son çubuk tahminler için kullanılamaz, çünkü çubuğun başında bir tahmin yapacağız ve hlc tüm çubuğun ömrü boyunca değişecektir. Tam olarak oluşturulmuş bir son çubuk kullanarak modeli eğittiğimiz ve ardından gerçek hayatta biçimlendirilmemiş bir çubuk kullanarak tahminde bulunduğumuz ortaya çıktı. Bu mümkün değil, hedef 1 değil 2 çubuk kaydırılmalıdır.
Yüksek, düşük ve kapanışı göz ardı ederek tahmin için yalnızca açık fiyatları kullanırsanız, hedefin 1 çubuk kayması kabul edilebilir.

2) Sizde amaç için Aç yerine Kapat kullanılmaktadır. Bir tür strateji için önemli mi, yoksa aynen böyle mi alınır? Sonuçta, genellikle bir çubuğun başında bir ticarete gireriz ve ardından bir sonraki yeni çubukta ya döneriz ya da ayrılırız ya da çıkarız. Ve eğitilmiş model için, mevcut açılıştan sonraki açılışa kadar fiyat artışını tahmin etmek önemlidir.
Mevcut barın kapanması mutlaka bir sonrakinin açılmasıyla örtüşmez yani yakınlaşmayı hedef olarak almak ilk hatadan kurtulmuş olsanız bile karşılığında yanlış kazançlar almış olabilirsiniz. Şimdi baktım, fiyat tablosundaki kapanış genellikle bir sonraki çubuğun Açık'ı ile eşleşmiyor, bu yüzden hedef değerleriniz çok şüpheli.

Şamdan yeniden çizilirse, bunun üzerinde çalışmanız gerekir.
Kayan bir pencere alıyoruz, ilk yüz çubuk (100 sadece rastgele bir sayıdır, kodunuz için minimum çubuk sayısı = 23 ve daha azsa şamdan hata verir), gösterge değerlerini bulun, yalnızca en sonuncusu, ilgili hedefi bulun, tüm bunları nihai tabloya ekleyin. Pencereyi 1 çubuk ileri alın, tekrarlayın. Bütün bunlar, hepsini bir kerede alıp hepsini bir kerede hesaplamaktan onlarca kat daha yavaştır, ancak bu şekilde daha güvenilirdir. Ardından her iki sonucu karşılaştırabilir ve yeniden çizim olup olmadığına karar verebilirsiniz.

Sürgülü pencerenin boyutunu değiştirmek ve sonuçların değişip değişmediğini görmek de güzel olurdu. Değişirlerse, gösterge yenilerini hesaplamak için kendi önceki değerlerini kullanır, bu durumda pencerenin genişliği göstergenin kendi içinde üstel bir dönem gibi çalışacaktır. Sonuç değişirse, sonuçların değişmesi durana kadar pencerenin genişliği artırılmalıdır. Göstergenin içinde, kullanılan çubuk sayısında bazı dahili sınırlamalar olabilir, örneğin, mt5'teki bir zikzak bu değere sahiptir = 100 çubuk, yani yüzden fazla pencere genişliği sonucu hiçbir şekilde etkilemez .

Başlamak için, bir eğitim/test tablosu oluşturmak için bu kodu deneyin. Tablonuzdaki sonuçlarla karşılaştırın, her şey% 100 eşleşirse, yenilerini belirlemek için yeniden çizme ve önceki değerleri kullanma yoktur ve şamdan güvenilir olabilir
Ardından, göstergeDepth'i artırmaya çalışın - sürgülü pencerenin genişliği, bunun sonucu değiştirip değiştirmeyeceğine ve daha da büyük bir artış sonucu etkilemediğinde böyle bir göstergeDepth değeri bulmanın mümkün olup olmadığına bakın.

if (!require(quantmod)){ install.packages( "quantmod" , dependencies = TRUE); library(quantmod) }
if (!require(rusquant)){ install.packages( "rusquant" , repos= "http://r-forge.r-project.org" , dependencies = TRUE); library(rusquant) }
if (!require(candlesticks)){ install.packages( "candlesticks" , repos= "http://r-forge.r-project.org" , dependencies = TRUE); library(candlesticks) }


tryCatch({
  load( "SPFB.RTS.rdata" )
}, error = function(e){
  getSymbols( "SPFB.RTS" , src = "Finam" , period= "5min" , from = Sys.Date()- 500 )
  save(SPFB.RTS, finam.stock.list, file = "SPFB.RTS.rdata" )
  SPFB.RTS <<- SPFB.RTS
  finam.stock.list <<- finam.stock.list
})

chart_Series(tail(SPFB.RTS, 100 ))


indicatorDepth <- 23

tryCatch({
  load( "trainData.rdata" )
}, error=function(e){
  trainData <<- matrix(NA, ncol= 60 , nrow = nrow(SPFB.RTS)- 2 )
   for (i in (indicatorDepth+ 1 ):(nrow(SPFB.RTS)- 2 )){
    X1  <- as .numeric(tail(CandleBodyLength(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X2  <- as .numeric(tail(CandleLength(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X3  <- as .numeric(tail(CSPDarkCloudCover(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X4  <- as .numeric(tail(CSPDoji(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X5  <- as .numeric(tail(CSPEngulfing(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X6  <- as .numeric(tail(CSPGap(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X7  <- as .numeric(tail(CSPHammer(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X8  <- as .numeric(tail(CSPHarami(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X9  <- as .numeric(tail(CSPInsideDay(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X10 <- as .numeric(tail(CSPInvertedHammer(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X11 <- as .numeric(tail(CSPKicking(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X12 <- as .numeric(tail(CSPLongCandle(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X13 <- as .numeric(tail(CSPLongCandleBody(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X14 <- as .numeric(tail(CSPMarubozu(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X15 <- as .numeric(tail(CSPNHigherClose(SPFB.RTS[max( 1 , i-indicatorDepth):i,],N = 3 ), 1 ))
    X16 <- as .numeric(tail(CSPNLowerClose(SPFB.RTS[max( 1 , i-indicatorDepth):i,],N = 3 ), 1 ))
    X17 <- as .numeric(tail(CSPOutsideDay(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X18 <- as .numeric(tail(CSPPiercingPattern(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X19 <- as .numeric(tail(CSPShortCandle(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X20 <- as .numeric(tail(CSPShortCandleBody(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X21 <- as .numeric(tail(CSPStar(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X22 <- as .numeric(tail(CSPStomach(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X23 <- as .numeric(tail(CSPTasukiGap(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X24 <- as .numeric(tail(CSPThreeInside(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X25 <- as .numeric(tail(CSPThreeMethods(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X26 <- as .numeric(tail(CSPThreeOutside(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X27 <- as .numeric(head(tail(nextCandlePosition(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 2 ), 1 ))
    X28 <- as .numeric(tail(TrendDetectionChannel(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    X29 <- as .numeric(tail(TrendDetectionSMA(SPFB.RTS[max( 1 , i-indicatorDepth):i,]), 1 ))
    target <- as .numeric(SPFB.RTS[i+ 2 , "SPFB.RTS.Open" ]) - as .numeric(SPFB.RTS[i+ 1 , "SPFB.RTS.Open" ])
    trainData[i,] <<- c(X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12,X13,X14,X15,X16,X17,X18,X19,X20,X21,X22,X23,X24,X25,X26,X27,X28,X29,target)
    cat(i, "/" , nrow(SPFB.RTS)- 2 , "\n" )
  }
  colnames(trainData)[-ncol(trainData)] <- paste0( "pred" , 1 :(ncol(trainData)- 1 ))
  colnames(trainData)[ncol(trainData)] <- "target"
  save(trainData, file= "trainData.rdata" )
})

# trainData <- trainData[-( 1 :indicatorDepth),]
 
Dr.Tüccar :

Koddaki iki şey hakkında endişeliyim:

1) Tahmin için ohlc kullanıldığından, en son çubuk tahminler için kullanılamaz, çünkü çubuğun başında bir tahmin yapacağız ve hlc tüm çubuğun ömrü boyunca değişecektir. Tam olarak oluşturulmuş bir son çubuk kullanarak modeli eğittiğimiz ve ardından gerçek hayatta biçimlendirilmemiş bir çubuk kullanarak tahminde bulunduğumuz ortaya çıktı. Bu mümkün değil, hedef 1 değil 2 çubuk kaydırılmalıdır.
Tahmin için yalnızca açık fiyatları kullanırsanız, yüksek, düşük ve kapanışı göz ardı ederseniz, hedefin 1 çubuk kayması kabul edilebilir.

Sorunu anlamıyorum, mevcut kapanışın önceki kapanışa göre konumunu tahmin ediyoruz, mevcut mumu bilmiyoruz, öncekini biliyoruz çünkü zaten kapalı, bu yüzden önceki mum, hepsi OHLC fiyatlar zaten oluşmuş, ne teyakkuz anlamadım, sorun ne

2) Sizde amaç için Aç yerine Kapat kullanılmaktadır. Bir tür strateji için önemli mi yoksa sadece hafife alınan mı? ........

Hız ve rahatlık için kesinlikle böyle çekildi

Şamdan yeniden çizilirse, onu atlamanız gerekir ........

Bu parçayı anlamıyorum, ne işe yarıyor? SPFB.RTS.rdata nedir?

o nereden geldi? Ve neden o zaman üzerine yazılır? hiç net değil((


tryCatch({
  load( "SPFB.RTS.rdata" )
}, error = function(e){
  getSymbols( "SPFB.RTS" , src = "Finam" , period= "5min" , from = Sys.Date()- 500 )
  save(SPFB.RTS, finam.stock.list, file = "SPFB.RTS.rdata" )
  SPFB.RTS <<- SPFB.RTS
  finam.stock.list <<- finam.stock.list
})

Ve en önemlisi, muhtemelen alınan veriler üzerinde bir şeyler eğitmeye çalıştınız, neden bu konuda tek kelime etmeyesiniz? sonucu paylaş

 
mytarmailS :

Ve en önemlisi, muhtemelen alınan veriler üzerinde bir şeyler eğitmeye çalıştınız, neden bu konuda tek kelime etmeyesiniz? sonucu paylaş

Antrenman plakası oluşturmanın ilerlemesi 55857 üzerinden 16527'dir. Oluşturulur oluşmaz öğretmeye çalışacağım.

mytarmailS :

önceki kapanışa göre mevcut kapanışın konumunu tahmin edin

Bu senin işin. Bu sadece garip, genellikle stratejilerde bir karar verirler ve yeni bir barın başlangıcında anlaşmalar açarlar.
Ve sonra bir tahmin yapmanız ve çubuğun hemen sonunda bir anlaşma açmanız gerekir. Biraz rahatsız edici, terminaldeki yeni çubuğu yakalamak kolaydır. Ancak "mevcut çıtanın sonunda, yenisinin açılmasından bir saniye önce, mevcut kapanış fiyatının zaten nihai olması umuduyla bir anlaşma açın" benim için fazla çamurlu.

mytarmailS :

Bu parçayı anlamıyorum, ne işe yarıyor? SPFB.RTS.rdata nedir?

İndirilen alıntılar. İndirin, rdata'ya kaydedin, böylece bu komut dosyası her başlatıldığında Finam aranmaz ve indirilene kadar bir saniye beklemeyin. Ve daha önce indirilmişlerse ve rdata dosyasına kaydedilmişlerse, ondan alırız.

 
Dr.Tüccar :

teşekkürler

 
Dr.Tüccar :

Koddaki iki şey hakkında endişeliyim:

1) ohlc tahmin için kullanıldığından, en son çubuk tahminler için kullanılamaz, çünkü çubuğun başında bir tahmin yapacağız ve hlc tüm çubuğun ömrü boyunca değişecektir. Tam olarak oluşturulmuş bir son çubuk kullanarak modeli eğittiğimiz ve ardından gerçek hayatta biçimlendirilmemiş bir çubuk kullanarak tahminde bulunduğumuz ortaya çıktı. Bu mümkün değil, hedef 1 değil 2 çubuk kaydırılmalıdır.
Yüksek, düşük ve kapanışı göz ardı ederek tahmin için yalnızca açık fiyatları kullanırsanız, hedefin 1 çubuk kayması kabul edilebilir.

2) Sizde amaç için Aç yerine Kapat kullanılmaktadır. Bir tür strateji için önemli mi, yoksa aynen böyle mi alınır? Sonuçta, genellikle bir çubuğun başında bir ticarete gireriz ve ardından bir sonraki yeni çubukta ya döneriz ya da ayrılırız ya da çıkarız. Ve eğitilmiş model için, mevcut açılıştan sonraki açılışa kadar fiyat artışını tahmin etmek önemlidir.
Mevcut barın kapanması mutlaka bir sonrakinin açılmasıyla örtüşmez yani yakınlaşmayı hedef olarak almak ilk hatadan kurtulmuş olsanız bile karşılığında yanlış kazançlar almış olabilirsiniz. Az önce baktım, fiyat tablosundaki kapanış genellikle bir sonraki çubuğun Açık'ı ile eşleşmiyor, bu yüzden hedef değerleriniz çok şüpheli.

Bence işleri fazla karmaşıklaştırıyorsun.

1. Birinci sorun, ikinciyle yakından ilişkilidir. Kapat'ı hedef olarak kullanırsak, diğer üç fiyatın tamamı oluşur ve değişmez. Bir adım ileriyi tahmin ederken hedefi 1 pozisyon kaydırmanız gerekir.

2. Ayrıca, Kapanış ve Açık fiyatlar arasındaki farkla ilgili argümanlarınızı da kabul edemem. Bu, hangi TF'de veya haftanın hangi gününde. H1 alırsak, o zaman üç farklı seçeneğimiz var:

  • bu değerlerin aynı olduğu veya birkaç pip farklı olduğu olağan durum. Kârın yüzde kaçını almaya çalışıyoruz?
  • kolayca 100 pip olabilecek bir boşluk durumunda. Close ile Open arasında zorunlu olacak mı? 7 Ekim'de saatin bitmesine birkaç dakika kala çılgınca bir hareket vardı.
  • cumadan pazartesiye geçiş. Yani bu ayrı bir durum.

Bu sadece aklıma geldi. Ve daha birçok durum olabilir. Hepsi gerçek ticaretin modelden çok farklı olduğunu söylüyor. Şu anda, bazı idealleştirilmiş versiyonlara odaklanmak ve taramanın geri kalanını ve diğerlerini ayrı ayrı programlamak daha faydalıdır.

3. Yeniden çizim hakkında.

Kutsal inek TA. Yüzyıllardır sarsılmaz bir gerçek olarak kabul edilir.

Ve neye dayanarak?

ANALİZ'e dahil olan tüm uzmanlar için, GEÇMİŞ hakkında çığır açıcı sonuçlar çıkardıkları verileri değiştirmek kabul edilemez. Bir kez daha: geçmiş için kabul edilemez.

Biz tahminle uğraşıyoruz ve geçmişe bakışımız yeni alınan verilere göre değişebilmekle kalmıyor, değişmelidir. Verileri yeniden çizmemenin bir bedeli vardır: gecikme.

İşte piyasanın geri dönüşünün habercisi olan yeni bir bar geliyor. Ama biz kutsal ineği beslemeye devam ederken "analiz" bölümünden aldığımız bir fikir uğruna tarihe bakışımızı değiştirmiyoruz.

Göstergeleri değiştirmekten korkmayın.

Yeni bir bar geldi. Ve geldiğinde, bu yeni barın yarattığı koşullarda kararlar alınmalıdır. Bir sonraki tahmine kadar geleceği en az hatayla tahmin etmemiz gerekiyor. Tahmin hatasının büyüklüğünü, tarihteki göstergelerin türündeki değişikliklerle ilişkilendirecek yayınlar görmedim.

Bütün bunlar teorik konuşma. Bir model oluşturmak ve değerlendirmesini almak gerekir. Ben ne yapacağım

 

5000 fiyattan oluşan küçük bir tarih seti yaptı

komut dosyası düzgün çalışmıyor

sayılan her şey bir uyarı aldığında

....
....
....
5677 / 5688
5678 / 5688
5679 / 5688
5680 / 5688
5681 / 5688
5682 / 5688
5683 / 5688
5684 / 5688
5685 / 5688
5686 / 5688
5687 / 5688
5688 / 5688
Warning message:
In readChar(con, 5L, useBytes = TRUE) :
  cannot open compressed file 'trainData.rdata', probable reason 'No such file or directory'

verilerin kendisi

head(trainData)
     < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA >
[1,]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
[2,]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
[3,]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
[4,]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
[5,]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
[6,]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
     < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA >
[1,]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
[2,]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
[3,]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
[4,]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
[5,]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
[6,]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
     < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA >
[1,]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
[2,]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
[3,]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
[4,]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
[5,]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
[6,]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
     < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > target
[1,]   NA   NA   NA   NA   NA   NA   NA   NA     NA
[2,]   NA   NA   NA   NA   NA   NA   NA   NA     NA
[3,]   NA   NA   NA   NA   NA   NA   NA   NA     NA
[4,]   NA   NA   NA   NA   NA   NA   NA   NA     NA
[5,]   NA   NA   NA   NA   NA   NA   NA   NA     NA
[6,]   NA   NA   NA   NA   NA   NA   NA   NA     NA


tail(trainData)
                 < NA > < NA >          < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA >
[5683,] 8.621061e-05   10 0.0016378604  190    0    1    0    0    0    0    0    0    0
[5684,] 6.036304e-04   70 0.0010346611  120    0    0    0    0    0    1    0    0    0
[5685,] 1.208355e-03  140 0.0018122977  210    0    0    0    0    0    0    0    0    0
[5686,] 6.911447e-04   80 0.0019009764  220    0    0    0    0    0    0    0    0    0
[5687,] 2.592577e-04   30 0.0007778402   90    0    0    0    0    0    0    0    0    0
[5688,] 9.501188e-04  110 0.0016415396  190    0    0    0    0    0    0    0    0    0
         < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA >
[5683,]    0    0    0    0    0    0    1    0    0    0    0    0    0    0    0    0
[5684,]    0    0    1    0    0    0    0    0    0    1    0    0    0    0    0    0
[5685,]    0    0    0    0    0    0    0    1    0    1    0    0    0    0    0    0
[5686,]    0    0    0    0    0    0    0    1    0    1    0    0    0    1    0    0
[5687,]    0    0    1    0    0    0    0    0    0    0    0    0    0    0    0    0
[5688,]    0    0    0    0    0    0    1    0    1    0    0    0    0    0    1    0
         < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA >
[5683,]    0    0    1    0    0    0    0    0    0    0    0    0    0    0    0    0
[5684,]    0    1    0    0    0    0    0    0    0    0    0    0    0    0    0    0
[5685,]    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    1
[5686,]    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
[5687,]    1    0    1    0    0    0    0    0    0    0    0    0    0    0    0    0
[5688,]    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
         < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > < NA > target
[5683,]   NA   NA   NA   NA   NA   NA    0    1    0    0    0    0    1   -1    -70
[5684,]   NA   NA   NA   NA   NA   NA    0    1    0    0    0    0    1   -1   -140
[5685,]   NA   NA   NA   NA   NA   NA    0    0    1   -1    0    0    1   -1    -90
[5686,]   NA   NA   NA   NA   NA   NA    0    0    1   -1    0    0    1   -1     20
[5687,]   NA   NA   NA   NA   NA   NA    0    0    1   -1    0    0    1   -1    100
[5688,]   NA   NA   NA   NA   NA   NA    0    0    1   -1    0    0    1   -1     50

Verilerdekiler sürekli olarak mevcut NA-shki, ancak bir şeyleri mahvettiğini dışlamam