我正在尝试预测价格以及绘制图表以可视化数据。但是有一个错误,我无法弄清楚。
dates=[]
prices=[]
def getdata(filename):
with open(filename,'r') as csvfile:
csvFilereader=csv.reader(csvfile)
next(csvFilereader)
for row in csvFilereader:
dates.append(int(row[0].split('-')[0]))
prices.append(float(row[1]))
return
def predicted_price(dates, prices, x):
dates=np.reshape(dates,len(dates),1)
svr_linear= SVR(kernel='linear', C=1e3)
svr_poly= SVR(kernel='poly', C=1e3, degree=2)
svr_rbf= SVR(kernel='rbf', C=1e3, gamma=0.1)
svr_linear.fit(dates,prices)
svr_poly.fit(dates,prices)
svr_rbf.fit(dates,prices)
plt.scatter(dates,prices, color='black', label='Data')
plt.plot(dates, svr.rbf.predict(dates), color='red', label='RBF Model')
plt.plot(dates, svr.poly.predict(dates), color='blue', label='Poly Model')
plt.plot(dates, svr.linear.predict(dates), color='green', label='Linera Model')
plt.xlabel('Dates')
plt.ylabel('Prices')
plt.title('Regression')
plt.legend()
plt.show()
return svr_rbf.predict(x)[0], svr_linerar.predict(x)[0], svr_poly(x)[0]
getdata('D:\\android\\trans1.csv')
predicted_prices=predicted_price(dates,prices,10)
print(predicted_prices)
这是我得到的错误:
Expected 2D array, got 1D array instead:
array=[19102018. 19102018. 19102018. ... 22102018. 20102018. 23102018.].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.
更改预测价格:
(dates,prices,10)
到
([dates,prices,10])
给出此错误:
predicted_price() missing 2 required positional arguments: 'prices' and 'x'
这是数据的图像:
答案 0 :(得分:0)
此代码至少有3个问题:
getdata
什么也不return
。它仅适用于dates
和prices
是全局的。将它们都移到getdata
和return dates, prices
SVR
未导入(我想是sklearn)dates = dates.reshape(-1, 1)
更改预测价格:
(日期,价格,10)
([日期,价格,10]) 出现此错误:
predicted_price()缺少2个必需的位置参数:“ prices”和“ x”
编写[dates,prices,10]
时,您将构建一个列表。这是您传递给函数的列表。但是该函数需要3个参数,而不是1个。因此,将其命名为predicted_price(dates,prices,10)
。
另一个说明:大括号(...)
属于函数,而不属于数据。这很重要,因为
predicted_price(dates,prices,10)
不同于
predicted_price((dates,prices,10))
第一个是正确的,第二个是构造一个元组并将其传递给predicted_price
。
如果您可以制作一个包含一些数据的minimal complete example,则可能需要征求有关codereview.stackexchange.com的反馈