我正在为SVC Bernoulli输出绘制2D图。
从平均word2vec和标准化数据转换为矢量拆分数据以进行训练和测试。通过网格搜索找到最优的C和γ(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具有2个以上的训练功能时,必须提供填充值。
发布于 2019-09-26 19:54:56
您可以使用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)
发布于 2018-10-31 08:35:54
我也花了一些时间来处理这个问题,因为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个特征,假设你想要0
和2
。
您需要指定一个额外的参数(在@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-30 20:04:05
您可以(假设X_train和y_train仍然是熊猫数据帧)来解决numpy数组问题。
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)
您需要为您拥有的每个功能添加一个填充功能。
https://stackoverflow.com/questions/52952310
复制相似问题