for ds_cnt,(X,Y)in enumerate(datasets):#取出了ds_cnt的索引(0,1,2,3,)以及(X,Y)
#在图像的第一列,放置原数据的分布
ax=axes[ds_cnt,0]
if ds_cnt==0:
ax.set_title('Input data')
ax.scatter(X[:,0],
X[:,1],
c=Y,
zorder=10,
cmap=plt.cm.Paired,
edgecolors='k')
ax.set_xticks(())
ax.set_yticks(())
#第二层循环:在不同的核函数中循环
#从图像的第二列开始,一个个填充分类结果
for est_idx,kernel in enumerate(kernel):
#定义子图位置
ax=axes[ds_cnt,est_idx + 1]
#建模
clf=svm.SVC(
kernel=kernel,gamma=2).fit(X,Y)
score=clf.score(X,Y)
#绘制图像本身的散点图
ax.scatter(X[:,0],X[:,1],c=Y,zorder=10,cmap=plt.paired,edgecolors='k')
#绘制支持向量
ax.scatter(clf.support_vectors[:,0],clf.support_vectors_[:,1],
s=50,facecolors='none',zorder=10,edgecolors='k')
#绘制决策边界
x_min,x_max=X[:,0].min()-.5,X[:,0].max()+.5
y_min,y_max=X[:,0].min()-.5,X[:,0].max()+.5
#np.mgrid,合并了我们之前使用的、np.linspace和np.meshgrid的用法
#一次性使用最大值和最小值生成网络
#表示为【起始值:结束之:步长】
#如果步长是复数,则其整数部分就是起始值和结束值之间创建的点的数量,并且结束之被包含在内
XX,YY=np.mgrid[x_min:x_max:200j,y_min,:y_max:200j]
#np.c_,类似于np.vstack的功能
Z=clf.decision_function(np.c_[XX.ravel(),YY.ravel()]).reshape(XX.shape)
#绘制等高线不同区域的颜色
ax.pcolormesh(XX,YY,Z>0,camp=plt.cm.Paried)
#绘制等高线
ax.contour(XX,YY,Z,colors=['k','k','k'],
linestyles=['--','-','--'],levels=[-1,0,1])
#设定坐标轴为不显示
ax.set_xticks(())
ax.set_yticks(())
#将标题放在第一行的顶上
if ds_cnt==0:
ax.set_title(kernel)
#为每张图添加分类的分数
ax.text(0.95,0.06,('%.2f' %score).lstrip('0'),size=15,
bbox=dict(boxstyle='round',alpha=0.8,facecolor='white'),#为分数添加一个白色的格子作为底色
transform=ax.transAxes,#确定文字所对应的坐标轴,就是ax子图的坐标轴本身
horizontalalignment='right')#位于坐标轴的什么方向
plt.tight_layout()
plt.show()
`
```以下是报错内容
ValueError Traceback (most recent call last)
<ipython-input-80-ab940553a6e5> in <module>
19 ax=axes[ds_cnt,est_idx + 1]
20 #建模
---> 21 clf=svm.SVC(
22 kernel=kernel,gamma=2).fit(X,Y)
23 score=clf.score(X,Y)
D:\anaconda\lib\site-packages\sklearn\svm\_base.py in fit(self, X, y, sample_weight)
224
225 seed = rnd.randint(np.iinfo('i').max)
--> 226 fit(X, y, sample_weight, solver_type, kernel, random_seed=seed)
227 # see comment on the other call to np.iinfo in this file
228
D:\anaconda\lib\site-packages\sklearn\svm\_base.py in _dense_fit(self, X, y, sample_weight, solver_type, kernel, random_seed)
275 self.support_, self.support_vectors_, self._n_support, \
276 self.dual_coef_, self.intercept_, self._probA, \
--> 277 self._probB, self.fit_status_ = libsvm.fit(
278 X, y,
279 svm_type=solver_type, sample_weight=sample_weight,
sklearn\svm\_libsvm.pyx in sklearn.svm._libsvm.fit()
ValueError: 'l' is not in list