小编Amr*_*hna的帖子

如何在scikit-learn中查看tfidf之后的term-document矩阵的前n个条目

我是scikit-learn的新手,我TfidfVectorizer用来在一组文档中找到术语的tfidf值.我用下面的代码来获得相同的代码.

vectorizer = TfidfVectorizer(stop_words=u'english',ngram_range=(1,5),lowercase=True)
X = vectorizer.fit_transform(lectures)
Run Code Online (Sandbox Code Playgroud)

现在如果我打印X,我能够看到矩阵中的所有条目,但我如何根据tfidf分数找到前n个条目.除此之外,是否有任何方法可以帮助我找到基于每个ngram的tfidf得分的前n个条目,即unigram,bigram,trigram等中的顶级条目?

python numpy tf-idf top-n scikit-learn

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

为什么早期版本的C必须在开头声明变量?

我已经经历了C的一些历史,我发现在早期版本的C中,就像在C89标准中一样,必须在块的开头声明变量.

但我也发现C99标准规范有一些放松,其中变量可以在使用之前在任何地方声明.

我的问题是为什么早期版本强制要求?我的重点是要知道当时设计编译器是否存在技术上的困难,这使他们无法在任何时候识别声明.

另外,从我理解的编译器设计角度来看,在C89中有这样的限制,在中间文件的帮助下很容易处理变量声明和用法来存储映射.但有没有使用中间文件处理案例的方法,比如一些基于内存的存储?

c c++ compiler-construction

15
推荐指数
2
解决办法
914
查看次数

Python pytz:将本地时间转换为utc.Localize似乎没有转换

我有一个数据库,存储日期时间为UTC.我需要查询特定时间的信息,但日期和时间是在当地时间给出的,比如说'欧洲/哥本哈根'.我给这些作为:

year = 2012; month = 12; day = 2; hour = 13; min = 1;
Run Code Online (Sandbox Code Playgroud)

所以,我需要将这些转换为UTC,以便我可以在数据库中查找它们.我想用这个来做pytz.我在看localize:

 local_tz = timezone('Europe/Copenhagen')
 t = local_tz.localize(datetime.datetime(year, month, day, hour, min))
Run Code Online (Sandbox Code Playgroud)

但我很困惑localize().这是假设那一年等在当地时间给我的吗?或者,它是否假设它们是以UTC格式给出的,现在它已将它们转换为当地时间?

print t 给我:

2012-12-02 13:01:00+01:00
Run Code Online (Sandbox Code Playgroud)

所以它似乎假设原始年份等在utc; 小时现在是13 + 1而不是13.所以我该怎么做呢?我已经阅读了pytz文档,但这并没有让我更清楚.它提到了很多东西是棘手的,所以我不确定pytz是否真的解决了这些问题.而且,我并不总是知道这些例子是否向我展示了有效的东西或不起作用的东西.

我试过规范化:

print local_tz.normalize(t)
Run Code Online (Sandbox Code Playgroud)

这给了我与print t相同的结果.

编辑:使用上面给出的年份等数字,它应该与2012-12-2 12:01数据库中的信息相匹配.(因为那天哥本哈根是utc + 1)

python timezone pytz

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

在pandas dataframe的列子集中查找具有非零值的行

我有一个包含4列字符串的数据框,其他的是整数.现在我需要找出那些列中至少有一列是非零值(或> 0)的数据行.

manwra,sahAyaH,T7,0,0,0,0,T
manwra, akriti,T5,0,0,1,0,K 
awma, prabrtih,B6, 0,1,1,0,S
Run Code Online (Sandbox Code Playgroud)

我的输出应该是

manwra, akriti,T5,0,0,1,0,K 
awma, prabrtih,B6, 0,1,1,0,S
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法来获得答案.字符串值以列0,1,2和-1(最后一列)为单位.

KT[KT.ix[:,3:-2] != 0]
Run Code Online (Sandbox Code Playgroud)

我作为输出收到的是

NaN,NaNNaN,NaN,NaN,NaN,NaN,NaN
NaN,NaN,NaN,NaN,NaN,1,NaN,NaN
NaN,NaN,NaN,NaN,1,1,NaN,NaN
Run Code Online (Sandbox Code Playgroud)

如何获得所需的输出

python dataframe pandas

9
推荐指数
2
解决办法
4982
查看次数

最大熵模型和逻辑回归

我正在做一个需要做一些自然语言处理的项目。我为此目的使用了stanford MaxEnt 分类器。但我不确定,最大熵模型和逻辑回归是同一个还是某种特殊的逻辑回归?

任何人都可以提出一个解释吗?

nlp machine-learning stanford-nlp logistic-regression

8
推荐指数
2
解决办法
5273
查看次数

懒惰加载csv与熊猫

我有一个巨大的22 GB csv文件,其中包含10000 x 10000矩阵条目.但实际上我只需要一小部分文件用于我的目的,可以很好地适应我的4 GB内存.无论如何延迟加载CSV到我的系统,所以我只需要选择一些非传染性的文件部分说25个不同的特定行.我听说过iterator大熊猫一件一件地加载数据,但我仍然不确定它的内存要求.

python csv pandas

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

当父进程调用 exec 命令时,子进程会发生什么

假设我们有一个父进程,如果它调用一个 exec 函数,则在调用一个 fork 创建子进程之后。

现在子进程会发生什么:它会像原始父进程一样工作,这样用户就不会发现父进程被其他二进制文件替换的区别吗?

我认为这个问题与以下问题不同 ,子进程会发生什么?.

if ( (pid == fork ()) != 0 )
{
    if (strcmp(cmd,"mypwd")==0)
    {
        execlp (“mypwd”,0);
    }

    ...
    ...

    else if (strcmp(cmd,"myexit")==0)
        exit(1);
}
Run Code Online (Sandbox Code Playgroud)

c unix linux

5
推荐指数
1
解决办法
1031
查看次数

对两组中的每个元素进行成对比较,并返回前3个等级列表

给定两组,如何对一组中的每个元素与另一组的每个元素进行成对比较.

我想获得初始集中每个元素的前3个结果.

有没有更快的方法来解决任务.我正在寻找一种更加pythonic的方式来完成任务.

set1 = set([str(item) for item in range(100)])   # Pls. note originally set contains strings
set2 = set([str(item) for item in range(50,150)]) # set([str(item) for item in range(50,100)])

for item in set1:
  max = [-1,-1,-1]
  for stuff in set2:
    val = magicComp(item,stuff)
    if val > max[0]:
        max[2] = max[1]
        max[1] = max[0]
        max[0] = val
    elif val > max[1]:
        max[2] = max[1]
        max[1] = val
    elif val > max[2]:
        max[2] = val
Run Code Online (Sandbox Code Playgroud)

python python-2.x

5
推荐指数
1
解决办法
429
查看次数

合并MSER中的区域以识别OCR中的文本行

我正在使用MSER识别MSER中的文本区域.我使用以下代码提取区域并将其保存为图像.目前,每个识别的区域都保存为单独的图像.但是,我想合并属于合并为单个图像的文本行的区域.

import cv2

img = cv2.imread('newF.png')
mser = cv2.MSER_create()


img = cv2.resize(img, (img.shape[1]*2, img.shape[0]*2))

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
vis = img.copy()

regions = mser.detectRegions(gray)
hulls = [cv2.convexHull(p.reshape(-1, 1, 2)) for p in regions[0]]
cv2.polylines(vis, hulls, 1, (0,255,0)) 
Run Code Online (Sandbox Code Playgroud)

如何将属于一行的图像拼接在一起?我得到的逻辑主要是基于一些启发式识别具有附近y坐标的区域.

但是如何在OpenCV中合并这些区域.因为我是openCV的新手,所以我错过了这个.任何帮助,将不胜感激.

附加样本图像 在此输入图像描述

期望的输出如下 在此输入图像描述

另一条线 在此输入图像描述

另一条线 在此输入图像描述

python opencv bounding-box image-stitching mser

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

在pandas中使用固定列对多个列应用操作

我有一个数据框,如下所示.最后一列显示的值从所有列即总和A,B,D,KT.请注意一些列也有NaN.

word1,A,B,D,K,T,sum
na,,63.0,,,870.0,933.0
sva,,1.0,,3.0,695.0,699.0
a,,102.0,,1.0,493.0,596.0
sa,2.0,487.0,,2.0,15.0,506.0
su,1.0,44.0,,136.0,214.0,395.0
waw,1.0,9.0,,34.0,296.0,340.0
Run Code Online (Sandbox Code Playgroud)

如何计算每一行的熵?即我应该找到类似的东西

df['A']/df['sum']*log(df['A']/df['sum']) + df['B']/df['sum']*log(df['B']/df['sum']) + ...... + df['T']/df['sum']*log(df['T']/df['sum'])
Run Code Online (Sandbox Code Playgroud)

条件是每当内部的值log变为zero或时NaN,整个值应被视为零(根据定义,日志将返回错误,因为日志0未定义).

我知道使用lambda操作来应用于各个列.在这里,我不能在那里固定的列想了纯大熊猫的解决方案sum是在不同的列应用A,B,D等等.虽然我能想到一个简单的loopwise遍历所有CSV通过硬编码列值的文件.

python sum multiple-columns dataframe pandas

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