2016-05-17 8 views
0

Es gelingt mir nicht, eine Orange Tabelle mit StringVariables zu erstellen. Der folgende Code:Orange3: String Variable

d = Orange.data.Domain([Orange.data.StringVariable("s")])

macht diesen Fehler:

TypeError: variables must be primitive

Es scheint, dass string nur für Metadaten. Ich mache mir deswegen Sorgen, weil meine Daten viele Zeichenfolgen enthalten, die in eine diskrete Struktur eingefügt werden müssten (jeder Zeichenfolgenwert ist anders). Gibt es eine Lösung für das Einfügen von Strings in eine Tabelle?

Vielen Dank im Voraus für die Antworten, Best, mike

+0

Was ist falsch daran, dass String-Variablen als Metadaten gespeichert werden? Ich nehme an, deine Saiten sind eine Art von Etiketten? Sie werden nicht in der Lage sein, von ihnen zu lernen (sagen wir von SVM), also gehören sie zu den Metadaten. Verhindert dies, dass Sie etwas tun, was Sie tun könnten, wenn sie zu den "normalen" Attributen gehören würden? – JanezD

+0

Ok, es scheint, ich missverstanden die "Metadaten" bedeutet :(. Aber, wie meine Codezeile (die erste in meiner Nachricht) nicht funktioniert, wie soll ich die Domain deklarieren? – mike

Antwort

0

könnte diese Frage alt sein, aber ich fand es über Google und wollte ein einfaches Beispiel, wie meta „Spalten“ zu verwenden, zur Verfügung zu stellen.

Sie müssen die Meta-Variablen auf die gleiche Weise wie Sie die "normalen" Variablen angeben, tun Sie es einfach innerhalb der metas Parameter im Domain Konstruktor.

from Orange.data import * 

taskid = StringVariable(name="taskid") 
logdata = StringVariable(name="logdata") 

domain = Domain([] , metas=[taskid, logdata]) 

data = Table(domain, [ 
["uuid1","some more stuff"], 
["uuid2","some more stuff"] 
]); 

out_data = data;