6

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

从 Avg 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 must be an integer array。找到对象。尝试将数组传递为 y.astype(np.integer)

最后我将它转换为整数数组。现在提示错误。ValueError:当 X 具有超过 2 个训练特征时,必须提供填充值。

4

3 回答 3

4

您可以使用 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)
于 2019-09-26T11:54:55.720 回答
2

我也花了一些时间来解决这个问题,plot_decision_regions然后抱怨ValueError: Column(s) [2] need to be accounted for in either feature_index or filler_feature_values,还需要一个参数来避免这种情况。

因此,假设您有 4 个功能,但它们未命名:

X_train_std.shape[1] = 4

我们可以通过索引 0、1、2、3 来引用每个特征。您一次只能绘制 2 个特征,假设您想要02

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

value=1.5
width=0.75

fig = plot_decision_regions(X_train.values, y_train.values, clf=clf,
              feature_index=[0,2],                        #these one will be plotted  
              filler_feature_values={1: value, 3:value},  #these will be ignored
              filler_feature_ranges={1: width, 3: width})
于 2018-10-31T00:35:53.560 回答
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)

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

于 2018-10-30T12:04:05.217 回答