plot_decision_regions 错误“当 X 具有超过 2 个训练特征时,必须提供填充值。”

Ram*_*a B 6 plot svc python-3.x mlxtend

我正在为 SVC Bernoulli 输出绘制二维图。

转换为向量从 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)
Run Code Online (Sandbox Code Playgroud)

接收错误:- ValueError: y 必须是一个 NumPy 数组。成立

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

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

Var*_*wal 5

您可以使用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)
Run Code Online (Sandbox Code Playgroud)


小智 0

您可以针对 numpy 数组问题执行此操作(假设 X_train 和 y_train 仍然是 panda 数据帧)。

plot_decision_regions(X_train.values, y_train.values, clf=clf, legend=2)
Run Code Online (Sandbox Code Playgroud)

对于 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)
Run Code Online (Sandbox Code Playgroud)

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