主要内容

一加仑汽油所行驶的里程的预测

这个例子展示了如何使用数据预测汽车燃料消耗以前记录的观察。

汽车英里每加仑(MPG)预测是一个典型的非线性回归问题,在几个汽车特性被用来预测英里/加仑的燃料消耗。这个示例的训练数据可以在加州大学欧文机器学习库和包含的数据收集从汽车各种品牌和型号。

在这个数据集,六缸数输入变量,位移,马力,体重、加速度,和模型。输出变量的预测是英里/加仑的燃料消耗。在本例中,您不使用的制造和模型信息数据集。

对数据进行分区

获取数据集从原始数据文件autoGas.dat使用loadGasData函数。

(数据、input_name) = loadGasData;

样本数据集分割成一个训练集(奇数)和一个验证集样本(偶数)。

trn_data =数据(1:2:最终,);val_data =数据(2:2:最终,);

选择输入

使用exhaustiveSearch函数内执行一个详尽的搜索可用的输入选择的输入集影响最大的燃料消耗。使用第一个参数exhaustiveSearch指定输入的数量每组合(1对于这个例子)。exhaustiveSearch为每个组合,构建一个简称ANFIS模型火车这一时代,和报告的性能。首先,使用exhaustiveSearch确定哪些变量本身可以最好的预测输出。

exhaustiveSearch (1 trn_data val_data input_name);
火车6简称ANFIS模型,每1输入选定的候选人从6…模型1:气缸、错误:trn = 4.6400, val = 4.7255模型2:Disp,错误:trn = 4.3106, val = 4.4316模型3:电力、错误:trn = 4.5399, val = 4.1713模型4:体重、错误:trn = 4.2577, val = 4.0863模型5:加速者,错误:trn = 6.9789, val = 6.9317模型6:年,错误:trn = 6.2255, val = 6.1693

图包含一个坐标轴对象。坐标轴对象与标题对应输入错误包含3线类型的对象。这些对象代表培训、验证。

图表表明,W变量的均方误差最小。换句话说,它最能预测MPG。

重量、训练和验证错误具有可比性,说明小过度拟合。因此,您可以使用多个输入变量简称ANFIS模型。

尽管模型使用重量Disp分别是最低的错误,这两个变量的组合并不一定产生训练误差最小。识别这两个输入变量的组合导致最低的错误,使用exhaustiveSearch搜索每一个组合。

input_index = exhaustiveSearch (2 trn_data val_data input_name);
火车15简称ANFIS模型,每个都有2输入选定的候选人从6…简称ANFIS模型1:汽缸Disp,错误:trn = 3.9320, val = 4.7920简称ANFIS模型2:油缸,错误:trn = 3.7364, val = 4.8683简称ANFIS模型3:汽缸重量,错误:trn = 3.8741, val = 4.6762简称ANFIS模型4:气缸加速者,错误:trn = 4.3287, val = 5.9625简称ANFIS模型5:气缸,错误:trn = 3.7129, val = 4.5946简称ANFIS模型6:Disp权力,错误:trn = 3.8087, val = 3.8594简称ANFIS模型7:Disp重量,错误:trn = 4.0271, val = 4.6352简称ANFIS模型8:Disp加速者,错误:trn = 4.0782, val = 4.4890简称ANFIS模型9:Disp,错误:trn = 2.9565, val = 3.3905简称ANFIS模型10:功率重量,错误:trn = 3.9310, val = 4.2967简称ANFIS模型11:加速者,错误:trn = 4.2740, val = 3.8738简称ANFIS模型12:权力,错误:trn = 3.3796, val = 3.3505简称ANFIS模型13:体重加速者,错误:trn = 4.0875, val = 4.0094简称ANFIS模型14:重量,错误:trn = 2.7657, val = 2.9954简称ANFIS模型15:加速者,错误:trn = 5.6242, val = 5.6481

图包含一个坐标轴对象。坐标轴对象与标题对应输入错误包含3线类型的对象。这些对象代表培训、验证。

的结果exhaustiveSearch表明,重量一年形成两个输入变量的最优组合。然而,训练和验证错误之间的差异大于单独或者变量的区别,表明包括多变量增加过度拟合。运行exhaustiveSearch组合的三个输入变量是否这些差异进一步增加模型的复杂性。

exhaustiveSearch (3 trn_data val_data input_name);
火车20简称ANFIS模型,每3输入选定的候选人从6…简称ANFIS模型1:汽缸Disp权力,错误:trn = 3.4446, val = 11.5329简称ANFIS模型2:汽缸Disp重量,错误:trn = 3.6686, val = 4.8926简称ANFIS模型3:缸Disp加速者,错误:trn = 3.6610, val = 5.2384简称ANFIS模型4:汽缸Disp,错误:trn = 2.5463, val = 4.9001简称ANFIS模型5:气缸功率重量,错误:trn = 3.4797, val = 9.3759简称ANFIS模型6:气缸加速者,错误:trn = 3.5432, val = 4.4804简称ANFIS模型7:气缸,错误:trn = 2.6300, val = 3.6300简称ANFIS模型8:汽缸体重加速者,错误:trn = 3.5708, val = 4.8379简称ANFIS模型9:汽缸重量,错误:trn = 2.4951, val = 4.0434简称ANFIS模型10:气缸加速者,错误:trn = 3.2698, val = 6.2616简称ANFIS模型11:Disp功率重量,错误:trn = 3.5879, val = 7.4951简称ANFIS模型12:Disp力量加速者,错误:trn = 3.5395, val = 3.9953简称ANFIS模型13:Disp权力,错误:trn = 2.4607, val = 3.3563简称ANFIS模型14:Disp体重加速者,错误:trn = 3.6075, val = 4.2323简称ANFIS模型15:Disp重量,错误:trn = 2.5617, val = 3.7858简称ANFIS模型16:Disp加速者,错误:trn = 2.4149, val = 3.2480简称ANFIS模型17:权力体重加速者,错误:trn = 3.7884, val = 4.0471简称ANFIS模型18:功率重量,错误:trn = 2.4371, val = 3.2830简称ANFIS模型19:力量加速者,错误:trn = 2.7276, val = 3.2580简称ANFIS模型20:体重加速者,错误:trn = 2.3603, val = 2.9152

图包含一个坐标轴对象。坐标轴对象与标题对应输入错误包含3线类型的对象。这些对象代表培训、验证。

这个图显示的结果选择三个输入框。的组合重量,一年,加速者产生最低的训练误差。然而,训练和验证错误并不显著低于最好的两个输入模型中,这表明新添加的变量加速者不改善预测。简单的模型通常概括更好,使用两个输入简称ANFIS进行进一步的探索。

提取选定的输入变量从最初的训练和验证数据集。

new_trn_data = trn_data (:, (input_index、大小(trn_data, 2)));new_val_data = val_data (:, (input_index、大小(val_data, 2)));

简称ANFIS训练模型

这个函数exhaustiveSearch火车每个简称ANFIS只有一个时代快速找到正确的输入。现在输入是固定的,你可以训练的简称ANFIS模型更多的时代。

使用genfis函数来生成一个初始FIS从训练数据,然后使用简称anfis微调。

in_fis = genfis (new_trn_data (: 1: end-1), new_trn_data(:,结束));anfisOpt = anfisOptions (“InitialFIS”in_fis,“EpochNumber”,100,“StepSizeDecreaseRate”,0.5,“StepSizeIncreaseRate”,1.5,“ValidationData”new_val_data,“DisplayANFISInformation”0,“DisplayErrorValues”0,“DisplayStepSize”0,“DisplayFinalResults”,0);[trn_out_fis, trn_error step_size、val_out_fis val_error] =简称anfis (new_trn_data anfisOpt);

简称anfis返回训练和验证错误。情节的培训和验证错误的培训过程。

[a, b] = min (val_error);trn_error情节(1:10 0,“g -”,val_error 1:10 0的r -,b,,“柯”)标题(的培训(绿色)和验证(红色)的误差曲线)包含(的数字时代)ylabel (“RMSE”)

图包含一个坐标轴对象。坐标轴对象与标题培训(绿色)和验证(红色)误差曲线包含3线类型的对象。

这图显示了100时代的简称ANFIS训练误差曲线。绿色曲线给出了训练误差和红色曲线给出了验证错误。最小验证错误发生在时代45,这是由一个圆圈表示。注意,验证误差曲线上升50时代后,进一步表明培训overfits数据和生产越来越糟糕的泛化。

简称ANFIS模型分析

首先,比较简称ANFIS模型的性能与使用各自的一个线性模型验证RMSE值。

简称ANFIS预测可以比较与线性回归模型通过比较各自的RMSE(均方根)值对验证数据。

%进行线性回归N =大小(trn_data, 1);= [trn_data(: 1:6)的(N - 1)];B = trn_data (: 7);系数= \ B;%从训练数据求出回归参数数控=大小(val_data, 1);A_ck = [val_data(: 1:6)的(数控,1)];B_ck = val_data (: 7);lr_rmse =规范(A_ck * coef-B_ck) /√(Nc);流(“对验证数据\ \ nRMSE nANFIS: % 1.3 f \ tLinear回归:% 1.3 f \ n ',一、lr_rmse);
简称ANFIS RMSE对验证数据:2.978线性回归:3.444

简称ANFIS模型验证RMSE较低,因此优于线性回归模型。

变量瓦尔_out_fis简称ANFIS模型的快照在训练过程中最小的验证错误。情节一个输出模型的表面。

val_out_fis.Inputs (1)。Name =“重量”;val_out_fis.Inputs (2)。Name =“年”;val_out_fis.Outputs (1)。Name =“英里”;gensurf (val_out_fis)

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象的表面。

输出表面非线性和单调,并说明如何简称ANFIS模型响应不同的值重量一年

表面显示,汽车制造在1978年或之后,更重的汽车更有效率。情节的数据分布看到任何输入数据中潜在的差距可能会导致这个违反直觉的结果。

情节(new_trn_data (: 1) new_trn_data (:, 2),“波”,new_val_data (: 1), new_val_data (:, 2),“处方”)包含(“重量”)ylabel (“年”)标题(的培训(o)和验证(x)数据”)

图包含一个坐标轴对象。坐标轴对象标题训练(o)和验证(x)数据包含2线类型的对象。

训练数据的缺乏更重的汽车制造在接下来的几年里会导致异常的结果。因为数据分布强烈影响预测精度,考虑到数据分布,当你解释简称ANFIS模型。

另请参阅

||

相关的话题