1.数据的特征处理

1.1.特征处理是什么

通过特定的统计方法(数学方法)将数据转换成算法要求的数据

1.1.1.特征处理的方法

1.1.1.1特征处理方法

特征处理主要有以下几种方法:
数值型数据标准缩放
1、归一化
2、标准化
3、缺失值
类别型数据one-hot编码
时间类型时间的切分

1.1.1.2 数值型数据—归一化

1.1.1.2.1 归一化特点、公式等

数据归一化问题是数据挖掘中特征向量表达时的重要问题,当不同的特征成列在一起的时候,由于特征本身表达方式的原因而导致在绝对数值上的小数据被大数据“吃掉”的情况,这个时候我们需要做的就是对抽取出来的features vector进行归一化处理,以保证每个特征被分类器平等对待。

特点: 通过对原始数据进行变换把数据映射到某个区间之间(默认为[0,1])

注: 作用于每一列,max为一列的最大值,min为一列的最小值,那么X’’为最终结果,mx,mi分别为指定区间值默认mx为1,mi为0

例如:

1.1.1.2.2 归一化的目标

1、把数变为(0,1)之间的小数
主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速,应该归到数字信号处理范畴之内。

2、把有量纲表达式变为无量纲表达式
归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。 比如,复数阻抗可以归一化书写:Z = R + jωL = R(1 + jωL/R) ,复数部分变成了纯数量了,没有量纲。

另外,微波之中也就是电路分析、信号系统、电磁波传输等,有很多运算都可以如此处理,既保证了运算的便捷,又能凸现出物理量的本质含义。

1.1.1.2.3 归一化后有两个好处

1、提升模型的手敛速度
如下图,x1的取值为0-2000,而x2的取值为1-5,假如只有这两个特征,对其进行优化时,会得到一个窄长的椭圆形,导致在梯度下降时,梯度的方向为垂直等高线的方向而走之字形路线,这样会使迭代很慢,相比之下,右图的迭代就会很快(理解:也就是步长走多走少方向总是对的,不会走偏)

2.提升模型的精度
归一化的另一好处是提高精度,这在涉及到一些距离计算的算法时效果显著,比如算法要计算欧氏距离,上图中x2的取值范围比较小,涉及到距离计算时其对结果的影响远比x1带来的小,所以这就会造成精度的损失。所以归一化很有必要,他可以让各个特征对结果做出的贡献相同。

在多指标评价体系中,由于各评价指标的性质不同,通常具有不同的量纲和数量级。当各指标间的水平相差很大时,如果直接用原始指标值进行分析,就会突出数值较高的指标在综合分析中的作用,相对削弱数值水平较低指标的作用。因此,为了保证结果的可靠性,需要对原始指标数据进行标准化处理。

在数据分析之前,我们通常需要先将数据标准化(normalization),利用标准化后的数据进行数据分析。数据标准化也就是统计数据的指数化。数据标准化处理主要包括数据同趋化处理和无量纲化处理两个方面。数据同趋化处理主要解决不同性质数据问题,对不同性质指标直接加总不能正确反映不同作用力的综合结果,须先考虑改变逆指标数据性质,使所有指标对测评方案的作用力同趋化,再加总才能得出正确结果。数据无量纲化处理主要解决数据的可比性。经过上述标准化处理,原始数据均转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,可以进行综合测评分析。

从经验上说,归一化是让不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。

3.深度学习中数据归一化可以防止模型梯度爆炸

1.1.1.2.4 数据需要归一化的机器学习算法

需要归一化的模型:
有些模型在各个维度进行不均匀伸缩后,最优解与原来不等价,例如SVM(距离分界面远的也拉近了,支持向量变多?)。对于这样的模型,除非本来各维数据的分布范围就比较接近,否则必须进行标准化,以免模型参数被分布范围较大或较小的数据dominate。

有些模型在各个维度进行不均匀伸缩后,最优解与原来等价,例如logistic regression(因为θ的大小本来就自学习出不同的feature的重要性吧?)。对于这样的模型,是否标准化理论上不会改变最优解。但是,由于实际求解往往使用迭代算法,如果目标函数的形状太“扁”,迭代算法可能收敛得很慢甚至不收敛(模型结果不精确)。所以对于具有伸缩不变性的模型,最好也进行数据标准化。

有些模型/优化方法的效果会强烈地依赖于特征是否归一化,如LogisticReg,SVM,NeuralNetwork,SGD,PCA降维[PCA将原来高维的数据投影到某个低维的空间上并使得其方差尽量大。如果数据其中某一特征数值特别大,那么它在整个误差计算的比重上就很大,那么可以想象在投影到低维空间之后,为了使低秩分解逼近原数据,整个投影会去努力逼近最大的那一个特征,而忽略数值比较小的特征,这很可能导致了大量的信息缺失。此外,从计算的角度讲,因为PCA通常是数值近似分解,而非求特征值、奇异值得到解析解,所以当我们使用梯度下降等算法进行PCA的时候,归一化有利于梯度下降收敛]等。

不需要归一化的模型:
(0/1取值的特征通常不需要归一化,归一化会破坏它的稀疏性。)
有些模型则不受归一化影响,如DecisionTree。
ICA好像不需要归一化(因为独立成分如果归一化了就不独立了?)。
基于平方损失的最小二乘法OLS不需要归一化。

1.1.1.2.2 sklearn归一化API

sklearn归一化API:sklearn.preprocessing.MinMaxScaler

MinMaxScalar(feature_range=(0,1)...)- 每个特征缩放到给定范围(默认[0,1])MinMaxScalar.fit_transform(X)X:numpy array格式的数据[n_samples,n_features]返回值:转换后的形状相同的array
1.1.1.2.3 归一化步骤:

1、实例化MinMaxScalar
2、通过fit_transform转换

比如,将:

[[90,2,10,40],
[60,4,15,45],
[75,3,13,46]]所有列的中的值都转换到(2,3)之间
1.1.1.2.4 实现案例
from sklearn.preprocessing import MinMaxScalerdef mm():"""归一化处理,将最终每列的值都限定在(2,3)之间:return:"""mm = MinMaxScaler(feature_range=(2,3))data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])print(data)return Noneif __name__ == "__main__":mm()

输出结果为:

[[3.         2.         2.         2.        ][2.         3.         3.         2.83333333][2.5        2.5        2.6        3.        ]]
1.1.1.2.5 归一化案例:约会对象数据

相亲约会对象数据,这个样本时男士的数据,三个特征,玩游戏所消耗时间的百分比、每年获得的飞行常客里程数、每周消费的冰淇淋公升数。然后有一个 所属类别,被女士评价的三个类别,不喜欢didnt、魅力一般small、极具魅力large也许也就是说飞行里程数对于结算结果或者说相亲结果影响较大,**但是统计的人觉得这三个特征同等重要。

1.1.1.2.6 归一化总结

注意在特定场景下最大值最小值是变化的,另外,最大值与最小值非常容易受异常点影响,所以这种方法鲁棒性较差,只适合传统精确小数据场景

1.1.1.3 数值型数据—标准化

1.1.1.3.1 特点和公式

这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1

1、特点:通过对原始数据进行变换把数据变换到均值为0,方差为1范围内
2、公式:


1.1.1.3.2 结合归一化来谈标准化

对于归一化来说: 如果出现异常点,影响了最大值和最小值,那么结果显然会发生改变。
对于标准化来说: 如果出现异常点,由于有一定数据量,少量的异常点对于平均值的影响并不大,从而方差改变较小。

1.1.1.3.3 sklearn特征化API

sklearn特征化API: scikit-learn.preprocessing.StandardScaler
StandardScaler(…)
处理之后每列来说所有数据都聚集在均值0附近方差为1

StandardScaler.fit_transform(X,y)X:numpy array格式的数据[n_samples,n_features]返回值:转换后的形状相同的arrayStandardScaler.mean_原始数据中每列特征的平均值StandardScaler.std_原始数据每列特征的方差
1.1.1.3.4 标准化步骤

1、实例化StandardScaler
2、通过fit_transform转换
例如,要转化以下的矩阵:

[[ 1., -1., 3.],
[ 2., 4., 2.],
[ 4., 6., -1.]]

案例:

from sklearn.preprocessing import StandardScalerdef stand():"""标准化缩放:return:"""std = StandardScaler()data = std.fit_transform([[ 1., -1., 3.],[ 2., 4., 2.],[ 4., 6., -1.]])print(data)return Noneif __name__ == "__main__":stand()

输出结果为:

[[-1.06904497 -1.35873244  0.98058068][-0.26726124  0.33968311  0.39223227][ 1.33630621  1.01904933 -1.37281295]]

1.1.1.4 缺失值

1.1.1.4.1 机器学习缺失值处理方法汇总

原文链接:https://blog.csdn.net/w352986331qq/article/details/78639233

缺失值是指粗糙数据中由于缺少信息而造成的数据的聚类、分组、删失或截断。它指的是现有数据集中某个或某些属性的值是不完全的。缺失值的产生的原因多种多样,主要分为机械原因和人为原因。

机械原因是由于机械原因导致的数据收集或保存的失败造成的数据缺失,比如数据存储的失败,存储器损坏,机械故障导致某段时间数据未能收集(对于定时数据采集而言)。

人为原因是由于人的主观失误、历史局限或有意隐瞒造成的数据缺失,比如,在市场调查中被访人拒绝透露相关问题的答案,或者回答的问题是无效的,数据录入人员失误漏录了数据。
以下来讨论缺失值的一般处理方法:

1、删除

主要有简单删除法和权重法。简单删除法是对缺失值进行处理的最原始方法。

(1)简单删除法
此方法将存在缺失值的数据条目(对象,元组,记录)进行删除。这种方法简单易行,在对象有多个属性缺失值、被删除的含缺失值的对象与信息表中的数据量相比非常小的情况下是非常有效的。然而,这种方法却有很大的局限性。它是以减少历史数据来换取信息的完备,会造成资源的大量浪费,丢弃了大量隐藏在这些对象中的信息。在信息表中本来包含的对象很少的情况下,删除少量对象就足以严重影响到信息表信息的客观性和结果的正确性;当每个属性空值的百分比变化很大时,它的性能非常差。

(2)权重法
当缺失值的类型为非完全随机缺失的时候,可以通过对完整的数据加权来减小偏差。把数据不完全的个案标记后,将完整的数据个案赋予不同的权重,个案的权重可以通过logistic或probit回归求得。如果解释变量中存在对权重估计起决定行因素的变量,那么这种方法可以有效减小偏差。如果解释变量和权重并不相关,它并不能减小偏差。对于存在多个属性缺失的情况,就需要对不同属性的缺失组合赋不同的权重,这将大大增加计算的难度,降低预测的准确性,这时权重法并不理想。

2、填补

这类方法是用一定的值去填充空值,从而使信息表完备化。通常基于统计学原理,根据决策表中其余对象取值的分布情况来对一个空值进行填充,譬如用其余属性的平均值来进行补充等。数据挖掘中常用的有以下几种补齐方法:
(1)人工填写(filling manually)
由于最了解数据的还是用户自己,因此这个方法产生数据偏离最小,可能是填充效果最好的一种。然而一般来说,该方法很费时,当数据规模很大、空值很多的时候,该方法是不可行的。
(2) 特殊值填充(Treating Missing Attribute values as Special values)
将空值作为一种特殊的属性值来处理,它不同于其他的任何属性值。如所有的空值都用“unknown”填充。这样将形成另一个有趣的概念,可能导致严重的数据偏离,一般不推荐使用。
(3)均值填充(Mean/Mode Completer)
将信息表中的属性分为数值属性和非数值属性来分别进行处理。如果空值是数值型的,就根据该属性在其他所有对象的取值的平均值来填充该缺失的属性值;如果空值是非数值型的,就根据统计学中的众数原理,用该属性在其他所有对象的取值次数最多的值(即出现频率最高的值)来补齐该缺失的属性值。另外有一种与其相似的方法叫条件平均值填充法(Conditional Mean Completer)。在该方法中,缺失属性值的补齐同样是靠该属性在其他对象中的取值求平均得到,但不同的是用于求平均的值并不是从信息表所有对象中取,而是从与该对象具有相同决策属性值的对象中取得。这两种数据的补齐方法,其基本的出发点都是一样的,以最大概率可能的取值来补充缺失的属性值,只是在具体方法上有一点不同。与其他方法相比,它是用现存数据的多数信息来推测缺失值。
(4) 热卡填充(Hot deck imputation,或就近补齐)
对于一个包含空值的对象,热卡填充法在完整数据中找到一个与它最相似的对象,然后用这个相似对象的值来进行填充。不同的问题可能会选用不同的标准来对相似进行判定。该方法概念上很简单,且利用了数据间的关系来进行空值估计。这个方法的缺点在于难以定义相似标准,主观因素较多。
(5) 聚类填充(clustering imputation)
最为典型的代表是K最近距离邻法(K-means clustering),先根据欧式距离或相关分析来确定距离具有缺失数据样本最近的K个样本,将这K个值加权平均来估计该样本的缺失数据。同均值插补的方法都属于单值插补,不同的是,它用层次聚类模型预测缺失变量的类型,再以该类型的均值插补。假设X=(X1,X2…Xp)为信息完全的变量,Y为存在缺失值的变量,那么首先对X或其子集行聚类,然后按缺失个案所属类来插补不同类的均值。如果在以后统计分析中还需以引入的解释变量和Y做分析,那么这种插补方法将在模型中引入自相关,给分析造成障碍。

(6) 使用所有可能的值填充(Assigning All Possible values of the Attribute)
这种方法是用空缺属性值的所有可能的属性取值来填充,能够得到较好的补齐效果。但是,当数据量很大或者遗漏的属性值较多时,其计算的代价很大,可能的测试方案很多。另有一种方法,填补遗漏属性值的原则是一样的,不同的只是从决策相同的对象中尝试所有的属性值的可能情况,而不是根据信息表中所有对象进行尝试,这样能够在一定程度上减小原方法的代价。

(7) 组合完整化方法(Combinatorial Completer)
这种方法是用空缺属性值的所有可能的属性取值来试,并从最终属性的约简结果中选择最好的一个作为填补的属性值。这是以约简为目的的数据补齐方法,能够得到好的约简结果;但是,当数据量很大或者遗漏的属性值较多时,其计算的代价很大。另一种称为条件组合完整化方法(Conditional Combinatorial Complete),填补遗漏属性值的原则是一样的,不同的只是从决策相同的对象中尝试所有的属性值的可能情况,而不是根据信息表中所有对象进行尝试。条件组合完整化方法能够在一定程度上减小组合完整化方法的代价。在信息表包含不完整数据较多的情况下,可能的测试方案将巨增。
(8) 回归(Regression)
基于完整的数据集,建立回归方程(模型)。对于包含空值的对象,将已知属性值代入方程来估计未知属性值,以此估计值来进行填充。当变量不是线性相关或预测变量高度相关时会导致有偏差的估计。
(9) 极大似然估计(Max Likelihood ,ML)
在缺失类型为随机缺失的条件下,假设模型对于完整的样本是正确的,那么通过观测数据的边际分布可以对未知参数进行极大似然估计(Little and Rubin)。这种方法也被称为忽略缺失值的极大似然估计,对于极大似然的参数估计实际中常采用的计算方法是期望值最大化(Expectation Maximization,EM)。该方法比删除个案和单值插补更有吸引力,它一个重要前提:适用于大样本。有效样本的数量足够以保证ML估计值是渐近无偏的并服从正态分布。但是这种方法可能会陷入局部极值,收敛速度也不是很快,并且计算很复杂。
(10) 多重插补(Multiple Imputation,MI)
多值插补的思想来源于贝叶斯估计,认为待插补的值是随机的,它的值来自于已观测到的值。具体实践上通常是估计出待插补的值,然后再加上不同的噪声,形成多组可选插补值。根据某种选择依据,选取最合适的插补值。多重插补方法分为三个步骤:①为每个空值产生一套可能的插补值,这些值反映了无响应模型的不确定性;每个值都可以被用来插补数据集中的缺失值,产生若干个完整数据集合。②每个插补数据集合都用针对完整数据集的统计方法进行统计分析。③对来自各个插补数据集的结果,根据评分函数进行选择,产生最终的插补值。
多重插补和贝叶斯估计的思想是一致的,但是多重插补弥补了贝叶斯估计的几个不足。第一,贝叶斯估计以极大似然的方法估计,极大似然的方法要求模型的形式必须准确,如果参数形式不正确,将得到错误得结论,即先验分布将影响后验分布的准确性。而多重插补所依据的是大样本渐近完整的数据的理论,在数据挖掘中的数据量都很大,先验分布将极小的影响结果,所以先验分布的对结果的影响不大。第二,贝叶斯估计仅要求知道未知参数的先验分布,没有利用与参数的关系。而多重插补对参数的联合分布作出了估计,利用了参数间的相互关系。
同时,多重插补保持了单一插补的两个基本优点,即应用完全数据分析方法和融合数据收集者知识的能力。相对于单一插补,多重插补有三个极其重要的优点:第一,为表现数据分布,随机抽取进行插补,增加了估计的有效性。第二,当多重插补是在某个模型下的随机抽样时,按一种直接方式简单融合完全数据推断得出有效推断,即它反映了在该模型下由缺失值导致的附加变异。第三,在多个模型下通过随机抽取进行插补,简单地应用完全数据方法,可以对无回答的不同模型下推断的敏感性进行直接研究。
多重插补也有以下缺点:①生成多重插补比单一插补需要更多工作;②贮存多重插补数据集需要更多存储空间;③分析多重插补数据集比单一插补需要花费更多精力。

不处理

直接在包含空值的数据上进行数据挖掘。这类方法包括贝叶斯网络和人工神经网络等。
贝叶斯网络是用来表示变量间连接概率的图形模式,它提供了一种自然的表示因果信息的方法,用来发现数据间的潜在关系。在这个网络中,用节点表示变量,有向边表示变量间的依赖关系。贝叶斯网络仅适合于对领域知识具有一定了解的情况,至少对变量间的依赖关系较清楚的情况。否则直接从数据中学习贝叶斯网的结构不但复杂性较高(随着变量的增加,指数级增加),网络维护代价昂贵,而且它的估计参数较多,为系统带来了高方差,影响了它的预测精度。当在任何一个对象中的缺失值数量很大时,存在指数爆炸的危险。
人工神经网络可以有效的对付空值,但人工神经网络在这方面的研究还有待进一步深入展开。人工神经网络方法在数据挖掘应用中的局限性

总结

部分方法的优缺点及适用环境如下:
以上插补方法,对于缺失值的类型为随机缺失的插补有很好的效果。两种均值插补方法是最容易实现的,也是以前人们经常使用的,但是它对样本存在极大的干扰,尤其是当插补后的值作为解释变量进行回归时,参数的估计值与真实值的偏差很大。相比较而言,极大似然估计和多重插补是两种比较好的插补方法,与多重插补对比,极大似然缺少不确定成分,所以越来越多的人倾向于使用多值插补方法。

1.1.1.4.2 sklearn特征处理API

sklearn缺失值API: sklearn.preprocessing.Imputer
Imputer语法

Imputer(missing_values='NaN', strategy='mean', axis=0)
完成缺失值插补Imputer.fit_transform(X,y)
X:numpy array格式的数据[n_samples,n_features]
返回值:转换后的形状相同的array
1.1.1.4.3 Imputer流程

1、初始化Imputer,指定**“缺失值”,指定填补策略**,指定行或列
注:缺失值也可以是别的指定要替换的值
2、调用fit_transform

例如要处理下面的缺失值:

[[1, 2],
[np.nan, 3],
[7, 6]]

案例:

from sklearn.preprocessing import Imputer
import numpy as npdef im():"""缺失值处理"""# NaN,Nanim = Imputer(missing_values='NaN',strategy='mean',axis=0)data = im.fit_transform([[1,2],[np.nan,3],[7,6]])print(data)return Noneif __name__ == "__main__":im()

输出结果:

[[1. 2.][4. 3.][7. 6.]]
1.1.1.4.4 关于np.nan(np.NaN)

1、numpy的数组中可以使用np.nan/np.NaN来代替缺失值,属于float类型
2、如果是文件中的一些缺失值,可以替换成nan,通过np.array转化成float型的数组即可

05_数据的特征处理,归一化,标准化、缺失值处理,以及案例,使用场景,处理办法等相关推荐

  1. 机器学习-特征处理/归一化/标准化/降维03

    归一化 from sklearn.preprocessing import MinMaxScaler def mm(): # 归一化处理mm = MinMaxScaler()data = mm.fit ...

  2. 标准化,归一化,二值化,One-Hot,卡方检验选取重要特征,主成分分析,缺失值和异常值处理

    1.特征处理 1.标准化处理 导入包 from sklearn.preprocessing import StandardScaler from sklearn.datasets import loa ...

  3. EOF-DataScience:数据预处理/特征工程之线性变换—四种特征缩放Scaling算法简介、标准化standardization、归一化Normalization的概述与区别

    DataScience:数据预处理/特征工程之线性变换-四种特征缩放Scaling算法简介.标准化standardization.归一化Normalization的概述与区别 目录 数据处理中常见的四 ...

  4. 解读:为什么要做特征归一化/标准化?

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:shine-lee,编辑:极市平台 本文解读了一项数据预处理中的重 ...

  5. 数据的规范化,归一化,标准化,正则化

    原文地址:数据的规范化,归一化,标准化,正则化作者:打湿井盖 数据的规范化,归一化,标准化,正则化,这几个破词整得我头晕,首先这些词就没规范好,对数据做实验更晕,网上狂搜一阵后,发现数据归一化,标准化 ...

  6. 【机器学习】 - 数据预处理之数据归一化(标准化)与实战分析,正则化

    一.为什么要进行数据归一化 定义:把所有数据的特征都归到 [0,1] 之间 或  均值0方差1 的过程. 原则:样本的所有特征,在特征空间中,对样本的距离产生的影响是同级的: 问题:特征数字化后,由于 ...

  7. 数据预处理之归一化/标准化/正则化/零均值化

    数据预处理之归一化/标准化/正则化/零均值化 一.标准化(Standardization) 二.归一化(Normalization) 三,中心化/零均值化 (Zero-centered) 四.正则化 ...

  8. 数据预处理——归一化标准化

    数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间. 去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权 最典型的就是数据的归 ...

  9. 为什么要做特征归一化/标准化?

    作者:shine-lee 来源:极市平台公众号 链接:https://blog.csdn.net/blogshinelee/article/details/102875044 编辑:王萌(深度学习冲鸭 ...

最新文章

  1. C语言实现常用数据结构——队列
  2. 算法练习day10——190328(根据指定值划分单链表、复制含有rand指针节点的链表、两个单链表相交)
  3. nginx解决浏览器跨域问题_前端通过Nginx反向代理解决跨域问题
  4. 虚拟的有时比真实的还要好(+奥运杂谈)
  5. python php ajax赔率,Ajax如何调用python脚本
  6. mysql创建的是拉丁_mysql 拉丁1 转换成 utf8
  7. Linux文件系统之inode与软硬连接
  8. 64位电脑 装32位oracle,64位Windows可以安装32位的Oracle吗
  9. 【bzoj3676】
  10. Base64编码工具类
  11. 如何用photoshop做24色环_色相环:用PS做色相环教程
  12. OpenCV 调整图像亮度与对比度
  13. BouncyCastle库
  14. Python将pdf转为png
  15. 软考中级软件设计笔记
  16. 使用 DrMemory 详细教程
  17. 半钧先生:分享一波超赞的冬至文案,句句暖到心!
  18. 阿里云服务器 smtpClient发送邮件问题
  19. iframe 去除边框和自适应高度
  20. PostgreSQL 11 1000亿 tpcb、1000W tpcc 性能测试 - on 阿里云ECS + ESSD (含quorum based 0丢失多副本配置与性能测试)...

热门文章

  1. 【Python】函数递归实例之字符串反转、汉诺塔问题分析
  2. 业务总结001:优惠券与礼包活动
  3. wxWidgets:wxRadioButton类用法
  4. wxWidgets:wxColourPickerEvent类用法
  5. wxWidgets:支持国际化
  6. boost::pfr::get相关的测试程序
  7. boost::hana::ap用法的测试程序
  8. boost::hof::apply_eval用法的测试程序
  9. boost::graph模块实现dijkstra算法的测试程序
  10. boost::function_types::result_type用法的测试程序