【问题标题】:How do i analyse scientific plots programmatically我如何以编程方式分析科学情节
【发布时间】:2017-12-16 06:40:45
【问题描述】:

我有一个包含一系列曲线的图表。我想知道哪条曲线最接近原点。

鉴于我有 csv 文件,我如何以有效的方式处理 CSV 文件以获得最接近原点的曲线。对于上面的图 AV1 是预期的输出。

【问题讨论】:

  • 目标是您添加一些自己的代码,以至少展示您为解决这个问题所做的研究工作。
  • @Cyrus 我的方法似乎太复杂了。最初我虽然可以按升序对大小(bpp)进行排序。然后我检查每个编解码器的模拟分数。分数最低的编解码器是离原点更近

标签: bash csv unix


【解决方案1】:

这些看起来像指数衰减曲线,形式为y = a * c^x

这意味着对数是一个线性函数:log y = log a + x * log c

也许使用“ssimulacra score”的对数线性回归模型来得到每条线的斜率和截距,并选择截距最小的线?

scikit learn 有一个易于使用的线性回归器:

http://scikit-learn.org/stable/modules/linear_model.html

您可以使用pandas轻松读取csv文件。

pip3 install scikit-learn pandas numpy

蟒蛇:

import pandas as pd
import numpy as np
from sklearn import linear_model
df = pd.read_csv('filename.csv')
X = df['bpp'].values
y = np.log(df['ssimulacra score'].values)
reg = linear_model.LinearRegression()
reg.fit(X, y)
intercept = reg.intercept_

获取每行的截距并返回截距最小的行。

【讨论】:

  • 我还记得你可以Find Points of Tangency and Normalcy on a Curve 然后简单地找到法线描述一条穿过原点的线的点并测量每个点的距离。 (您应该能够使用一种交互方法,该方法可以相当快地收敛到每组数据中的适当点)
猜你喜欢
  • 1970-01-01
  • 2012-08-05
  • 2010-12-28
  • 2019-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-08
相关资源
最近更新 更多