gaussianKde

语法

gaussianKde(X,[weights],[bwMethod="scott"])

详情

使用核密度估计方法中的高斯核来估计随机变量的概率密度。

生成的模型可以作为 gaussianKdePredict 函数的输入。

参数

X 数值向量、矩阵、元组或表类型,表示给定的数据集合。X 的每一行表示一个数据点,元素数量至少为 2(即数据点的维度至少为 2),各数据点的维度保持一致,且 X 的行数须大于列数。暂时不支持分布式表。

weights 数值向量类型,可选参数,表示每一个数据点的权重,默认每个数据点的权重相同。向量中数值必须非负且不全为0;且向量大小须和 X 的行数相同。

bwMethod 数值标量,字符串标量或函数名类型,可选参数,表示带宽的生成方式。默认值为”scott”。

  • 若传入数值标量,则表示带宽的大小。

  • 若传入字符串标量类型,可选值为”scott”和”silverman”。

  • 若传入函数,表示用于计算带宽的函数,其输入值为已传入的参数 X,执行后得到带宽的值。注意:返回值须为数值标量。

返回值

返回一个字典,字典的内容有:

  • X:浮点型向量或矩阵,表示输入的数据集合 X

  • cov:浮点型矩阵,表示的是通过 weightsX 和带宽生成的协方差矩阵的 cholesky 分解矩阵。

  • weights:浮点型向量,表示对应的权重。

  • predict:函数指针,表示对应的预测函数。其使用方法为 model.gaussianKdePredict(model,X),详情见 gaussianKdePredict。

  • bandwidth:浮点型标量,表示的生成的带宽。

例子

下例传入指定的 trainset.txt,使用高斯核估计来预测数据的概率密度。

trainData = loadText("trainset.txt"," ");
model = gaussianKde(trainData)
model
/* Output
X->
#0      #1     
0.1460  -0.1659
-1.3717 -1.6650
-1.6957 -1.1680
-0.7976 0.6081 
0.1088  2.5113 
-0.0724 -0.8210
-1.7548 -0.3485
1.1202  0.9004 
1.0234  0.7907 
-0.4256 0.7169 

predict->gaussianKdePredict
cov->
#0     #1    
0.7040 0.0   
0.4921 0.6700

weights->[0.1000,0.1000,0.1000,0.1000,0.1000,0.1000,0.1000,0.1000,0.1000,0.1000]
bandwidth->0.6812
*/

承接上例,传入 testset.txt 文件,gaussianKde 可与 gaussianKdePredict 函数结合使用,生成其对应的预测结果。

testData = loadText("testset.txt"," ");
model.predict(testData)
/* Output
->[0.0623,0.0730,0.0336,0.0030,0.0001,0.0552....]
*/

相关函数:gaussianKdePredict