私はデータセット "x"とそのラベルベクトル "y"を持っています。 NaiveBayesとクロスバリデーションを適用した後、各属性(「x」の各列)の精度をプロットする必要があります。私は棒グラフが欲しい。 最後に、3つの棒が必要です。なぜなら、「x」には3つの列があるからです。分類は3回実行する必要があります。各機能に対して3つの異なる精度。配列の各フィーチャの精度バーをプロットする方法
私は私のコードを実行するたびに、それが示す:
とValueError:サンプルの一貫性のない番号を発見配列:[1~3] DeprecationWarning:データは0.17で非推奨と0.19でとValueErrorをwillraiseよう1Dアレイを渡すを。データに単一のフィーチャがある場合はX.reshape(-1、1)、単一のサンプルが含まれている場合はX.reshape(1、-1)のいずれかを使用してデータを変更します。
私は間違っていますか?入力データ、xA
の形状を確認する
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()
ありがとうございました。あなたが私に言ったように、私は両方の値を変更しました。 – Aizzaac