常见的预测模型及算法 |
您所在的位置:网站首页 › nba最新预测 › 常见的预测模型及算法 |
预测模型
1. 时间序列分析2.机器学习预测模型2.1 决策树2.2 支持向量机回归(SVR)
如果得到一份数据集,任务是要预测出一系列的值,而在预测任务中,我们大多数都采用的是拟合的方法,这篇文字主要介绍三种预测方法时间序列分析,灰色预测模型,神经网络。
1. 时间序列分析
时间序列也叫动态序列,数据是按时间和数值性成的序列。而时间序列分析有三种作用,大致可以描述为描述过去,分析规律,预测将来。接下来将会讲到三种模型(季节分解,指数平滑,ARIMA模型)。 一般情况下时间序列的数值变化规律有四种(长期趋势T,循环变动C,长期趋势T,不规则变动I)。我们先要对数据做出时间序列图,观察数据随周期的变化,进而判断序列是否随周期波动大,如果说整体序列随周期波动大,或波动不大,我们对其进行季节性分解,分别采用乘法和叠加模型。 至于缺失值可以自己选择方法填补,这里主要介绍该模型的思想以及步骤。下面介绍具体预测模型。 首先介绍的是指数平滑模型 指数平滑大致分为简单平滑,Holt线性趋势模型,阻尼趋势模型,简单季节性 和温特模型 简单平滑模型 这里截取了一个文章的段落。 阻尼趋势模型 适用条件:线性趋势逐渐减弱且不含季节成分。Hole的线性趋势模型对未来预测值过高,这此基础上对该模型调整,加入阻力效应有效缓解较高的线性趋势。 模型如下: 通过观察数据,在每年中三月和十二月中,在一个周期内明显比其他月份的销售额大,并且随着周期的进行,我们发现整体时间序列数据随周期波动逐渐升高,因而,我们对该时间序列采用乘法模型的季节性分解,分解后如下图:
这篇博客介绍决策树还可以,借助这篇博客,用sklearn实现回归树 决策树介绍 from sklearn.datasets import load_diabetes from sklearn.model_selection import train_test_split from sklearn.model_selection import cross_val_score from sklearn.tree import DecisionTreeRegressor #导入内置数据集 X, y = load_diabetes(return_X_y=True) #切分训练集和测试集 train_x,test_x,train_y,test_y = train_test_split(X,y,test_size=0.3) #构建回归树模型 regressor = DecisionTreeRegressor(random_state=0).fit(train_x,train_y) #十折交叉验证模型的性能 cross_val_score(regressor, X, y, cv=10) #预测 regressor.predict(test_x)另外可以对决策树可视化,效果图: 支持向量分类产生的模型(如上所述)仅依赖于训练数据的一个子集,因为构建模型的成本函数不关心超出边界的训练点。类似地,支持向量回归生成的模型仅依赖于训练数据的一个子集,因为成本函数忽略了预测接近其目标的样本。 支持向量回归有 3 种不同的实现: SVR、NuSVR和LinearSVR。LinearSVR 提供比SVR但仅考虑线性内核更快的实现,同时NuSVR实现与SVR和略有不同的公式LinearSVR。 具体实现如下: from sklearn.model_selection import train_test_split import numpy as np from sklearn.svm import SVR from sklearn import metrics from sklearn.metrics import accuracy_score,precision_score, recall_score ''' X:特征向量 y:样本的目标值 trn_x:训练集的特征 val_x:测试集的特征 trn_y:训练集的目标值 val_y:测试集的目标值 ''' trn_x, val_x, trn_y, val_y = train_test_split(X, y, test_size=0.3, random_state=42) ''' kernel参数可选:{'linear','rbf','sigmoid'...} ''' clf2 = SVR(kernel='linear',C=15,gamma='auto',probability=True,random_state=42).fit(trn_x,trn_y) resu = clf2.predict(val_x) y_pred_gbc = clf2.predict_proba(val_x)[:,1] y_pred = clf2.predict(val_x) y=np.array(val_y) print('-'*10,'svm','-'*10) fpr, tpr, thresholds = metrics.roc_curve(y,y_pred_gbc,pos_label=1) #输出测试集的Accuracy print('acc',accuracy_score(val_y,y_pred)) |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |