matplotlib 图例的单独 svm 类

Posted

技术标签:

【中文标题】matplotlib 图例的单独 svm 类【英文标题】:Separate svm classes for matplotlib legend 【发布时间】:2016-11-27 10:02:55 【问题描述】:

我正在尝试学习 sklearn,为此,我正在尝试使用线性 SVM 进行简单练习。 SVC 尝试根据房屋的价值及其面积来预测房屋中的卧室数量。 我设法得到了一些看起来不错的东西,但是我从 matplotlib 的文档中获取的模板使用了颜色图和我不知道到底什么对应什么。

我如何添加一个图例来指定每个散点的颜色对应什么,以及 SVM 的部分也对应什么?

另外,为了进行同样的工作,我必须 preprocess.scale 我的特征,并且刻度现在具有预处理值;(我怎样才能以某种方式取消缩放或检索原始值以用于毕业。

剧情如下:

http://i.imgur.com/ERFuEmJ.png(我没有足够的声望直接发帖)

这是我的代码:

style.use('ggplot')

dataset = pd.read_csv('/Path/Paros.csv')
dataset = dataset[dataset['size']<3000]
X = np.array(dataset[['size', 'value']])
y = np.array(dataset[['bedrooms']])
X = preprocessing.scale(X)

h = 0.01  # step size in the mesh
C = 0.01  # SVM regularization parameter
clf = svm.SVC(kernel='linear', C=C).fit(X, y[:,0])

# create a mesh to plot in
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
print "mesh"
xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
                     np.arange(y_min, y_max, h))


Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])

Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, cmap=plt.cm.Paired, alpha=0.8)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired)
plt.xlabel('Size')
plt.ylabel('Price')
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())


plt.show()

【问题讨论】:

(1) 尝试 plt.colorbar() 如果它不是你想要的,绘制输出。 (2) 使用StandardScaler 的面向对象用法进行缩放(与您的函数式方法相反)。该对象支持inverse_transform Thec colobar 效果很好!但我不知道如何处理 StandardScaler inverse_transform.. 我用 StandardScaler 替换了我的 preprocessing.scale(X),但我不知道在哪里反转数据以使其工作? 我很确定用户指南中有很好的文档! 文档中的反面实际上没有任何内容:( this 有什么不清楚的地方? scaler.transform(x) = z。 scaler.inverse_transform(z) = x(transform和inverse_transform调用的数据可能不同,只需feature-size相同) 【参考方案1】:

plt.colorbar() 做了我想要的。

【讨论】:

以上是关于matplotlib 图例的单独 svm 类的主要内容,如果未能解决你的问题,请参考以下文章

Matplotlib 图例:标记上方的标签

For 循环中的 Matplotlib 图例

更改 matplotlib 图例中各个标签的字体大小

Matplotlib 轴图例在 barh 中仅显示一个标签

是否可以在 matplotlib 中添加一个字符串作为图例项

matplotlib 在散点图中不显示图例