2015-11-24 7 views
9

Obwohl Frage scheint doppelt zu sein, ich poste dies als nicht von ihnen gab eine Lösung und relevant für mein Problem.REAL() kann nur auf eine 'numerische', nicht eine 'ganze Zahl'

dtrain<-xgb.DMatrix(data=data.matrix(train),label=data[t,c(31)]) 

Fehler in xgb.DMatrix (data = data.matrix (Zug), label = data [t, C (31)]): REAL() nur an einem 'numerischen' angewendet werden, nicht a 'integer'

> class(data[t,c(31)]) 
[1] "integer" 

> str(train) 

'

data.frame': 1965 obs. of 30 variables: 
$ having_IP_Address   : int 2 2 2 2 2 2 2 2 2 2 ... 
$ URL_Length     : int 3 3 3 3 3 3 3 3 3 3 ... 
$ Shortining_Service   : int 1 1 1 1 1 1 1 1 1 1 ... 
$ having_At_Symbol   : int 1 1 1 1 1 1 1 1 1 1 ... 
$ double_slash_redirecting : int 2 2 2 2 2 2 2 2 2 2 ... 
$ Prefix_Suffix    : int 2 2 1 2 3 2 1 1 3 1 ... 
$ having_Sub_Domain   : int 1 2 1 1 1 3 1 2 1 1 ... 
$ SSLfinal_State    : int 2 2 2 1 2 2 1 2 2 2 ... 
$ Domain_registeration_length: int 3 1 3 2 2 1 2 3 2 1 ... 
$ Favicon     : int 1 2 1 1 1 1 1 1 2 1 ... 
$ port      : int 1 2 1 1 1 1 1 1 2 1 ... 
$ HTTPS_token    : int 2 2 2 2 2 2 2 2 2 2 ... 
$ Request_URL    : int 1 1 1 2 2 1 2 1 2 1 ... 
$ URL_of_Anchor    : int 2 2 2 2 2 3 1 2 3 1 ... 
$ Links_in_tags    : int 3 2 3 3 1 3 2 1 3 2 ... 
$ SFH      : int 1 1 1 1 1 1 1 1 1 1 ... 
$ Submitting_to_email  : int 2 1 2 2 2 2 2 1 1 2 ... 
$ Abnormal_URL    : int 2 2 2 2 2 2 2 2 2 2 ... 
$ Redirect     : int 1 1 1 1 1 1 1 1 1 1 ... 
$ on_mouseover    : int 1 2 1 1 1 1 1 1 1 1 ... 
$ RightClick     : int 1 1 1 1 1 1 1 1 1 1 ... 
$ popUpWidnow    : int 1 2 1 1 1 1 1 1 2 1 ... 
$ Iframe      : int 1 2 1 1 1 1 1 1 2 1 ... 
$ age_of_domain    : int 3 1 1 1 3 3 1 1 1 1 ... 
$ DNSRecord     : int 2 1 1 2 1 2 1 2 2 1 ... 
$ web_traffic    : int 3 3 2 3 3 3 1 3 2 2 ... 
$ Page_Rank     : int 2 3 1 1 1 1 1 1 1 1 ... 
$ Google_Index    : int 1 1 1 1 1 1 1 1 1 1 ... 
$ Links_pointing_to_page  : int 2 1 3 2 1 2 1 3 2 2 ... 
$ Statistical_report   : int 2 1 2 2 2 2 2 2 2 2 ... 

Was alles, was ich durch die Suche um diesen Fehler zu verstehen ist REAL() kann nicht auf Listen angewendet werden. Ich bin ahnungslos was ist das wirklich(). Vielen Dank im Voraus !!

+1

haben Sie versuchen, Ihre Daten in numerische Umwandlung als der Fehler 'Zug [] user20650

Antwort

11

Der Fehler besagt, dass xgb.DMatrix numerische Werte annimmt, in dem die Daten ganze Zahlen sind.

Um die Daten in numerische Verwendung

train[] <- lapply(train, as.numeric) 

und dann

xgb.DMatrix(data=data.matrix(train)) 
+2

FYI: das Update in https://github.com/dmlc/xgboost/pull/2237 ermöglicht direkt Integer-Matrizen als xgb.DMatrix-Eingabe verwenden. –

3

Grob gesagt REAL ist eine C-Funktion für den Zugriff auf den Inhalt eines R-numeric-Vektor in C.

1

X verwenden zu konvertieren: Datenrahmen von Prädiktoren Y: Vektor von Etiketten

dtrain < - xgb.DMatrix (als.Matrix (as.numerisch (X)), Y)

Oder: XGB < - xgboost (data = as.matrix (X), label = Y, ...)

Verwandte Themen