作为表示知识网络和了解加权图的属性的简单模型,我计算了维基百科文章之间的余弦相似度。
我现在正在研究每篇文章的相似权重分布(见图片)。
在图片中,您会看到曲线在某个值(可能从指数值到线性)附近变化:我想拟合曲线并提取该值,其中衍生物可见(或预期)发生变化,这样我就可以分为两组相似的文章:“最相似”(门槛的左侧)和“其他”(门槛的右侧)。
我想为每篇文章发布拟合曲线;比较分配方面与所有文章的平均分布;比较分布方面与随机加权网络的分布。 (您的建议最受欢迎的是定义工作程序:您知道我希望将此模型用作玩具模型,然后训练网络或文章如何及时发展。)
我的背景是用户体验与数据科学的扭曲,我希望更好地理解哪个模型可以描述我观察到的值的分布,比较分布的正确方法,以及python工具(或Mathematica 11)以适应曲线并获得每个点的导数。
答案 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]