小编use*_*316的帖子

在Python的scipy.cluster.hierarchy中将树形图与簇号匹配

以下代码生成一个包含10个叶节点的简单分层聚类树形图:

import scipy
import scipy.cluster.hierarchy as sch
import matplotlib.pylab as plt

X = scipy.randn(10,2)
d = sch.distance.pdist(X)
Z= sch.linkage(d,method='complete')
P =sch.dendrogram(Z)
plt.show()
Run Code Online (Sandbox Code Playgroud)

我生成三个扁平簇,如下所示:

T = sch.fcluster(Z, 3, 'maxclust')
# array([3, 1, 1, 2, 2, 2, 2, 2, 1, 2])
Run Code Online (Sandbox Code Playgroud)

但是,我想在树形图上看到簇标记1,2,3.我只用10个叶子节点和3个簇就可以很容易地进行可视化,但是当我有1000个节点和10个簇时,我看不到发生了什么.

如何在树形图上显示簇数?我对其他包裹持开放态度.谢谢.

hierarchical-clustering scipy python-2.7

11
推荐指数
1
解决办法
4723
查看次数

获取 mongoDB 中相邻文档之间的差异

如何使用javascript获取mongoDB中相邻记录之间的差异?例如,如果我的集合中有以下三个文档:

{
    "_id" : ObjectId("50ed90a55502684f440001ac"),
    "time" : ISODate("2013-02-13T15:45:41.148Z")
}

{
    "_id" : ObjectId("50ed90a55502684f440001ad"),
    "time" : ISODate("2013-02-13T15:45:42.148Z")
}

{
    "_id" : ObjectId("50ed90a55502684f440001ae"),
    "time" : ISODate("2013-02-13T15:45:45.148Z")
}
Run Code Online (Sandbox Code Playgroud)

我想取相邻值之间“时间”字段的差异来获取:

{
    "_id" : ObjectId("50ed90a55502684f440001ac"),
    "time" : ISODate("2013-02-13T15:45:41.148Z"),
    "time_difference" : null
}

{
    "_id" : ObjectId("50ed90a55502684f440001ad"),
    "time" : ISODate("2013-02-13T15:45:42.148Z"),
    "time_difference" : 1
}

{
    "_id" : ObjectId("50ed90a55502684f440001ae"),
    "time" : ISODate("2013-02-13T15:45:45.148Z"),
    "time_difference" : 3
}
Run Code Online (Sandbox Code Playgroud)

关于如何在 javascript/mongoDB 中有效地做到这一点有什么想法吗?谢谢。

javascript mongodb mongodb-query

5
推荐指数
2
解决办法
1983
查看次数

使用移动平均值或内核平滑来平滑二进制变量

我有以下形式的数据:

x      y
0      0
0.01   1
0.03   0
0.04   1
0.04   0
Run Code Online (Sandbox Code Playgroud)

x 从0到1是连续的并且不是等间隔的并且y是二进制的.

我想y用R 来平滑x轴,但是找不到合适的包.我发现的内核平滑函数产生的密度估计值x或将在x的末尾给出错误的估计值,因为它们将在小于0且大于1的区域上进行平均.

我也想避免线性平滑器,如Loess givens然后二进制形式y.我所见的移动平均函数假设等间距x值.

您是否知道任何可以平滑且理想情况下具有带宽选择程序的R功能?我可以写一个移动平均函数和交叉验证来确定带宽,但我更愿意找到一个经过审查的现有函数.

r smoothing

4
推荐指数
1
解决办法
1890
查看次数

随机森林分类器概率仅具有值0,0.1,0.2 ... 1

我正在尝试使用随机森林对我的数据进行分类,但是当我生成分类器概率时,它总是具有5个数字内的0,0.1,0.2,... 1之类的值.这是统计问题还是软件问题?我在Mac 10.7.5上的Python 2.7.3的scikit-learn ensemble中使用RandomForestClassifier.我的数据看起来像这样:

y   x1   x2   x3   x4...
0   23   4    0
1   102  2    0
1   12   17   1
Run Code Online (Sandbox Code Playgroud)

响应变量y是二进制的.有15个功能,都是实数或整数值,其中一些是二进制的.我有大约2000个训练点和500个测试.我将树的数量设置为500,将每个树的特征数量设置为8,并将其他所有内容的默认值设置为使用.训练模型后,我使用"predict_proba"函数生成概率,得到0.90000000000000002或0.10000000000000001等结果

我认为这个问题可能是由一个特定的变量引起的,所以我只用一个变量训练模型,一次重复五个变量.单独每个变量的概率具有正常值,如0.5532.当我一起使用两个变量时,会出现一些0.70000等值.当我使用更多变量时,我得到0.700000类型值的更大部分.

这是统计数据还是软件问题?Numpy通过了测试:numpy.test(),但是scipy.test()和sklearn.test()都失败了.我曾经使用sci-kit学习包,测试失败但没有这个问题.此外,我知道我应该修复软件包,但是我花了20个小时从源代码安装,然后是二进制软件包,然后阅读30多个网页,了解其他人如何安装软件包或者他们有什么错误.当他们说安装很容易时,我看不到他们测试包装.谢谢.

python scipy random-forest scikit-learn

4
推荐指数
1
解决办法
2090
查看次数