Ich suche nach einer Lösung, um eine Warnmeldung zu behandeln, von der Kmeans
Funktion von amap
Paket. Die Warnmeldung lautet wie folgt:Wie kann ich eine "leere Cluster" Warnung in K-Means-Funktion behandeln?
empty cluster: try a better set of initial centers
.
Gibt es trotzdem könnte ich ein Signal bekommen, so könnte wissen, wann diese Fehlermeldung ausgelöst wird, und dann das Problem behandeln? (z. B .: Ausführen des Algorithmus, bis die Rückgabe erfolgt, hat keinen leeren Cluster)
Es ist ziemlich schwierig, ein schönes reproduzierbares Beispiel für mich zu erstellen. Aber ich kam mit dieser hässlichen, aber funktional:
library(amap)
numberK = 20
ts.len = 7
time.series <- rep(sample(1:8000, numberK, replace = TRUE),ts.len)
time.series <- rep(rbind(time.series, time.series), 30)
time.series <- matrix(time.series, ncol = ts.len)
centers <- matrix(sample(1:3000, numberK*ts.len), ncol = ts.len)
Kmeans((time.series), centers = centers, iter.max = 99)
Wenn Sie dies auf Sie Terminal laufen, könnte es die Warnmeldung senden ich rede.
Hinweis:Meine Gedanken zur Lösung dieses Problems fangen das Signal der Warnung, und führen Sie dann die Lösung. Allerdings habe ich keine Ahnung, wie kann ich tue dies möglicherweise, dass
Eine Option: 'Optionen (warn = 2); tryCatch (expr = {KMeans ((time.series), center = center, iter.max = 99)}, error = function (e) "Fehler erfasst") '. – joran
Oder mit den Standardoptionen: 'tryCatch (expr = {KMeans ((time.series), Zentren = Zentren, iter.max = 99)}, Warnung = Funktion (e)" Caught Warnung ")' – joran
...oder mit Warnungen als Fehler, versuchen Sie <- try (expr = {Kmeans ((time.series), center = center, iter.max = 99)}, silent = TRUE) 'und überprüfen Sie dann die Klasse' versuch' und verzweige das. – joran