首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >出现错误的plot_decision_regions“当X具有2个以上的训练特征时,必须提供填充值。”

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

Stack Overflow用户
提问于 2018-10-23 23:05:19
回答 3查看 11K关注 0票数 6

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

从平均word2vec和标准化数据转换为矢量拆分数据以进行训练和测试。通过网格搜索找到最优的C和γ(Rbf)

代码语言:javascript
运行
复制
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个以上的训练功能时,必须提供填充值。

EN

回答 3

Stack Overflow用户

发布于 2019-09-26 19:54:56

您可以使用PCA将您的数据从多维数据简化为二维数据。然后在plot_decision_region中传递获得的结果,就不需要填充值了。

代码语言:javascript
运行
复制
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)
票数 4
EN

Stack Overflow用户

发布于 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个特性,但它们都没有命名:

代码语言:javascript
运行
复制
X_train_std.shape[1] = 4

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

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

代码语言:javascript
运行
复制
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})
票数 2
EN

Stack Overflow用户

发布于 2018-10-30 20:04:05

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

代码语言:javascript
运行
复制
plot_decision_regions(X_train.values, y_train.values, clf=clf, legend=2)

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

代码语言:javascript
运行
复制
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)

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52952310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档