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 类的主要内容,如果未能解决你的问题,请参考以下文章