我正在使用多类分类器(支持向量机,通过One-Vs-All)来分类数据样本.假设我目前有n不同的课程.
但是,在我面临的场景中,新数据样本可能属于之前未见过的新类n+1.
所以我想你可以说我需要一种在线学习的形式,因为在开始时没有适合所有数据出现的明显训练集.相反,我需要SVM动态适应未来可能出现的新类.
所以我想知道我是否以及如何......
确定新数据样本不完全适合现有类,但应该导致创建新类.
将该新类集成到现有分类器中.
我可以模糊地想到一些可能解决这个问题的方法:
如果没有二进制SVM分类器(因为我在OVA情况下对每个类有一个)预测新数据样本的相当高的概率(例如> 0.5),我可以假设这个新数据样本可以代表新类.
我可以为该新类训练一个新的二进制分类器并将其添加到多类SVM中.
然而,这些只是我天真的想法.我想知道是否有一些"适当的"方法,例如使用聚类算法来查找所有类.
或许我尝试使用SVM的方法甚至不适合这种问题?
非常感谢帮助.
我正在使用PhantomJS 2来点击页面的元素.但是,我不知道点击这些元素是否会触发事件(例如页面加载).
我希望能够处理这两种情况:
当单击元素触发页面加载时,我想等到新页面加载完毕.
当点击不触发事件时,我希望能够识别出这一点(无需等待很长的超时).
在PhantomJS 1中,我可以简单地使用这样的闭包:
function click(page, elem, callback) {
var loading = false;
page.set('onLoadStarted', function() {
loading = true;
});
page.set('onLoadFinished', function() {
callback('click triggered page load');
});
triggerClick(page, elem);
setTimeout(function() {
if ( ! loading) {
callback('click did not trigger page load');
}
}, 100);
}
Run Code Online (Sandbox Code Playgroud)
在这里,我将关闭loading变量,该变量充当事件处理程序和函数之间的"通信通道" setTimeout.
如果单击触发页面加载,onLoadFinished处理程序将在加载页面后调用回调.
如果单击不触发页面加载,则函数setTimeout将在仅100ms后调用回调(这是可接受的).
此代码在PhantomJS 1下运行良好.
不幸的是,在PhantomJS 2下,for onLoadStarted和的事件处理程序onLoadFinished不再访问loading变量(即它们看起来不再像闭包一样工作).
所以现在我想知道如何在PhantomJS 2中实现相同的行为.任何想法?
PS:我知道我必须通过page.property(...) …
我正在尝试编写一个可以全局和嵌套方式使用的宏,如下所示:
;;; global:
(do-stuff 1)
;;; nested, within a "with-context" block:
(with-context {:foo :bar}
(do-stuff 2)
(do-stuff 3))
Run Code Online (Sandbox Code Playgroud)
当以嵌套方式使用时,do-stuff应该具有{:foo :bar}set by的权限with-context.
我已经能够像这样实现它:
(def ^:dynamic *ctx* nil)
(defmacro with-context [ctx & body]
`(binding [*ctx* ~ctx]
(do ~@body)))
(defmacro do-stuff [v]
`(if *ctx*
(println "within context" *ctx* ":" ~v)
(println "no context:" ~v)))
Run Code Online (Sandbox Code Playgroud)
但是,我一直在努力将if内部do-stuff从运行时转移到编译时,因为无论do-stuff是从体内调用with-context还是全局调用都是在编译时已经可用的信息.
不幸的是,我无法找到解决方案,因为嵌套宏似乎在多个"宏扩展运行"中得到扩展,因此扩展时不再可用*ctx*(如设置中with-context)的动态绑定do-stuff.所以这不起作用:
(def ^:dynamic *ctx* nil)
(defmacro with-context [ctx …Run Code Online (Sandbox Code Playgroud)