Ich habe einen Datensatz "x" und seinen Label-Vektor "y". Ich möchte die Genauigkeit für jedes Attribut (für jede Spalte von "x") nach der Anwendung von NaiveBayes und der Kreuzvalidierung darstellen. Ich möchte ein Balkendiagramm. Also am Ende muss ich 3 Balken haben, weil "x" 3 Spalten hat. Und die Klassifizierung muss 3 mal laufen. 3 verschiedene Genauigkeiten für jede Funktion.So zeichnen Sie Genauigkeitsbalken für jedes Merkmal eines Arrays
Jedes Mal, wenn ich meinen Code ausführen es zeigt:
Valueerror: Gefunden Arrays mit inkonsistenter Anzahl von Proben: [1 3] DeprecationWarning: Passing 1d Arrays als Daten in 0,17 veralteten und willraise Valueerror in 0,19. Ändern Sie Ihre Daten um, indem Sie X.reshape (-1, 1) verwenden, wenn Ihre Daten ein einzelnes Feature enthalten, oder X.reshape (1, -1), wenn es ein einzelnes Beispiel enthält.
Was mache ich falsch?
import matplotlib.pyplot as plt
import numpy as np
from sklearn import cross_validation
from sklearn.naive_bayes import GaussianNB
clf = GaussianNB()
x = np.array([[0, 0.51, 0.00101], [3, 0.54, 0.00105], [6, 0.57, 0.00108], [9, 0.60, 0.00111], [1, 0.73, 0.00114], [5, 0.76, 0.00117], [8, 0.89, 120]])
y = np.array([1, 0, 0, 1, 1, 1, 0])
scores = list()
scores_std = list()
for i in range(x.shape[1]):
xA=x[:, i]
scoresKF2 = cross_validation.cross_val_score(clf, xA, y, cv=2)
scores.append(np.mean(scoresKF2))
scores_std.append(np.std(scoresKF2))
plt.bar(x[:,i], scores)
plt.show()
Vielen Dank, Sie hatten Recht. Ich habe beide Werte geändert, wie du es mir gesagt hast, und jetzt funktioniert es. – Aizzaac