出现错误的plot_decision_regions,“当X具有两个以上的训练特征时,必须提供填充值”。

时间:2018-10-23 15:05:19

标签: python-3.x plot svc mlxtend

我正在为SVC Bernoulli输出绘制2D图。

从平均word2vec和标准数据转换为向量 拆分数据进行训练和测试。 通过网格搜索找到了最佳的C和gamma(rbf)

clf = SVC(C=100,gamma=0.0001)

clf.fit(X_train1,y_train)

from mlxtend.plotting import plot_decision_regions



plot_decision_regions(X_train, y_train, clf=clf, legend=2)


plt.xlabel(X.columns[0], size=14)
plt.ylabel(X.columns[1], size=14)
plt.title('SVM Decision Region Boundary', size=16)

接收错误:- ValueError:y必须为NumPy数组。找到

还尝试将y转换为numpy。然后提示错误 ValueError:y必须为整数数组。找到的对象。尝试将数组作为y.astype(np.integer)传递

最后我将其转换为整数数组。 现在它提示错误。 ValueError:X具有两个以上的训练功能时,必须提供填充值。

3 个答案:

答案 0 :(得分:1)

我也花了一些时间,因为A -> B -> C 随后抱怨plot_decision_regions,并且还需要一个参数来避免这种情况。

例如,您有4个功能,但它们未命名:

ValueError: Column(s) [2] need to be accounted for in either feature_index or filler_feature_values

我们可以通过索引0、1、2、3来引用每个要素。您一次只能绘制2个要素,例如您想要X_train_std.shape[1] = 4 0

您需要指定一个附加参数(对于@ sos.cott的答案中指定的参数) feature_index ,并用填充符填充其余参数:

2

答案 1 :(得分:1)

您可以使用PCA将数据多维数据缩减为二维数据。然后将获得的结果传递到plot_decision_region中,将不需要填充值。

from sklearn.decomposition import PCA
from mlxtend.plotting import plot_decision_regions

clf = SVC(C=100,gamma=0.0001)
pca = PCA(n_components = 2)
X_train2 = pca.fit_transform(X_train)
clf.fit(X_train2, y_train)
plot_decision_regions(X_train2, y_train, clf=clf, legend=2)

plt.xlabel(X.columns[0], size=14)
plt.ylabel(X.columns[1], size=14)
plt.title('SVM Decision Region Boundary', size=16)

答案 2 :(得分:0)

您可以为numpy数组问题做(假设X_train和y_train仍然是熊猫数据帧)。

plot_decision_regions(X_train.values, y_train.values, clf=clf, legend=2)

对于filler_feature问题,您必须指定功能数量,因此请执行以下操作:

value=1.5
width=0.75

fig = plot_decision_regions(X_train.values, y_train.values, clf=clf,
                  filler_feature_values={2: value, 3:value, 4:value},
                  filler_feature_ranges={2: width, 3: width, 4:width},
                  legend=2, ax=ax)

您需要为每个具有的功能添加一个填充功能。