最小二乘法预测沪牌202101价格
1. 背景
最近在拍沪牌,毫无经验,想着本也是做数据的,来个预测。从各大网站搜索沪牌近6个月最后30s的数据。
2. 原理
-
参考文章:
3. 代码
最小二乘法的算法:
def zuixiaoerchen(arrayY, picTitle): print(f"arrayY: {arrayY}") print(f"picTitle: {picTitle}") if len(arrayY) == 0: return [0, 0, 0] # 取得最大销量,作为纵坐标的峰值标准 maxValue = max(arrayY) minValue = min(arrayY) # 设置横坐标和纵坐标的值 # def arange(start=None, stop=None, step=None, dtype=None) x = numpy.arange(1, len(arrayY) + 1, 1) # def array(p_object, dtype=None, copy=True, order='K', subok=False, ndmin=0) y = numpy.array(arrayY) # 第1個拟合,设置自由度為1 : (y = ax + b) z = numpy.polyfit(x, y, 1) # z: [ 0.46428571 13.35238095] print(f"z: {z}") # 生成的多項式對象(y = ax + b) p = numpy.poly1d(z) # p: -0.1448x + 13.23 print(f"p: {p}") if z[0] > 0: # 绘制原曲线及 拟合后的曲线 # 原曲线 , 设置颜色(蓝色)和标签 pylab.plot(x, y, 'b^-', label='original sales growth') # 自由度为1的趋势曲线, 设置颜色(蓝色)和标签 pylab.plot(x, p(x), 'gv--', label=f'y = {z[0]}x + {z[1]}') # 设置图表的title pylab.title(f"picTitle: {picTitle}") # 设置横坐标,纵坐标的范围 [xmin=0, xmax=16, ymin=0, ymax=30] pylab.axis([0, len(arrayY) + 1, minValue, maxValue + 1]) pylab.legend() # 保存成图片,需要提前创建文件夹 Growth,程序不会自动创建 pylab.savefig(f"Growth/{picTitle}.png", dpi=96) # 清除图表设置,以防止曲线多次累计 # 如果不清除,那么在这个程序运行起见,多次调用这个函数时,会不断将之前的曲线累计到新图片中 pylab.clf() return [z[0], z[1], maxValue]
由于大家都是最后出价的,因此算了下202006~202012最后10s的最小二乘系数。








系数在39和67之间 erchengyue = [39.0909090909,59.99999999,37.2727272727,62.7272727272,40.9090909090,57.2727272727,54.545454545454],差距较大。 无从预测下个月的增长趋势。
因此,我们给202006~202012系数又做了最小二乘算法。

预测202101的增长系数值为: y=1.590909091620068*8+43.89610389179887=56.62337662475941
预测202101的50s开始的增长值为y=56.62337662475941*11=622.8571428723536
因此推荐50s加价600.
以上,属于娱乐。
附实现过程:
1. 原数据。

2. 数据处理
import pandas as pd import numpy as np hu=pd.read_excel('./hu.xlsx') hu=hu.rename(columns={'年月':'month','时间':'time','价格':'price'}) ##去除时间列后的空格 \xa0 def delSpace(x): x="".join(str(x).split()) if(x=='11:29:60'): x='11:30:00' return x hu['time']=hu['time'].apply(delSpace) ##设置索引 hu=hu.set_index('month') ##将数据设置成可以行列显示的图标 时间为横坐标,价格为纵坐标 hup=hu.pivot_table(index='time',columns='month',values='price') ####生成公式和图标 ##选取最后50s的数据 hup.loc['11:29:46':'11:30:00','2020-12-01'] zuixiaoerchen(hup.loc['11:29:46':'11:30:00','2020-12-01'], "202012")
最后一步,就生成这个图像啦,得到的增长系数是54.54545454545161.

浙公网安备 33010602011771号