Я использую Python 2.7.15rc1 в Ubuntu 18.04 LTS. Я пытался построить график поддержки векторной регрессии, но я получаю любой результат.
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 ничего не выводит. Я что-то пропустил для импорта? или мы не можем построить график этого? Я новичок в машинном обучении
Вам просто нужно добавить %matplotlib inline
вверху вашего кода, если вы работаете на ноутбуке Jupyter Ipython. Вы можете прочитать об этом здесь и здесь.
В противном случае я скопировал ваш код и удалил 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()
Matplotlib может использовать один из нескольких "бэкэндов" для создания графиков. Эти бэкэнды делают разные вещи. В вашем случае вы указали Agg
backend, который используется для записи файлов PNG:
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 для полного списка бэкэндов.
matplotlib.use("Agg")
но получил ошибку _tkinter.TclError: нет отображаемого имени и нет переменной окружения $ DISPLAY. Я использую замазку для подключения моей машины и запуска Python svm.py. Это верно?