【问题标题】:Best way to automatically sort an unordered todo list? [closed]自动排序无序列表的最佳方法? [关闭]
【发布时间】:2016-06-27 10:05:44
【问题描述】:

我的最终目标是有一个脚本来处理基于紧迫性(到期天数)和重要性(1-10)的无序任务列表。这意味着只有一个框可以输入任务,如下所示:

(3) 支付电话费 [due:3d]

这意味着无需手动排序或按正确顺序放置每个任务。就改变事情而言,我所做的最多就是改变截止日期,或者已经在列表中的任务的重要性。

【问题讨论】:

  • 我将此问题标记为“过于宽泛”。我们对分数的含义一无所知,对此有无数可能的解决方案。
  • @TonyBabarino 我已编辑以包含来源。
  • 人们将其标记为过于宽泛,可能会评论他们认为的原因。

标签: python list sorting unordered


【解决方案1】:

您需要为每个来源提出正确的权重系数。

score = x * importance + y * urgency + z * location

您所了解的算法是关于如何根据真实的分类数据确定最佳系数。那叫Supervised Learning.


假设您有一个训练样本表:

[importance, urgency, location, score ] = [i,u,l,s]

分配的分数本身并不重要,但相对分数值应该代表您将做出的决定。您的解决方案的线性拟合将是:

a = [i, u, l] , a row vector of sources.

A= [a1  ; = [i1, u1, l1;
    a2  ;    i2, u2, l2;
    ... ;    ...;
    an  ]    in, un, ln]

所有源样本的矩阵,每行一个。

S= [s1;
    s2;
    ...
    sn]

带有分数样本的列向量。

然后就可以计算了

B=(A*A')^-1 A'* S

B 是具有最佳权重的数组 [x,y,z]。

  • A'是转置矩阵
  • (A*A')^-1 是方阵的逆
  • * 表示此上下文中的矩阵乘积。

使用数学软件或数学库进行矢量运算。 MATLAB/gnuOctave 是我的建议。 numpy 一个更丑陋的替代方案,它也可以工作。


如果您对它的工作原理感兴趣,请联系linear predictor,这是您不知道有关样品的任何额外信息时的最佳解决方案。

【讨论】:

  • 作为一个完全的菜鸟,有没有办法让我做到这一点无痛?不幸的是,这超出了我的范围。
  • 这看起来像是一个优先问题,只需获取一组样本,为每个案例分配一个分数和来源。这些是你的训练样本。然后进行线性拟合以找到最佳系数。 en.wikipedia.org/wiki/Linear_predictor_function
  • 你能给我一个例子吗?我讨厌索要讲义,但这是我和我的程序之间的大问题哈。而我唯一做不到的事情是没有讲义。
  • xvan,这似乎是另一个问题的好答案。看起来 OP 想要将三个分数合并为一个,所以你的第一段很好 - 我看不出 OP 如何需要矩阵数学和学习算法。
  • 如何得出正确的合并权重?机器学习就是关于如何选择最佳系数。我的答案在数学上是最优的,前提是您对该问题一无所知,并且您想要线性合并。
猜你喜欢
  • 2013-03-31
  • 2018-08-20
  • 1970-01-01
  • 2010-12-16
  • 1970-01-01
  • 1970-01-01
  • 2019-10-31
  • 2018-10-23
  • 1970-01-01
相关资源
最近更新 更多