原理:根据最近8天的销售数据预测最近一天的销售数据
开发工具:JetBrains PyCharm 2017.2.3
代码:
from numpy import *
def standRegres(xArr,yArr):
xMat = mat(xArr); yMat = mat(yArr).T
xTx = xMat.T*xMat
if linalg.det(xTx) == 0.0:
print("This matrix is singular, cannot do inverse")
return
ws = xTx.I * (xMat.T*yMat)
return ws
def loadDataSet(fileName):
allDataMat = []
dataMat = []
yMat = []
fr = open(fileName)
for line in fr.readlines():
curLine = line.strip().split('\t')
allDataMat.append(float(curLine[0]))
ii = 0
for j in range(len(allDataMat)):
if (j > 8):
lineArr = []
lineArr.append(allDataMat[j - 8])
lineArr.append(allDataMat[j - 7])
lineArr.append(allDataMat[j - 6])
lineArr.append(allDataMat[j - 5])
lineArr.append(allDataMat[j - 4])
lineArr.append(allDataMat[j - 3])
lineArr.append(allDataMat[j - 2])
lineArr.append(allDataMat[j - 1])
dataMat.append(lineArr)
yMat.append(allDataMat[j])
return yMat,dataMat
#加载数据--X为前8个连续数据。Y为当前值
yArr,xArr = loadDataSet('myDemo.txt')
#print(yArr)
#print(xArr)
#求以前8个数为参数的回归系统(8个常量)
ws = standRegres(xArr,yArr)
print(ws)
#print("3.176513 3.960008".split('\t'))
print('-------------------------')
xMat = mat(xArr)
yMat = mat(yArr)
yHat = xMat*ws
print(yMat.tolist())
print(yHat[:,0].flatten().A[0])
print('-------------------------')
#基于总方差求平均差(波动范围)
print(sqrt(sum((yArr-yHat.T.flatten().A[0])**2)/yHat.size))
'''
print(yArr)
print(corrcoef(yHat.T,yMat))
'''
#画图
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
a=[]
for i in range(len(xMat[:,1].flatten().A[0])):
a.append(i)
ax.scatter(a,yMat.T[:,0].flatten().A[0])
ax.plot(a,yHat)
'''
xCopy = xMat.copy()
xCopy.sort(0)
yHat = xCopy*ws
ax.plot(xCopy[:,1],yHat)
'''
plt.show()
训练数据:
myDemo.txt3.176513
3.816464
4.550095
4.256571
4.560815
3.929515
3.526170
3.156393
3.110301
3.149813
3.476346
4.119688
4.282233
3.486582
4.655492
3.965162
3.514900
3.125947
4.094115
3.476039
3.210610
3.190612
4.631504
4.295890
3.085028
3.448080
3.167440
3.364266
3.993482
3.891471
3.143259
3.114204
3.851484
4.621899
4.580768
3.620992
3.580501
4.618706
3.676867
4.641845
3.175939
4.264980
3.558448
3.436632
3.831052
3.182853
3.498906
3.946833
3.900583
4.238522
4.233080
3.521557
3.203344
4.278105
3.555705
3.502661
3.859776
4.275956
3.916191
3.587961
3.183004
4.225236
4.231083
4.240544
3.222372
4.021445
3.567479
3.562580
4.262059
3.208813
3.169825
4.193949
3.491678
4.533306
3.550108
4.636427
3.557078
3.552874
3.494159
3.206828
3.195266
4.221292
4.413372
4.184347
3.742878
3.201878
4.648964
3.510117
3.274434
3.579622
3.489244
4.237386
3.913749
3.228990
4.286286
4.628614
3.239536
4.457997
3.513384
3.729674
3.834274
3.811155
3.598316
4.692514
4.604859
3.864912
3.184236
3.500796
3.743365
3.622905
4.310796
3.583357
3.901852
3.233521
3.105266
3.865544
4.628625
4.231213
3.791149
3.968271
4.253910
3.194710
3.996503
3.904358
3.503976
4.557545
3.699876
4.613614
3.140401
4.206717
3.969524
4.476096
3.136528
4.279071
3.200603
3.299012
3.209873
3.632942
3.248361
3.995783
3.563262
3.649712
3.951845
3.145031
3.181577
4.637087
3.404964
3.873188
4.633648
3.154768
4.623637
3.078132
3.913596
3.221817
3.938071
3.880822
4.176436
4.648161
3.332312
4.240614
4.532224
4.557105
4.610072
4.636569
4.229813
3.500860
4.245514
4.605182
3.454340
3.180775
3.380820
4.565020
3.279973
4.554241
4.633520
4.281037
3.844426
3.891601
3.849728
3.492215
4.592374
4.632025
3.756750
3.133555
3.567919
4.363382
3.560165
4.564305
4.215055
4.174999
4.586640
3.960008
3.529963
4.213412
3.908685
3.585821
4.374394
3.213817
3.952681
3.129283
本文介绍了一个基于线性回归的销量预测模型,该模型使用了最近8天的销售数据来预测接下来一天的数据。通过Python实现,利用JetBrains PyCharm 2017.2.3进行开发。
1657

被折叠的 条评论
为什么被折叠?



