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 个训练特征时,必须提供填充值。
您可以使用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)
您需要为您拥有的每一项功能添加一个填充功能。