小编Mic*_*ina的帖子

sklearn中的SVM是否支持增量(在线)学习?

我目前正在设计文本文章的推荐系统("有趣"或"不感兴趣"的二进制案例).我的一个规格是它应该不断更新以适应不断变化的趋势.

据我所知,最好的方法是利用支持增量/ 在线学习的机器学习算法.

像Perceptron和Winnow这样的算法支持在线学习,但我不完全确定支持向量机.scikit-learn python库是否支持在线学习?如果是,支持向量机是否可以使用它的算法之一?

我显然没有完全依赖于使用支持向量机,但由于它们的全面性能,它们通常是用于二进制分类的算法.我愿意改变最终最适合的东西.

python machine-learning svm scikit-learn

42
推荐指数
4
解决办法
2万
查看次数

了解MySQL游标类型

MySQL版本:5.5.37-0ubuntu0.14.04.1

我目前正在编写一个python脚本,它利用大量的MySQL表和查询来获取存储在表中的倒排索引的结果.

我注意到,在执行查询时选择合适的类型光标的MySQLdb的Python模块中有一个真正对性能影响较大,想知道是否有人能解释或提供了可靠的资源解释其光标时使用.

例如,使用SSCursor执行此查询40次需要7秒:

SELECT Pages.PageID,
       Pages.PageName,
       Counter AS TermFreq,
       Pages.Length,
       (Counter / LOG(Length)) AS Weight
FROM Pages
INNER JOIN TermOccurrences ON TermOccurrences.PageID = Pages.PageID
INNER JOIN Terms ON TermOccurrences.TermID = Terms.TermID
WHERE TermName = %s
ORDER BY Weight DESC
LIMIT 20;
Run Code Online (Sandbox Code Playgroud)

使用默认Cursor运行相同的查询40次需要0.004秒.

删除权重计算(计数器/ LOG(长度))使得此查询使用SSCursor再次快速执行.

我正在使用SSCursor,因为它证明在许多其他查询上具有非常优越的性能,然后突然变得非常慢.当它执行得如此之快时,更改回默认的Cursor让我感到惊讶.

编辑:更多的例子.

使用默认光标运行以下40次需要~3秒:

SELECT COUNT(*)
FROM Pages
INNER JOIN TermOccurrences ON TermOccurrences.PageID = Pages.PageID
INNER JOIN Terms ON TermOccurrences.TermID = Terms.TermID
WHERE TermName = %s AND Counter > 2
Run Code Online (Sandbox Code Playgroud)

使用SSCursor运行它大约需要0.002秒.

python mysql sql

15
推荐指数
1
解决办法
952
查看次数

在Matplotlib中绘制两条线之间的角度的最佳方法

我对使用matplotlib相当新,并且找不到任何显示两条线的示例,并且它们之间的角度被绘制.

这是我目前的形象: 在此输入图像描述

这是我想要实现的一个例子:

在此输入图像描述

我通常会看看Matplotlib画廊,以了解如何执行某些任务,但似乎没有任何相似之处.

python matplotlib

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

Qt-Creator是否支持单元测试?

我开始使用Qt-Creator来尝试编程qt,但我也注意到它是一个非常好的用于C和C++编码的IDE.

在过去的几个月里,我一直在尝试并通过pycharm IDE 支持的诸如nose之类的框架在Python中进行编程时注意到测试驱动开发的好处.

C++和C有一个可以在Qt Creator中使用的等效测试框架吗?如果没有,是否有一些其他IDE可以尝试支持pycharm提供的相同(或类似)集成?

c c++ qt unit-testing qt-creator

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

使用数组避免OpenMP中的虚假共享

我已经开始学习如何使用OpenMP作为大学课程的一部分.作为实验练习,我们获得了一个需要并行化的系列程序.

我们首先了解了False Sharing的危险性,尤其是在为循环并行更新数组时.

但是,我发现很难将以下代码片段转换为可并行执行的任务,而不会导致错误共享:

int ii,kk;

double *uk = malloc(sizeof(double) * NX);
double *ukp1 = malloc(sizeof(double) * NX);
double *temp;

double dx = 1.0/(double)NX;
double dt = 0.5*dx*dx;

// Initialise both arrays with values
init(uk, ukp1);

for(kk=0; kk<NSTEPS; kk++) {
   for(ii=1; ii<NX-1; ii++) {
      ukp1[ii] = uk[ii] + (dt/(dx*dx))*(uk[ii+1]-2*uk[ii]+uk[ii-1]);
   }

   temp = ukp1;
   ukp1 = uk;
   uk = temp;
   printValues(uk,kk);
}
Run Code Online (Sandbox Code Playgroud)

我的第一反应是尝试分享ukp1:

for(kk=0; kk<NSTEPS; kk++) {
   #pragma omp parallel for shared(ukp1)
   for(ii=1; ii<NX-1; ii++) {
      ukp1[ii] …
Run Code Online (Sandbox Code Playgroud)

c openmp false-sharing

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

使用R通过SSL连接到Redshift

我目前正在尝试连接到R中的redshift数据库.这需要通过SSL连接完成,但我似乎无法找到指定要使用的证书文件路径的选项dbConnect.谷歌并没有出人意料地提供帮助.

是否真的难以通过R建立与红移的postgres SSL连接,或者我只是错过了一些基本的东西?

r amazon-redshift

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

错误:运行OpenCL代码时clGetPlatformIDs -1001(Linux)

在最终设法让我的代码用OpenCL编译之后,我似乎无法让输出二进制文件运行!这是在我的Linux笔记本电脑上运行Kubuntu 13.10 x64

我得到的错误是(从cl :: Error打印):

ERROR: clGetPlatformIDs
-1001
Run Code Online (Sandbox Code Playgroud)

我找到了这篇文章,但似乎没有一个明确的解决方案.

我把自己加入了视频组,但这似乎不起作用.

关于ICD配置文件......我不确定我需要做什么 - 这不应该包含在cuda工具包中吗?如果没有,我在哪里下载一个?

编辑:我的系统中似乎有一个ICD文件在/usr/share/nvidia-331/nvidia.icd下.它包含以下文本:

libnvidia-opencl.so.1
Run Code Online (Sandbox Code Playgroud)

我系统中唯一类似于此的文件是:

/usr/lib/nvidia-331/libnvidia-opencl.so.331.20
Run Code Online (Sandbox Code Playgroud)

我的ICD资料有点不对吗?有谁知道修复它的方法?

linux nvidia opencl

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

优化 OneClassSVM 的准确性

我有一个需要使用一类分类系统的问题。我目前正在使用 python 进行开发,因此我正在使用 sci-kit learn 进行机器学习任务。

从他们的文档来看,OneClassSVM 应该能够按预期工作(仅为训练提供正面示例),但生成的模型给了我非常不准确的结果 - 即使在原始训练数据上也是如此。

X = generate_data()  # Generate matrix of tf-idf document vectors

cls = OneClassSVM(kernel='rbf', gamma=0.1, nu=0.1)
cls.fit(X)

y = cls.predict(X)
print y[y == 1].size / y.size
Run Code Online (Sandbox Code Playgroud)

上面(简化的)代码片段在训练数据上返回了 40-55% 的准确度分数。它在新数据上的表现要差得多(正如人们所期望的那样),几乎所有的结果都是不正确的。

40-55% 的准确率本质上与随机分类器一样好,那么我做错了什么?我曾尝试使用参数gammanu,但这似乎对我没有太大作用。

我知道 OneClassSVM 实现利用了 Scholkopf 等人提出的技术。al 和替代方法是支持向量数据描述技术(Tax 和 Duin),但这不是在 scikitlearn 中实现的,需要我自己实现 libsvm 的接口。最重要的是,据我所知,SVDD 与 OneClassSVM 实现一样准确,因此有可能根本无法解决我的问题。

生成的训练数据是由标准 tf-idf 表示的文档矩阵。

python machine-learning scikit-learn

6
推荐指数
0
解决办法
1614
查看次数

用两个 numpy 向量中的元素对上的函数填充矩阵的最快方法?

我有两个一维 numpy 向量vavb它们用于通过将所有对组合传递给函数来填充矩阵。

na = len(va)
nb = len(vb)
D = np.zeros((na, nb))
for i in range(na):
    for j in range(nb):
        D[i, j] = foo(va[i], vb[j])
Run Code Online (Sandbox Code Playgroud)

就目前情况而言,由于 va 和 vb 相对较大(4626 和 737),这段代码需要很长时间才能运行。然而,我希望这可以得到改进,因为使用cdistscipy 中的方法执行类似的过程具有非常好的性能。

D = cdist(va, vb, metric)
Run Code Online (Sandbox Code Playgroud)

我显然知道 scipy 具有在 C 中而不是在 python 中运行这段代码的好处 - 但我希望有一些我不知道的 numpy 函数可以快速执行它。

python performance numpy pandas

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