小编Jer*_*Kun的帖子

公开可用的垃圾邮件过滤器培训集

我是机器学习的新手,而对于我的第一个项目,我想写一个朴素的贝叶斯垃圾邮件过滤器.我想知道是否有任何公开的标记垃圾邮件/非垃圾邮件的培训集,最好是纯文本而不是关系数据库的转储(除非它们打印那些?).

我知道这种公开可用的数据库存在于其他类型的文本分类中,特别是新闻文章文本.我只是无法为电子邮件找到同样的东西.

machine-learning spam-prevention training-data

39
推荐指数
4
解决办法
5万
查看次数

为支持向量机(XOR)设计内核

我的问题的核心是"如何为学习问题设计内核函数?"

作为一个快速的背景,我正在阅读关于支持向量机和内核机器的书籍,我看到作者给出了内核的例子(多项式内核均匀和非均匀,高斯内核,以及基于文本的内核的暗示等等)但是,所有这些都提供了结果的图片而没有指定内核,或者模糊地宣称"可以构造一个有效的内核".我对为新问题设计内核时的过程感兴趣.

可能最简单的例子是学习XOR,这是一个嵌入真实平面的最小(4点)非线性数据集.如何能够提出一个自然(和非平凡)内核来线性分离这些数据?

作为一个更复杂的例子(参见Cristianini,SVM简介,图6.2),如何设计内核来学习棋盘图案?Cristianini声称图片是"使用高斯内核"得出的,但似乎他使用了多个,并且它们以未指定的方式组合和修改.

如果这个问题太宽泛而无法在这里回答,我会理解一个这样的内核函数的构造,尽管我更喜欢这个例子有点简单.

kernel machine-learning svm

21
推荐指数
2
解决办法
8027
查看次数

Chazelle的三角剖分算法的实现

由于Chazelle(1991),有一种用于在线性时间内多边形进行三角测量算法,但是,AFAIK,在一般的数学软件库中没有他的算法的任何标准实现.

有谁知道这样的实现?

algorithm computational-geometry chazelle-algorithm

13
推荐指数
1
解决办法
4327
查看次数

为什么这个python函数中的一行必要?(memoized递归)

我从Peter Norvig的网站上获得了以下代码片段; 它是一个装饰器,用于在函数调用上启用memoization(缓存对函数的先前调用,以将指数递归更改为简单的动态程序).

def memo(f):
    table = {}
    def fmemo(*args):
        if args not in table:
            table[args] = f(*args)
        return table[args]
    fmemo.memo = table
    return fmemo
Run Code Online (Sandbox Code Playgroud)

代码工作正常,但我想知道为什么倒数第二行是必要的.这显然是我对Python知识的一个空白,但删除线和运行简单的fibonacci函数,它似乎仍然有效.这是否与同时记忆多个功能有关?为什么fmemo的成员变量被称为备忘录(假设它不是一个尴尬的巧合)?

谢谢!

python recursion decorator

12
推荐指数
1
解决办法
541
查看次数

Jupyter:编写一个自定义魔法,修改其所在单元格的内容

在Jupyter笔记本中,有一些内置的魔法可以改变笔记本电脑的内容.例如,%load魔术用文件系统上的文件内容替换当前单元格的内容.

如何编写一个类似的自定义魔术命令?

到目前为止我所做的东西都是stdout

def tutorial_asset(line):
    print('hello world')


def load_ipython_extension(ipython):
    ipython.register_magic_function(tutorial_asset, 'line')
Run Code Online (Sandbox Code Playgroud)

我可以加载它%load_ext tutorial_asset.但是从那里我迷失了.

[编辑]:

我找到了一种方法来访问交互式shell实例:

  @magics_class
  class MyMagics(Magics):

      @line_magic
      def tutorial_asset(self, parameters):
          self.shell
Run Code Online (Sandbox Code Playgroud)

self.shell对象似乎可以完全访问笔记本中的单元格集,但我能找到修改单元格的唯一方法就是这样做self.shell.set_next_input('print("hello world")').这是不够的,因为在Jupyter笔记本中,跳过输入单元格,并且它不会覆盖输入单元格,而是在它之后创建一个新的输入单元格.

这样会很好,但如果我第二次运行笔记本,它会创建另一个加载了相同文件的输入单元,这很烦人.我可以通过检查内容是否已经在下一个单元格中来加载一次吗?

python ipython-notebook jupyter jupyter-notebook

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

告诉react-native packager观看非javascript文件

我正在使用babel插件将环境变量从.env文件加载到React Native项目中,但是.env在导入它们的javascript文件发生更改之前,不会加载对文件的更改.我想要一种方法来告诉react-native packager在这个文件发生变化的情况下重新编译.我会接受一个答案:

  1. 当特定文件(.env)发生变化时,只需重新编译整个项目.
  2. 比如说,只重新转换那些包含特定字符串的文件 foo

有没有一种简单的方法来编写插件/中间件?也许是一个单独的后台脚本,它会向反派原生包装器正在监听的守望者发起事件?

[编辑回复评论]

我的当前.babelrc是以下内容,babel-plugin-react-native-config我写的一个插件与react-native-config包一起进行热变量交换.

{
  "presets": [
    "react-native"
  ],
  "plugins": [
     ["babel-plugin-espower", {
       "sourceRoot": "./App"
     }],
     "transform-flow-strip-types"
  ],
  "env": {
    "production": {
      "plugins": [
        "babel-plugin-unassert",
      ]
    },
    "development": {
      "plugins": [
        ["babel-plugin-react-native-config", { envfile: ".env" }]
      ]
    }
  }  
}
Run Code Online (Sandbox Code Playgroud)

问题是react-native packager只监视javascript文件.我不认为改变我的babel配置会有所帮助,除非babel可以某种方式向上反应本地或守望者通知它某些文件需要重新编译...

[编辑2]

我确定react-native packager使用watchman来观看文件.例如,当我watchman watch-list在启动打包机之后(以及在做完之后watchman watch-del-all),我得到了

{
    "version": "4.6.0",
    "roots": [
        "/path/to/my/project"
    ]
}
Run Code Online (Sandbox Code Playgroud)

此外,当我在打包器运行时删除这个手表时,没有任何反应(从它的角度来看,js没有改变,因为它没有收到任何更新),但是当我重新启动打包器时它会重新创建这个手表并转换所有内容.

所以看来,除非有更好的方法,否则我必须创建一个守望者触发器(1)杀死react-packager(2)杀死我的app目录上的监视(3)重启节点打包器.这看起来很慢而且很笨拙,但我想看看它是否能奏效.

我还没有完全按照通用的方式工作,但我正在尝试各种各样的事情.

javascript node.js babeljs react-native

10
推荐指数
1
解决办法
1271
查看次数

Mathematica中五角大楼的双曲矩阵

我想在Mathematica中实现它:在此输入图像描述

我意识到我可以使用ParametricPlot获取线条,然后使用Mesh选项填充颜色.谁能告诉我这些线方程的通用公式是什么?它是否适用于常规的n-gon?

math geometry wolfram-mathematica line

7
推荐指数
1
解决办法
752
查看次数

node-gyp尝试在从package.json中删除它之后构建依赖项

我是节点的新手,但遇到了一个奇怪的问题.让我概述一下我的步骤:

  1. 安装一个具有fabric依赖项的项目,该项依赖项依赖于一个名为的旧包contextify.该项目还用于node-gyp安装附加组件.
  2. 运行npm install,失败的原因是:
contextify@0.1.15 install /path/to/project/node_modules/contextify
node-gyp rebuild

  CXX(target) Release/obj.target/contextify/src/contextify.o
....
../src/contextify.cc:150:16: error: no member named  'SetAccessCheckCallbacks' in 'v8::ObjectTemplate'
        otmpl->SetAccessCheckCallbacks(GlobalPropertyNamedAccessCheck,
        ~~~~~  ^
...
  1. 谷歌搜索otmpl->SetAccessCheckCallbacks(GlobalPropertyNamedAccessCheck,提供了一些链接(node-gyp,fabric),这清楚地表明这是节点版本的已知问题.我有节点7.4,这需要节点6或更早.
  2. 我意识到fabric这个项目实际上并没有使用,所以我删除了我的依赖项package.json
  3. 我删除了我的node_modules文件夹,然后npm install再次运行.同样的错误.

现在出现了奇怪的部分:( npm install调用node-gyp rebuild)继续尝试构建上下文,尽管我可以证明它不再是项目中任何东西的依赖!

我尝试了什么:

  • 删除我的节点缓存,作为输出npm config get cache(即rm -rf ~/.npm)
  • 卸载并重新安装 node-gyp
  • 试图寻找这个包可能潜伏在一些半安装状态的地方,例如 /usr/local/lib/node_modules

这些似乎都不起作用.任何线索我可以做什么来阻止npmnode-gyp尝试安装这个包?我愿意完全吹掉我的node/npm/node-gyp设置并从头开始重新安装,但不太确定如何正确地做到这一点.

json node.js node-gyp npm-install

6
推荐指数
1
解决办法
1020
查看次数

在Python中划分为零崩溃Windows 98,等?

一位教授告诉我,如果在Windows 98中执行此操作,则在Python崩溃时除以零或取消负平方根.

这似乎很荒谬,因为Python是一种解释性语言,但我没有办法验证这一点,Windows也是臭名昭着的......任何人都可以确认或否认这种说法吗?如果是这样,它是否与Python用C语言编写的事实有关?(并且C会真正使整个操作系统崩溃,除以零!?)

python windows

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

如何突出显示文本小部件的当前行?

我正在使用Python中的一个简单的GUI代码编辑器,我想让光标所在的文本行始终突出显示.

现在,我的TextEditor班级看起来像:

class TextEditor:

   def __init__(self, container):
      self.scrollbar = Scrollbar(container)
      self.scrollbar.pack(side=RIGHT, fill=Y)

      self.textbox = Text(container, height=40, undo=True, width=80,
                          font=tkFont.Font(family="Consolas", size=12))
      self.textbox.pack(side=LEFT)

      self.textbox.config(yscrollcommand=self.scrollbar.set)
      self.scrollbar.config(command=self.textbox.yview)
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

python user-interface tkinter python-3.x

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

数值模拟在Python 3.2和3.3中给出了不同的结果

这可能是一个奇怪的问题,但在这里:

我有一个数值模拟.这不是一个特别长的计划,但有点冗长来解释它正在做什么.我运行模拟一千次并计算平均结果和方差,方差非常小,大约为10 ^( - 30).

但是,我注意到当我在python 3.3中运行程序时,事情变得奇怪了.参见Python 2.7和Python 3.2我每次都会得到相同的答案.相同的平均值,相同的微小差异.

但是当我在Python 3.3中运行它时,我每次都得到一个不同的答案.也就是说,不同的平均值和不同(但仍然很小)的差异.这是非常奇怪的,因为概率定律表明,如果方差实际上很小,就不会发生这种情况.所以我想知道,自3.2以来改变的3.3解释器到底发生了什么,这导致我的模拟变得疯狂?

以下是我想到的一些事情:

  • 在我的Python版本中,我可能有一个奇怪的32位/ 64位差异,但我没有检查过它们都运行64位.
  • 我可能在float/int转换中有一些错误,但是这将在Python 3.2中处理,因为它们在适当的时候使得除法返回浮点数,因此3.2和3.3结果应该是相同的.
  • 我的模拟被表示为生成器,因此可能在3.3中使用生成器进行了更改,但我无法分辨它是什么.
  • 我不知道数值浮点表示有一些变化.
  • 其中一个函数中存在一些潜在的变化,其结果是"未确定的",这会影响我的算法的初始条件.例如,在我的代码中的某处,我使用"list(table.keys())命令我的数据列最初是一个字典",并且列表决定如何从3.2到3.3排序字典键可能有所改变.但如果是这种情况,那么代码应该每次都做同样的事情,但事实并非如此(故意使列表的排序随机化似乎很奇怪!).

有没有人指出可能导致我的问题从3.2变为3.3的变化?

python numerical-methods python-3.x

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

在heroku python教程中,virtualenv发布安装wsgiref(ez_setup语法错误?)

我正在阅读Heroku教程"Python入门".我正处于我想用virtualenv在本地构建我的环境的步骤,所以我可以在本地运行测试应用程序.requirements.txt包括

wsgiref==0.1.2
Run Code Online (Sandbox Code Playgroud)

到达那一步virutalenv输出以下错误信息

Downloading/unpacking wsgiref==0.1.2 (from -r requirements.txt (line 8))
  Downloading wsgiref-0.1.2.zip
  Running setup.py egg_info for package wsgiref
    Traceback (most recent call last):
      File "<string>", line 16, in <module>
      File "/private/var/folders/v6/zf84tlbn19zcqlbx977nlrmh0000gn/T/pip_build_jeremy/wsgiref/setup.py", line 5, in <module>
        import ez_setup
      File "./ez_setup/__init__.py", line 170
        print "Setuptools version",version,"or greater has been installed."
                                 ^
    SyntaxError: invalid syntax
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):

  File "<string>", line 16, in <module>

  File "/private/var/folders/v6/zf84tlbn19zcqlbx977nlrmh0000gn/T/pip_build_jeremy/wsgiref/setup.py", line 5, in <module>

    import ez_setup

  File "./ez_setup/__init__.py", …
Run Code Online (Sandbox Code Playgroud)

python wsgi heroku virtualenv

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

使用强制定向布局理解D3.js中的"调用"

我是D3.js的新手,我想使用图形布局.我有这个演示设置了一个非常简单的图形,遵循D3内置的力导向布局.

http://jsfiddle.net/ewG95/

我想要做的是能够关闭图形布局算法(例如,当用户按下空格时),然后仍然能够拖动节点,并在以后重新打开力导向布局.

现在我设置它以在击中空间时停止力导向布局:

d3.select("body")
   .on("keydown", function() { 
     if (d3.event.keyCode == 32) { 
        if (forceActive) {force.stop();} else {force.resume();} 
     } 
   });
Run Code Online (Sandbox Code Playgroud)

问题是每次拖动节点时都会重新启动force-layout.我已经将它缩小到(基本上)节点上的调用方法绑定到强制布局的拖动方法.

即这段链接代码:

var node = svg.selectAll(".node")
     .data(graph.nodes)
   .enter().append("circle")
     ...
     .call(force.drag);
Run Code Online (Sandbox Code Playgroud)

我想我可能要做两件事:

  1. 编写自定义"拖动"方法,移动节点和与单个节点关联的边.
  2. 根据需要将节点的调用方法重新绑定(这是否有意义?是否会替换绑定的方法?force.drag实际上做了什么?).

我想知道以前是否已经完成这项工作,以及如何做到(根本不会使用我的猜测,如何做到这一点).

javascript drag d3.js force-layout

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