如何修复 Python sklearn 中的 SVR 图
How to fix SVR plot in Python sklearn
我正在尝试将 SVR 模型拟合到我的数据集,并使用 Python 中的 Sklearn 查看绘图。
from sklearn.svm import SVR
#Load Data
X_train_Occ = pd.DataFrame(X_train['occupancy'])
Y_train_Occ = Y_train
#Rescale
sc_X = StandardScaler()
sc_Y = StandardScaler()
X_train_Occ_scaled = sc_X.fit_transform(X_train_Occ)
Y_train_Occ_scaled = sc_Y.fit_transform(Y_train_Occ.reshape(-1, 1))
regressor = SVR(kernel ='rbf')
regressor.fit(X_train_Occ_scaled, Y_train_Occ_scaled)
我将我的数据加载到 X 和 Y 数据框中并缩放它们。
见下图:
然后我得到以下输出:
SVR(C=1.0, cache_size=200, coef0=0.0, degree=3, epsilon=0.1, gamma='auto', kernel='rbf', max_iter=-1, shrinking=True, tol=0.001, verbose=False)
然后我试着用这个来展示回归的结果:
plt.scatter(X_train_Occ_scaled, Y_train_Occ_scaled, color = 'red')
plt.plot(X_train_Occ_scaled, regressor.predict(X_train_Occ_scaled), color = 'blue')
plt.title('Occupancy vs Flow (SVR)')
plt.xlabel('Occupancy')
plt.ylabel('Flow')
plt.show()
给出以下情节:
模型是否过度拟合数据?还是代码有问题?
我正在关注这里的代码:
http://scikit-learn.org/stable/auto_examples/svm/plot_svm_regression.html
我正在尝试绘制最适合模型的线,而不是每个点的线。
如前所述,解决方案是先根据自变量对数据进行排序,然后将数据拟合到模型中并预测结果。
不要使用plt.plot
,因为所有数据都是随机排序的。使用 plt.scatter
或将数据从最小值到最大值排序
我正在尝试将 SVR 模型拟合到我的数据集,并使用 Python 中的 Sklearn 查看绘图。
from sklearn.svm import SVR
#Load Data
X_train_Occ = pd.DataFrame(X_train['occupancy'])
Y_train_Occ = Y_train
#Rescale
sc_X = StandardScaler()
sc_Y = StandardScaler()
X_train_Occ_scaled = sc_X.fit_transform(X_train_Occ)
Y_train_Occ_scaled = sc_Y.fit_transform(Y_train_Occ.reshape(-1, 1))
regressor = SVR(kernel ='rbf')
regressor.fit(X_train_Occ_scaled, Y_train_Occ_scaled)
我将我的数据加载到 X 和 Y 数据框中并缩放它们。 见下图:
然后我得到以下输出:
SVR(C=1.0, cache_size=200, coef0=0.0, degree=3, epsilon=0.1, gamma='auto', kernel='rbf', max_iter=-1, shrinking=True, tol=0.001, verbose=False)
然后我试着用这个来展示回归的结果:
plt.scatter(X_train_Occ_scaled, Y_train_Occ_scaled, color = 'red')
plt.plot(X_train_Occ_scaled, regressor.predict(X_train_Occ_scaled), color = 'blue')
plt.title('Occupancy vs Flow (SVR)')
plt.xlabel('Occupancy')
plt.ylabel('Flow')
plt.show()
给出以下情节:
模型是否过度拟合数据?还是代码有问题?
我正在关注这里的代码: http://scikit-learn.org/stable/auto_examples/svm/plot_svm_regression.html
我正在尝试绘制最适合模型的线,而不是每个点的线。
如前所述,解决方案是先根据自变量对数据进行排序,然后将数据拟合到模型中并预测结果。
不要使用plt.plot
,因为所有数据都是随机排序的。使用 plt.scatter
或将数据从最小值到最大值排序