我是机器学习的新手,而对于我的第一个项目,我想写一个朴素的贝叶斯垃圾邮件过滤器.我想知道是否有任何公开的标记垃圾邮件/非垃圾邮件的培训集,最好是纯文本而不是关系数据库的转储(除非它们打印那些?).
我知道这种公开可用的数据库存在于其他类型的文本分类中,特别是新闻文章文本.我只是无法为电子邮件找到同样的东西.
我的问题的核心是"如何为学习问题设计内核函数?"
作为一个快速的背景,我正在阅读关于支持向量机和内核机器的书籍,我看到作者给出了内核的例子(多项式内核均匀和非均匀,高斯内核,以及基于文本的内核的暗示等等)但是,所有这些都提供了结果的图片而没有指定内核,或者模糊地宣称"可以构造一个有效的内核".我对为新问题设计内核时的过程感兴趣.
可能最简单的例子是学习XOR,这是一个嵌入真实平面的最小(4点)非线性数据集.如何能够提出一个自然(和非平凡)内核来线性分离这些数据?
作为一个更复杂的例子(参见Cristianini,SVM简介,图6.2),如何设计内核来学习棋盘图案?Cristianini声称图片是"使用高斯内核"得出的,但似乎他使用了多个,并且它们以未指定的方式组合和修改.
如果这个问题太宽泛而无法在这里回答,我会理解一个这样的内核函数的构造,尽管我更喜欢这个例子有点简单.
我从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的成员变量被称为备忘录(假设它不是一个尴尬的巧合)?
谢谢!
在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笔记本中,跳过输入单元格,并且它不会覆盖输入单元格,而是在它之后创建一个新的输入单元格.
这样会很好,但如果我第二次运行笔记本,它会创建另一个加载了相同文件的输入单元,这很烦人.我可以通过检查内容是否已经在下一个单元格中来加载一次吗?
我正在使用babel插件将环境变量从.env文件加载到React Native项目中,但是.env在导入它们的javascript文件发生更改之前,不会加载对文件的更改.我想要一种方法来告诉react-native packager在这个文件发生变化的情况下重新编译.我会接受一个答案:
.env)发生变化时,只需重新编译整个项目.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)重启节点打包器.这看起来很慢而且很笨拙,但我想看看它是否能奏效.
我还没有完全按照通用的方式工作,但我正在尝试各种各样的事情.
我想在Mathematica中实现它:
我意识到我可以使用ParametricPlot获取线条,然后使用Mesh选项填充颜色.谁能告诉我这些线方程的通用公式是什么?它是否适用于常规的n-gon?
我是节点的新手,但遇到了一个奇怪的问题.让我概述一下我的步骤:
fabric依赖项的项目,该项依赖项依赖于一个名为的旧包contextify.该项目还用于node-gyp安装附加组件.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,
~~~~~ ^
...
otmpl->SetAccessCheckCallbacks(GlobalPropertyNamedAccessCheck,提供了一些链接(node-gyp,fabric),这清楚地表明这是节点版本的已知问题.我有节点7.4,这需要节点6或更早.fabric这个项目实际上并没有使用,所以我删除了我的依赖项package.jsonnode_modules文件夹,然后npm install再次运行.同样的错误.现在出现了奇怪的部分:( npm install调用node-gyp rebuild)继续尝试构建上下文,尽管我可以证明它不再是项目中任何东西的依赖!
我尝试了什么:
npm config get cache(即rm -rf ~/.npm)node-gyp/usr/local/lib/node_modules这些似乎都不起作用.任何线索我可以做什么来阻止npm和node-gyp尝试安装这个包?我愿意完全吹掉我的node/npm/node-gyp设置并从头开始重新安装,但不太确定如何正确地做到这一点.
一位教授告诉我,如果在Windows 98中执行此操作,则在Python崩溃时除以零或取消负平方根.
这似乎很荒谬,因为Python是一种解释性语言,但我没有办法验证这一点,Windows也是臭名昭着的......任何人都可以确认或否认这种说法吗?如果是这样,它是否与Python用C语言编写的事实有关?(并且C会真正使整个操作系统崩溃,除以零!?)
我正在使用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)
我怎样才能做到这一点?
这可能是一个奇怪的问题,但在这里:
我有一个数值模拟.这不是一个特别长的计划,但有点冗长来解释它正在做什么.我运行模拟一千次并计算平均结果和方差,方差非常小,大约为10 ^( - 30).
但是,我注意到当我在python 3.3中运行程序时,事情变得奇怪了.参见Python 2.7和Python 3.2我每次都会得到相同的答案.相同的平均值,相同的微小差异.
但是当我在Python 3.3中运行它时,我每次都得到一个不同的答案.也就是说,不同的平均值和不同(但仍然很小)的差异.这是非常奇怪的,因为概率定律表明,如果方差实际上很小,就不会发生这种情况.所以我想知道,自3.2以来改变的3.3解释器到底发生了什么,这导致我的模拟变得疯狂?
以下是我想到的一些事情:
有没有人指出可能导致我的问题从3.2变为3.3的变化?
我正在阅读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) 我是D3.js的新手,我想使用图形布局.我有这个演示设置了一个非常简单的图形,遵循D3内置的力导向布局.
我想要做的是能够关闭图形布局算法(例如,当用户按下空格时),然后仍然能够拖动节点,并在以后重新打开力导向布局.
现在我设置它以在击中空间时停止力导向布局:
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)
我想我可能要做两件事:
我想知道以前是否已经完成这项工作,以及如何做到(根本不会使用我的猜测,如何做到这一点).
python ×6
javascript ×2
node.js ×2
python-3.x ×2
algorithm ×1
babeljs ×1
d3.js ×1
decorator ×1
drag ×1
force-layout ×1
geometry ×1
heroku ×1
json ×1
jupyter ×1
kernel ×1
line ×1
math ×1
node-gyp ×1
npm-install ×1
react-native ×1
recursion ×1
svm ×1
tkinter ×1
virtualenv ×1
windows ×1
wsgi ×1