小编Art*_*ykh的帖子

可理解的聚类

我有一个数据集.该集合的每个元素由数字和分类变量组成.分类变量是名义上的和有序的.该数据集中有一些自然结构.通常,专家使用他们的"专家知识"对我的数据集进行聚类,但我希望自动化这个聚类过程.

大多数聚类算法使用对象之间的距离(Euclidean,Mahalanobdis等)将它们分组.但很难找到混合数据类型的一些合理指标,即我们找不到"玻璃"和"钢铁"之间的距离.所以我得出结论,我必须使用条件概率 P(feature = 'something' | Class)和一些依赖于它们的效用函数.对于分类变量是合理的,并且假设它们正常分布,它对数值变量很好.

所以我很清楚像K-means这样的算法不会产生好的结果.

这时我尝试使用COBWEB算法,这完全符合我使用条件概率的想法.但是我遇到了另一个障碍:如果不是不可能的话,聚类的结果很难解释.因此,我希望获得类似于描述每个聚类(例如if feature1 = 'a' and feature2 in [30, 60], it is cluster1)的一组规则,例如用于分类的决策树.

所以,我的问题是:

是否存在适用于混合数据类型的现有聚类算法,并产生可理解的(对于人类而言合理的)聚类描述.

附加信息:

据我所知,我的任务是在概念聚类领域.由于研究领域的原因,我不能像它所建议的那样定义一个相似性函数(它作为呐喊项目的最终目标) - 它在形式化方面非常复杂和无情.据我所知,最合理的方法是COBWEB中使用的方法,但我不确定如何调整它,所以我可以得到一个不可靠的集群描述.

决策树

正如建议的那样,我尝试在聚类输出上训练决策树,从而将聚类描述作为一组规则.但不幸的是,对这个规则的解释几乎和原始聚类输出一样难.根节点中只有少数第一级规则确实没有任何意义:更接近叶子 - 我们没有意义.其次,这些规则与任何专业知识都不相符.

所以,我得出的结论是聚类是一个黑盒子,不值得尝试解释它的结果.

我有一个有趣的想法是以某种方式修改"回归决策树"算法:而不是计算组内方差,计算类别效用函数并将其用作拆分标准.因此,我们应该有一个带有叶子集群和集群描述的决策树.但我没有尝试这样做,我不确定准确性和其他一切.

algorithm computer-science cluster-analysis machine-learning data-mining

14
推荐指数
1
解决办法
1872
查看次数

如何获取<img>标签的HTTP状态代码

我有一个页面,其中包含许多根据用户操作生成的服务器端图像.当图像加载成功时,我很高兴,但是当服务器上出现错误时,我必须根据发生的错误采取行动.

例如:

  • 500代码:做这个东西.
  • 503代码:做那些东西

等等.

所以,我的问题是:有没有办法在"img"标签的错误事件处理程序中获取状态代码?

javascript image http-status-codes

9
推荐指数
2
解决办法
1万
查看次数

Arel:从功能中选择

请考虑以下查询:

SELECT DATE_TRUNC('hour', date_range) 
FROM GENERATE_SERIES(:start_date, :end_date, :interval) as date_range
Run Code Online (Sandbox Code Playgroud)

是否可以GENERATE_SERIES(...)用作表(数据源)?理想情况下,它看起来像这样:

t = series(start, end, as: 'date_range')
dt = Arel::Nodes::NamedFunction.new('DATE_TRUNC', ['hour', t[:date_range]])
t.project(dt)
Run Code Online (Sandbox Code Playgroud)

Upd1.我为什么需要GENERATE_SERIES?我有一些数据需要处理这个数据可用的时间戳,并将其输出为2D图.作为一个简单的例子,考虑a clickstream=(id,created_at).我想绘制在特定日期之前针对给定日期时间网格(即Nov 17, Nov 18, Nov 19, ..., Nov 30)进行的多次点击.事情是我希望这一切都发生在PostgreSQL中.

Upd2.没有变量的示例查询可能如下所示:

SELECT DATE_TRUNC('hour', date_range) FROM GENERATE_SERIES('2015-01-01 00:15:38'::TIMESTAMP, '2015-01-10 23:59:59'::TIMESTAMP, '1 HOUR') as date_range;
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails arel

8
推荐指数
1
解决办法
1551
查看次数

切片numpy数组与所需行的列表

我有一个numpy 2d数组A和一个行号列表row_set.我如何获得新的数组B,如if row_set = [0, 2, 5],那么B = [A_row[0], A_row[2], A_row[5]]

我想到了这样的事情:

def slice_matrix(A, row_set):
    slice = array([row for row in A if row_num in row_set])
Run Code Online (Sandbox Code Playgroud)

但我不知道,我怎么能得到一个row_num.

python arrays numpy slice

6
推荐指数
2
解决办法
5597
查看次数

如何在Scala中引用内部类的外部对象

考虑这段代码(这是一种类型安全的单位):

abstract class UnitsZone {
   type ConcreteUnit <: AbstractUnit

   abstract class AbstractUnit(val qty: Int) {
     SOME_ABSTRACT_MEMBERS
     def +(that: ConcreteUnit): ConcreteUnit = POINT_OF_INTEREST.apply(this.qty + that.qty)
     def apply(param: Int) = SOME_IMPLEMENTATION
   }

   def apply(qty: Int): ConcreteUnit
}

object Imperial extends UnitsZone {
  type ConcreteUnit = Pound

  class Pound(override val qty: Int) extends AbstractUnit(qty) {
    CONCRETE_MEMBERS_HERE
  }

  def apply(qty: Int) = new Pound(qty)
}
Run Code Online (Sandbox Code Playgroud)

为了使整个事情有效,我需要调用apply外部对象的继承方法(在上面的代码中标记为POINT_OF_INTEREST).考虑到这一点,我敢问几个问题:

  1. 有什么办法吗?
  2. 如果有很多,每个人的利弊是什么?
  3. 如果您认为整件事情是错误的,那么您实施此类功能的正确方法是什么?

inheritance scala inner-classes abstract-type

3
推荐指数
1
解决办法
3222
查看次数