Ich habe einen Spark (1.5.2) DataFrame und eine trainierte RandomForestClassificationModel
. Ich kann einfach die Daten fit
und eine Vorhersage erhalten, aber ich möchte tiefer analysieren, welche Kantenwerte die häufigsten Spieler in jedem binären Klassifikationsszenario sind.Random Forest Analysis
In der Vergangenheit habe ich etwas Ähnliches mit 's gemacht, um Feature-Nutzung durch Berechnung der Vorhersage auf eigene Faust zu verfolgen. Im folgenden Code verfolge ich eine Liste von Features, die bei der Berechnung der Vorhersage verwendet werden. DataFrame scheint nicht so einfach zu sein wie die RDD
in dieser Hinsicht sind.
def predict(node:Node, features: Vector, path_in:Array[Int]) : (Double,Double,Array[Int]) =
{
if (node.isLeaf)
{
(node.predict.predict,node.predict.prob,path_in)
}
else
{
//track our path through the tree
val path = path_in :+ node.split.get.feature
if (node.split.get.featureType == FeatureType.Continuous)
{
if (features(node.split.get.feature) <= node.split.get.threshold)
{
predict(node.leftNode.get, features, path)
}
else
{
predict(node.rightNode.get, features, path)
}
}
else
{
if (node.split.get.categories.contains(features(node.split.get.feature)))
{
predict(node.leftNode.get, features, path)
}
else
{
predict(node.rightNode.get, features, path)
}
}
}
}
Ich mag etwas ähnliches zu diesem Code tun, sondern für jeden Merkmalsvektor kehre ich eine Liste aller Features/edge Wert-Paaren. Beachten Sie, dass in meinem Datensatz alle Features kategorisiert sind und die Bin-Einstellungen beim Erstellen der Gesamtstruktur entsprechend verwendet wurden.