Tag: 机器学习

如何在使用C语言的文件中操作时提高性能

我已经在410k行的大型数据集上实现了朴素贝叶斯算法。现在我的所有记录都被正确分类,但事情是程序花了差不多一小时将记录写入相应的文件。什么是改进的最佳方法我的代码的性能。这是下面的代码。这段代码是将410k记录写入相应的文件。谢谢。 fp=fopen(“sales_ok_fraud.txt”,”r”); while(fgets(line,80,fp)!=NULL) //Reading each line from file to calculate the file size. { token = strtok(line,”,”); token = strtok(NULL,”,”); token = strtok(NULL,”,”); token = strtok(NULL,”,”); token = strtok(NULL,”,”); token = strtok(NULL,”,”); token1 = strtok(token,”\n”); memcpy(mystr,&token1[0],strlen(token1)-1); mystr[strlen(token1)-1] = ‘\0’; if( strcmp(mystr,”ok”) == 0 ) counter_ok++; else counter_fraud++; } printf(“The no. of records with OK label […]

如何在Locality Sensitive Hashing(使用jaccard距离)中将向量哈希到桶中?

我正在实现一个近邻搜索应用程序,它将找到类似的文档。 到目前为止,我已经阅读了LSH相关材料的很大一部分(LSH背后的理论是某种令人困惑的,我还不能100%地对其进行比较)。 我的代码能够使用minhash函数计算签名矩阵(我接近结尾)。 我还在签名矩阵上应用了条带策略。 但是我无法理解如何将带中的签名向量(列)散列到桶中。 我的最后一个问题可能是最重要的问题,但我不得不问一些introduction问题: 问题1:哈希函数是否只将相同的向量映射到同一个桶? (假设我们有足够的水桶) 问题2:哈希函数是否应该将相似的向量映射到同一个桶? 如果是,那么这种相似性的程度/定义是什么,因为我不是在计算比较,而是在进行散列。 q3:根据上面的问题,我应该使用什么样的哈希表算法? 问题4:我认为我最弱的一点是我不知道如何生成一个哈希函数,它将向量作为输入并选择一个桶作为输出。 我可以根据q1和q2自己实现一个…有关为LSH bucketing生成哈希函数的任何建议吗?

用于群集的C / C ++机器学习库

什么是支持多维数据聚类的C / c ++机器学习库? (例如K-Means) 到目前为止,我遇到过 SGI MLC ++ http://www.sgi.com/tech/mlc/ OpenCV MLL 我很想推出自己的产品,但我确信预先存在的产品可以通过更多关注代码来优化性能。

C中精度浮点运算的问题

对于我的课程项目之一,我开始在C中实现“朴素贝叶斯分类器”。我的项目是使用大量训练数据实现文档分类器应用程序(尤其是垃圾邮件)。 现在由于C数据类型的限制,我在实现算法时遇到了问题。 (我在这里使用的算法, http://en.wikipedia.org/wiki/Bayesian_spam_filtering ) 问题陈述:该算法涉及获取文档中的每个单词并计算它是垃圾邮件单词的概率。 如果p1,p2 p3 …. pn是word-1,2,3 … n的概率。 使用以下方法计算doc是否为垃圾邮件的概率 这里,概率值可以非常容易地在0.01左右。 因此,即使我使用数据类型“double”,我的计算也会进行折腾。 为了证实这一点,我写了一个给出的示例代码。 #define PROBABILITY_OF_UNLIKELY_SPAM_WORD (0.01) #define PROBABILITY_OF_MOSTLY_SPAM_WORD (0.99) int main() { int index; long double numerator = 1.0; long double denom1 = 1.0, denom2 = 1.0; long double doc_spam_prob; /* Simulating FEW unlikely spam words */ for(index = 0; index < […]

在Python中加速矩阵向量乘法和求幂,可能通过调用C / C ++

我目前正在研究机器学习项目 – 给定数据矩阵Z和向量rho – 我必须计算rho处逻辑损失函数的值和斜率。 计算涉及基本的矩阵向量乘法和log / exp运算,以避免数值溢出(在上一篇文章中描述)。 我目前正在使用NumPy在Python中执行此操作,如下所示(作为参考,此代码运行时间为0.2秒)。 虽然这很好用,但我想加快速度,因为我在代码中多次调用该函数(它代表了我项目中90%以上的计算)。 我正在寻找任何方法来改善没有并行化的代码的运行时间(即只有1个CPU)。 我很高兴使用Python中任何公开的软件包,或者调用C或C ++(因为我听说这可以将运行时间提高一个数量级)。 预处理数据矩阵Z也可以。 为了更好的计算可以利用的一些事情是矢量rho通常是稀疏的(大约50%的条目= 0)并且通常存在比列多得多的行(在大多数情况下n_cols <= 100 ) import time import numpy as np np.__config__.show() #make sure BLAS/LAPACK is being used np.random.seed(seed = 0) #initialize data matrix X and label vector Y n_rows, n_cols = 1e6, 100 X = np.random.random(size=(n_rows, n_cols)) Y = np.random.randint(low=0, […]