2017-01-15 4 views
0

Je souhaite afficher des informations sur le résultat de la sortie de la forêt d'isolation, comme les indices d'isolation (sur le graphique) et la précision de la prédiction. J'utilise la fonction de forêt d'isolation de sklearn.Afficher les informations sur la forêt d'isolation

clf = IsolationForest() 
clf.fit(X_train) 
yPredTest = clf.predict(X_test) 
xx, yy = np.meshgrid(np.linspace(-3, 88), np.linspace(-1, 50)) 
Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()]) 
Z = Z.reshape(xx.shape) 
plt.title("Isolation Forest") 
plt.contourf(xx, yy, Z, cmap=plt.cm.Blues_r) 
b = plt.scatter(X_test[:, 0], X_test[:, 1], c='black') 
plt.show() 

Le résultat je ressemble à la image mais avec un seul groupe (et certains écart de points) et tous les points sont de la même couleur: problème résolu en mettant yPredTest que la couleur.

Un autre problème, est que je ne sais pas comment activer plus de deux fonctionnalités. J'ai deux ensembles (train et test) qui sont comme [[0,1,34,38O,24],[98,938,238,23,1],[...],[0,13,3,23,49]] et l'algorithme me faire tronquer mes jeux comme X_train = np.array(list)[:100,[1,2]] et X_test = np.array(list)[101:,[1,2]] autrement (np.array(list)[:100,] et np.array(list)[101:,]) il arrête et me alerter:

ValueError: Number of features of the model must match the input. Model n_features is 8 and input n_features is 2

Il semble que le problème se pose sur cette ligne Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])

Répondre

1

Je vois "une autre question", mais où est le premier? Vous avez obtenu la même couleur à cause de l'argument c='black' lors de la diffusion. Essayez d'affecter yPredTest à cet argument. Xx, yy est la grille du graphique du plan (vous pouvez les imprimer pour vérifier de quoi il s'agit). Si vous souhaitez utiliser plus de deux fonctionnalités, PCA peut vous aider.

+0

Les questions étaient: afficher les indices d'isolation, la précision de la prédiction, changer la couleur et ajouter d'autres caractéristiques. Voulez-vous que j'utilise PCA avec la forêt d'isolation ou en plus de cela (= iForest) dans un autre fichier? –

+0

@ Chènevis Je pense que vous devriez apprendre de [tutorial] (http://scikit-learn.org/stable/auto_examples/ensemble/plot_isolation_forest.html#sphx-glr-auto-examples-ensemble-plot-isolation-forest-py) comment il a été comploté. Et voici le [doc] (http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.IsolationForest.html) sur la façon d'utiliser IsolationForest. Et utilisez IsolationForest.predict pour obtenir les indices de l'ensemble de test. – Zealseeker

+0

@ Chènevis IsolationForest prend en charge plus de deux fonctionnalités. Changez simplement la forme de vos données. Mais vous devez réaliser qu'en tant qu'humains, nous ne pouvons pas les disperser dans un espace de plus de trois dimensions. Donc, si vous voulez seulement afficher les informations visuellement, utiliser PCA pour réduire vos fonctionnalités est une bonne idée, je pense. Si vous êtes intéressé à tracer, essayez de les disperser dans un espace 3D, ce qui est au-delà de ma connaissance. – Zealseeker