# -*- coding: utf-8 -*-
# author: rw
# E-mail: weiyanjie10@gmail.com
import numpy as np
import copy
from sklearn import linear_model
from arma import ARMA
import random
class ArPredicter(object, ):
def __init__(self, p, time_series, missing_indexs,
stop_error=0.0005, max_iter_time=6):
self.p = p
self.time_series = time_series
self.missing_indexs = missing_indexs
self.max_iter_time = max_iter_time
self.stop_error = stop_error
self.fit()
def fit(self):
iter_time = 0
while iter_time < self.max_iter_time:
clf, error = self.get_clf()
if error < self.stop_error:
self.clf = clf
return
iter_time += 1
print iter_time,"th complete"
self.clf = clf
return
def get_clf(self):
def get_x_y(time_series):
index = 0
while index + self.p < len(time_series):
x = time_series[index:index+self.p]
y = time_series[index+self.p]
index += 1
yield x,y
xs_ys = [x_y for x_y in get_x_y(self.time_series)]
xs = [x for x,y in xs_ys]
ys = [y for x,y in xs_ys]
clf = linear_model.LinearRegression()
print "training"
clf.fit(xs, ys)
def impute(index):
xs = self.time_series[index-self.p:index]
predict_y = clf.predict(xs)
error = abs(self.time_series[index] - predict_y)
self.time_series[index] = predict_y[0]
return error
print "imputing"
errors = map(impute, self.missing_indexs)
return clf, max(errors)
@property
def ses(self):
ses = []
for index, x in enumerate(self.time_series):
if index < self.p:
continue
if index in self.missing_indexs:
continue
xs = self.time_series[index-self.p:index]
y = self.clf.predict(xs)
ses.append((y-self.time_series[index])**2)
return ses
if __name__ == "__main__":
a = ARMA([0.3, -0.4, 0.4, -0.5, 0.6], [], 0.1)
time_series = [a.generater.next() for i in range(4000)]
missing_rate = 0.1
if_missing = [1 if random.random() > missing_rate or time_series.index(t) < 6 else 0 for t in time_series]
time_series = [t if flag==1 else 0 for t,flag in zip(time_series,if_missing)]
missing_indexs = [index for index, flag in enumerate(if_missing) if flag == 0]
p = ArPredicter(5, time_series, missing_indexs)
print sum(p.ses)/4000
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
毕业设计是高等教育阶段学生完成学业的一个重要环节,通常在学士或硕士学业即将结束时进行。这是学生将在整个学业中所学知识和技能应用到实际问题上的机会,旨在检验学生是否能够独立思考、解决问题,并展示其专业能力的一项综合性任务。 毕业设计的主要特点包括: 独立性: 毕业设计要求学生具备独立思考和解决问题的能力。学生需要选择一个合适的课题,研究相关文献,进行实地调查或实验,并提出独立见解。 实践性: 毕业设计是将理论知识应用到实际问题中的一次实践。通过完成毕业设计,学生能够将所学的专业知识转化为实际的解决方案,加深对专业领域的理解。 综合性: 毕业设计往往要求学生运用多个学科的知识,综合各种技能。这有助于培养学生的综合素养,提高他们的综合能力。 导师指导: 学生在毕业设计过程中通常由一名指导老师或导师团队提供指导和支持。导师负责引导学生确定研究方向、制定计划、提供建议,并在整个过程中监督进展。 学术规范: 毕业设计要求学生按照学术规范完成研究,包括文献综述、研究设计、数据采集与分析、结论和讨论等环节。学生需要撰写一篇完整的毕业论文,并进行答辩。
资源推荐
资源详情
资源评论
收起资源包目录
毕业设计,在缺失数据的情况下训练arma模型.zip (43个子文件)
SJT-code
__init__.py 22B
p_less_miss 16.76MB
test.pyc 1KB
10000_0.1.png 15KB
p_less_noise 15.93MB
noises 5.77MB
e_arma_predicter.pyc 3KB
dpark_arma_predicter.pyc 4KB
numpy_arma_predicter.pyc 3KB
v2_e_arma_predicter.pyc 3KB
ar.py 1KB
arma.pyc 2KB
2missing1noise.png 20KB
yule_ogd_test.py 1KB
e_arma_predicter.py 2KB
ogd_impute_predicter.py 2KB
rec_xs 95KB
p02 1.36MB
arls_impute_predicter.py 3KB
1missing3noise.png 17KB
ogd_impute_predicter.pyc 3KB
arma.py 1KB
2missing3noise.png 17KB
p 362KB
3mising3noise.png 17KB
s_arma_predicter.pyc 3KB
arma_ave_noise.png 19KB
s_arma_predicter.py 2KB
a_error_&_p_error.png 24KB
v2_e_arma_predicter.py 2KB
numpy_arma_predicter.py 3KB
ar.pyc 2KB
arma_predicter.py 2KB
3missing1noise.png 19KB
1missing1noise.png 20KB
test.py 1KB
yule_walker_ar_predicter.py 2KB
arma_predicter.pyc 4KB
estimate_ARMA.py 2KB
dpark_arma_predicter.py 2KB
yule_walker_ar_predicter.pyc 3KB
result 11KB
1mising3noise0.png 18KB
共 43 条
- 1
资源评论
JJJ69
- 粉丝: 5966
- 资源: 5593
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功