拟合曲线:用于描述加权知识图中分布的模型

时间:2017-08-18 13:25:22

标签: python neural-network wolfram-mathematica entropy model-fitting

作为表示知识网络和了解加权图的属性的简单模型,我计算了维基百科文章之间的余弦相似度。

我现在正在研究每篇文章的相似权重分布(见图片)。

在图片中,您会看到曲线在某个值(可能从指数值到线性)附近变化:我想拟合曲线并提取该值,其中衍生物可见(或预期)发生变化,这样我就可以分为两组相似的文章:“最相似”(门槛的左侧)和“其他”(门槛的右侧)。

我想为每篇文章发布拟合曲线;比较分配方面与所有文章的平均分布;比较分布方面与随机加权网络的分布。 (您的建议最受欢迎的是定义工作程序:您知道我希望将此模型用作玩具模型,然后训练网络或文章如何及时发展。)

我的背景是用户体验与数据科学的扭曲,我希望更好地理解哪个模型可以描述我观察到的值的分布,比较分布的正确方法,以及python工具(或Mathematica 11)以适应曲线并获得每个点的导数。

  • 您建议哪个模型描述加权网络中对象之间相似性的观察值的分布(这里,协作知识库表示为加权网络,其中权重是两个给定文章的相似值 - 我应该期待指数?泊松?为什么?)
  • 如何计算曲线拟合并在给定点提取曲线的导数(python或Mathematica 11)

enter image description here enter image description here

enter image description here enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

使用Mathematica,假设您的数据位于列表data中。然后,如果要查找最适合您数据的三次多项式,请使用Fit函数:

Fit[data, {1, x, x^2, x^3}, x]

通常,Fit命令的用法类似于

Fit["data set", "list of functions", "independent variable"] 

Mathematica试图将该列表中函数的线性组合与数据集相匹配。我不确定该怎么说我们希望期望这个数据最好的模型,但是请记住,任何平滑函数都可以通过具有足够多的多项式逼近任意精度条款。因此,如果你有足够的计算能力,那就让你的函数列表成为x的长列表。虽然看起来好像你在x=0有一个渐近线,所以也许允许在那里有一个1/x术语来捕获它。然后,您当然可以使用Plot在数据顶部绘制曲线,以便直观地比较它们。

现在,要将这个最佳拟合曲线作为Mathematica中的函数,您可以得到以下衍生物:

f[x_] := Fit[data, {1, x, x^2, x^3}, x]

然后,当二阶导数为零时,您所谈论的显而易见的变化发生,因此要得到x值:

NSolve[f''[x] == 0, x]