Ich habe eine Datenmenge, die ich in R. erstellt haben, es ist wie folgt strukturiert:K-Means-Clustering in R Fehler
> head(btc_data)
Date btc_close eth_close vix_close gold_close DEXCHUS change
1647 2010-07-18 0.09 NA NA NA NA 0
1648 2010-07-19 0.08 NA 25.97 115.730 NA -1
1649 2010-07-20 0.07 NA 23.93 116.650 NA -1
1650 2010-07-21 0.08 NA 25.64 115.850 NA 1
1651 2010-07-22 0.05 NA 24.63 116.863 NA -1
1652 2010-07-23 0.06 NA 23.47 116.090 NA 1
Ich versuche, die Beobachtungen clustern mit k-Mittel. Allerdings erhalte ich folgende Fehlermeldung:
> km <- kmeans(trainingDS, 3)
Error in do_one(nmeth) : NA/NaN/Inf in foreign function call (arg 1)
In addition: Warning message:
In storage.mode(x) <- "double" : NAs introduced by coercion
Was bedeutet das? Werte ich die Daten falsch vor? Was kann ich tun, um es zu beheben? Ich kann die NAs nicht fallen lassen, weil ich aus 4500 anfänglichen Beobachtungen, wenn ich complete cases
betreibe, nur noch 100 Beobachtungen übrig habe.
Im Wesentlichen hoffe ich, dass 3 Cluster basierend auf der change
Spalte bilden, die Werte von -1,0,1 hat. Ich möchte dann die Komponenten jedes Clusters analysieren, um die stärksten Prädiktoren für Veränderungen zu finden. Welche anderen Algorithmen wären dafür am nützlichsten?
Ich habe auch versucht, alle die NA entfernen Werte den folgenden Code verwenden, aber ich habe immer die gleiche Fehlermeldung erhalten:
> complete_cases <- btc_data[complete.cases(btc_data), ]
> km <- kmeans(complete_cases, 3, nstart = 20)
Error in do_one(nmeth) : NA/NaN/Inf in foreign function call (arg 1)
In addition: Warning message:
In storage.mode(x) <- "double" : NAs introduced by coercion
> sum(!sapply(btc_data, is.finite))
[1] 8008
> sum(sapply(btc_data, is.nan))
[1] 0
>
> sum(!sapply(complete_cases, is.finite))
[1] 0
> sum(sapply(complete_cases, is.nan))
[1] 0
Hier ist das Format der Daten:
> sapply(btc_data, class)
Date btc_close eth_close vix_close gold_close DEXCHUS change
"Date" "numeric" "numeric" "numeric" "numeric" "numeric" "factor"
'> Summe (sapply (btc_data, is.finite)!) [1] 8008 > sum (! Sapply (btc_data, is.nan)) [1] 18193' – zsad512
@coffeinjunky Ich habe die Frage bearbeitet .... auch, ich weiß nicht, warum die 'Summe' für komplette Fälle' 721' ist, besonders seit es gibt nur 103 Beobachtungen ... wenn ich das IF manuell inspiziere, gibt es keine NA – zsad512
Ok- Ich entfernte das '!' und editierte die Quest Ion ... was du sagst ist, dass die 'knn' auf 'complete_cases' funktionieren sollte, aber ich bekomme immer noch dieselbe Fehlermeldung – zsad512