我正在为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具有两个以上的训练功能时,必须提供填充值。
答案 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)
您需要为每个具有的功能添加一个填充功能。