【发布时间】:2016-09-09 12:15:33
【问题描述】:
我已经为多项式图编译了我的代码,但它没有绘图。我正在使用来自 scikit learn 的 SVR(支持向量回归),我的代码如下。它没有显示任何错误消息,它只是显示我的数据。我不知道发生了什么事。有没有人?它甚至没有在描述我的数据的变量控制台上显示任何内容。
import pandas as pd
import numpy as np
from sklearn.svm import SVR
from sklearn import cross_validation
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
df = pd.read_csv('coffee.csv')
print(df)
df = df[['Date','Amount_prod','Beverage_index']]
x = np.array(df.Amount_prod)
y = np.array(df.Beverage_index)
x_train, x_test, y_train, y_test = cross_validation.train_test_split(
x, y, test_size=0.2)
x_train = np.pad(x, [(0,0)], mode='constant')
x_train.reshape((26,1))
y_train = np.pad(y, [(0,0)], mode='constant')
y_train.reshape((26,1))
x_train = np.arange(26).reshape((26, 1))
x_train = x.reshape((26, 1))
c = x.T
np.all(x_train == c)
x_test = np.arange(6).reshape((-1,1))
x_test = x.reshape((-1,1))
c2 = x.T
np.all(x_test == c2)
y_test = np.arange(6).reshape((-1,1))
y_test = y.reshape((-1,1))
c2 = y.T
np.all(y_test ==c2)
svr_poly = SVR(kernel='poly', C=1e3, degree=2)
y_poly = svr_poly.fit(x_train,y_train).predict(x_train)
plt.scatter(x_train, y_train, color='black')
plt.plot(x_train, y_poly)
plt.show()
数据样本:
Date Amount_prod Beverage_index
1990 83000 78
1991 102000 78
1992 94567 86
1993 101340 88
1994 96909 123
1995 92987 101
1996 103489 99
1997 99650 109
1998 107849 110
1999 123467 90
2000 112586 67
2001 113485 67
2002 108765 90
【问题讨论】:
-
我没有发现这样的代码有什么问题。虽然有一个警告:为 x 和 y 分别提供一些长度为 26 的虚拟值,然后查看绘图是否显示。如果是这样,那么您就知道您的代码运行正常,否则您需要确定您的数据是否采用正确的格式。尝试排除各种可能性,你一定能找到解决办法。
-
您能否提供一些数据以使此示例完全可重现。否则有点难以遵循。在第一次检查时,我觉得将 y_poly 分配线分成两部分可能会更好。即。 svr = svr_poly.fit(x_t,y_t) 和 y_poly = svr.predict(x_t)
-
@draco_alpine 我在我的问题中添加了一些示例数据。谢谢!
-
我实际上只是在练习这个,并且对通过图表更感兴趣。并不真正担心预测,因为这里显然没有因果关系。
标签: python machine-learning scikit-learn svm