支持向量回归(SVR)在Ubuntu 18.04 LTS

时间:2018-06-16 08:56:22

标签: python matplotlib machine-learning scikit-learn svm

我在 Ubuntu 18.04 LTS 中使用Python 2.7.15rc1。我试图绘制支持向量回归图,但我得到任何输出。

import matplotlib
matplotlib.use("Agg")
import numpy as np
from sklearn.svm import SVR
import matplotlib.pyplot as plt

#Generate Sample data
x = np.sort(5 * np.random.rand(40, 1), axis = 0)
y = np.sin(x).ravel()

#Add noise to targets
y[::5] += 3 * (0.5 - np.random.rand(8))

#create classifier regression model
svr_rbf = SVR(kernel="rbf", C=1000, gamma=0.1)
svr_lin = SVR(kernel="linear", C=1000, gamma=0.1)
svr_poly = SVR(kernel="poly", C=1000, gamma=0.1)

#Fit regression model
y_rbf = svr_rbf.fit(x,y).predict(x)
y_lin = svr_lin.fit(x,y).predict(x)
y_poly = svr_poly.fit(x,y).predict(x)

#Plotting of results
lw = 2
plt.scatter(x, y, color="darkorange", label="data")
plt.plot(x, y_rbf, color="navy", lw=lw, label="RBF Model")
plt.plot(x, y_lin, color="c", lw=lw, label="Linear Model")
plt.plot(x, y_poly, color="cornflowerblue", lw=lw, label="Polynomial Model")
plt.xlabel("data")
plt.ylabel("target")
plt.title("Support Vector Regression")
plt.legend()
plt.show()

python svm.py 什么都不输出。 我错过了要导入的内容吗?或者我们不能绘制这个图? 我是机器学习的新手

2 个答案:

答案 0 :(得分:0)

Matplotlib可以使用几个"后端中的一个"用于生成图表。那些后端做了不同的事情。在您的情况下,您指定了用于写入PNG文件的Agg后端:

matplotlib.use("Agg")

因此解决方案是删除该行以使用系统的默认后端或选择在屏幕上生成图形的后端。你可能是第一个:

matplotlib.use("GTK3Agg")
matplotlib.use("WXAgg")
matplotlib.use("TkAgg")
matplotlib.use("Qt5Agg")

有关后端的完整列表,请参阅https://matplotlib.org/faq/usage_faq.html#what-is-a-backend

答案 1 :(得分:0)

如果您在Jupyter Ipython笔记本上运行,则只需在代码顶部添加%matplotlib inline即可。您可以详细了解herehere

否则,我复制了你的代码并删除了matplotlib.use("Agg"),它适用于Ubuntu 18.04,matplotlib 2.2.2版。您能指定使用的版本吗?

此处还有代码

import matplotlib
import numpy as np
from sklearn.svm import SVR
import matplotlib.pyplot as plt

#Generate Sample data
x = np.sort(5 * np.random.rand(40, 1), axis = 0)
y = np.sin(x).ravel()

#Add noise to targets
y[::5] += 3 * (0.5 - np.random.rand(8))

#create classifier regression model
svr_rbf = SVR(kernel="rbf", C=1000, gamma=0.1)
svr_lin = SVR(kernel="linear", C=1000, gamma=0.1)
svr_poly = SVR(kernel="poly", C=1000, gamma=0.1)

#Fit regression model
y_rbf = svr_rbf.fit(x,y).predict(x)
y_lin = svr_lin.fit(x,y).predict(x)
y_poly = svr_poly.fit(x,y).predict(x)

#Plotting of results
lw = 2
plt.scatter(x, y, color="darkorange", label="data")
plt.plot(x, y_rbf, color="navy", lw=lw, label="RBF Model")
plt.plot(x, y_lin, color="c", lw=lw, label="Linear Model")
plt.plot(x, y_poly, color="cornflowerblue", lw=lw, label="Polynomial Model")
plt.xlabel("data")
plt.ylabel("target")
plt.title("Support Vector Regression")
plt.legend()
plt.show()

enter image description here