第二十二天学习进度--规律寻找算法之实战(5)

在几天前对函数的拟合函数进行改良之后,还没用实际的函数来看看具体的效果如何。以房价预测作为一个实战的模拟,来测试函数模拟寻找拟合函数之后对原本数据的预测效果究竟如何。

 

实战一:

 

这是网上找到的一个房价的数据,链接:https://pan.baidu.com/s/1wvMd6U18IsZ3P-EjbR0sUg 提取码:577w

数据来源:https://blog.csdn.net/zhuangjinhua/article/details/103820326

然后我们提取其中的总价、面积、房间、客厅、年份  这几项数据,代入前几天的规律寻找算法中,规律寻找算法有两种,

一种是根据因变量X来预测Y,另一种是直接根据Y的走势,来预测Y的值

上述的两种方式在之前的编写过程中均已经实现,所以将数据提取出来之后代入,来看看之前编写之后的成果。

import pandas as pd
# 文件的名字
FILENAME = "./data.xlsx"
# 禁用科学计数法
pd.set_option('float_format', lambda x: '%.3f' % x)
np.set_printoptions(suppress=True, threshold=10000000000)
# 得到的DataFrame分别为总价、面积、房间、客厅、年份
data = pd.read_excel(FILENAME, header=0, usecols="A,D,H,I,J")
# DataFrame转化为array
DataArray = data.values
Y = DataArray[:, 0]
X = DataArray[:, 1:5]
X = np.array(X)#转化为array,自变量
Y = np.array(Y)#转化为array,因变量房价

#根据因变量X来预测Y的值
model=auto_func_biglist(X,Y)
from matplotlib import pyplot as plt
print(func_biglist_predict(model,X))
plt.plot(np.arange(len(X)), func_biglist_predict(model,X),"bs")
plt.plot(np.arange(len(X)), Y,"r^")
plt.show()

#Y规律寻找
info=find_logical(Y)
print(func_general(info,[info[-1][-1]+1,info[-1][-1]+2,info[-1][-1]+3]))
show_func(info,1,len(info[-1])+1)
print(get_func(info))

看看预测效果如何。

根据应变量X来预测Y的值的效果如下:

 

 红色的是实际的值,蓝色的则是预测的值,可以看到,拟合的效果极佳。将对应的数据转换成函数效果进行对比,再次看看效果。

 

 可以看到曲线拟合程度非常高

 

接着看看数列规律寻找算法直接寻找Y的规律,并将Y的走势模拟成为函数的效果。

 

 绿色的是实际的值,红色的表示的是预测Y的数列走势,可以看到拟合效果同样极佳

接着,看看数列Y的函数是什么。

 预测的下一个值为:

 参数如图所示。

 

 

实战二:

数据来源:https://blog.51cto.com/8878683/1612572

预测以下数列的走势

[54167,55196,56300,57482,58796,60266,61465,62828,64653,65994,67207,66207,65859,67295,69172,70499,72538,74542,76368,78534,80671,82992,85229,87177,89211, 90859, 92420, 93717, 94974, 96259, 97542, 98705,100072,101654,103008,104357,105851,107507,109300,111026,112704,114333,115823,117171,118517,119850,121121,122389,123626,124761,125786,126743,127627,128453,129227,129988,130756,131448,132129,132802,134480,135030,135770,136460,137510]

预测数列的下一个值并展示图像

# 图像展示 610
info = find_logical([54167,55196,56300,57482,58796,60266,61465,62828,64653,65994,67207,66207,65859,67295,69172,70499,72538,74542,76368,78534,80671,82992,85229,87177,89211, 90859, 92420, 93717, 94974, 96259, 97542, 98705,100072,101654,103008,104357,105851,107507,109300,111026,112704,114333,115823,117171,118517,119850,121121,122389,123626,124761,125786,126743,127627,128453,129227,129988,130756,131448,132129,132802,134480,135030,135770,136460,137510])
print(func_general(info,[info[-1][-1]+1])) #补全None 和预测下一个值
show_func(info, 1, len(info[-1])+1)    #展示函数图像
print(get_func(info)) #匹配曲线公式

 拟合程度极高,走势基本能完全预测

 

实战三:

 

周期函数预测

数据来源:https://blog.csdn.net/desilting/article/details/38981673

已知以下的值具有周期性(7天)

[10930,10318,10595,10972,7706,6756,9092,10551,9722,10913,11151,8186,6422,6337,11649,11652,10310,12043,7937,6476,9662,9570,9981,9331,9449,6773,6304,9355,10477,10148,10395,11261,8713,7299,10424,10795,11069,11602,11427,9095,7707,10767,12136,12812,12006,12528,10329,7818,11719,11683,12603,11495,13670,11337,10232,13261,13230,15535,16837,19598,14823,11622,19391,18177,19994,14723,15694,13248,9543,12872,13101,15053,12619,13749,10228,9725,14729,12518,14564,15085,14722,11999,9390,13481,14795,15845,15271,14686,11054,10395,14775,14618,16029,15231,14246,12095,10473,15323,15381,14947]
# 图像展示 610
info = find_logical([10930,10318,10595,10972,7706,6756,9092,10551,9722,10913,11151,8186,6422,6337,11649,11652,10310,12043,7937,6476,9662,9570,9981,9331,9449,6773,6304,9355,10477,10148,10395,11261,8713,7299,10424,10795,11069,11602,11427,9095,7707,10767,12136,12812,12006,12528,10329,7818,11719,11683,12603,11495,13670,11337,10232,13261,13230,15535,16837,19598,14823,11622,19391,18177,19994,14723,15694,13248,9543,12872,13101,15053,12619,13749,10228,9725,14729,12518,14564,15085,14722,11999,9390,13481,14795,15845,15271,14686,11054,10395,14775,14618,16029,15231,14246,12095,10473,15323,15381,14947])
print(func_general(info,[info[-1][-1]+1])) #补全None 和预测下一个值
show_func(info, 1, len(info[-1])+1)    #展示函数图像
print(get_func(info)) #匹配曲线公式

效果如下:

 

 

但是可以看到函数拟合的效果在左右两端并不是太理想....存在一定的误差

 

posted on 2020-08-15 13:41  Halone  阅读(303)  评论(0编辑  收藏  举报