小编doo*_*oms的帖子

为CountVectorizer添加词干支持(sklearn)

我正在尝试使用sklearn为NLP中的管道添加词干.

from nltk.stem.snowball import FrenchStemmer

stop = stopwords.words('french')
stemmer = FrenchStemmer()


class StemmedCountVectorizer(CountVectorizer):
    def __init__(self, stemmer):
        super(StemmedCountVectorizer, self).__init__()
        self.stemmer = stemmer

    def build_analyzer(self):
        analyzer = super(StemmedCountVectorizer, self).build_analyzer()
        return lambda doc:(self.stemmer.stem(w) for w in analyzer(doc))

stem_vectorizer = StemmedCountVectorizer(stemmer)
text_clf = Pipeline([('vect', stem_vectorizer), ('tfidf', TfidfTransformer()), ('clf', SVC(kernel='linear', C=1)) ])
Run Code Online (Sandbox Code Playgroud)

当使用此管道与sklearn的CountVectorizer时,它可以正常工作.如果我手动创建这样的功能,它也可以.

vectorizer = StemmedCountVectorizer(stemmer)
vectorizer.fit_transform(X)
tfidf_transformer = TfidfTransformer()
X_tfidf = tfidf_transformer.fit_transform(X_counts)
Run Code Online (Sandbox Code Playgroud)

编辑:

如果我在我的IPython笔记本上尝试这个管道,它会显示[*]并且没有任何反应.当我查看我的终端时,它会出现此错误:

Process PoolWorker-12:
Traceback (most recent call last):
  File "C:\Anaconda2\lib\multiprocessing\process.py", line 258, in _bootstrap
    self.run()
  File "C:\Anaconda2\lib\multiprocessing\process.py", line 114, in …
Run Code Online (Sandbox Code Playgroud)

python nlp scikit-learn

18
推荐指数
3
解决办法
2万
查看次数

从动词Wordnet获取名词

我试图从python中使用Wordnet的动词中获取名词.我希望能够得到:
从动词'创造'名词'创造者',

'funded' => 'funder'
Verb X => Noun Y
Run Code Online (Sandbox Code Playgroud)

Y 是指一个人

我已经能够做到另一面了: Noun Y => Verb X

import nltk as nltk
from nltk.corpus import wordnet as wn

lem = wn.lemmas('creation')
print lem

related_forms = lem[0].derivationally_related_forms()
print related_forms
Run Code Online (Sandbox Code Playgroud)

这是给出的输出

[Lemma('creation.n.01.creation'), Lemma('creation.n.02.creation'), Lemma('creation.n.03.creation'), Lemma('initiation.n.02.creation'), Lemma('creation.n.05.Creation'), Lemma('universe.n.01.creation')]

[Lemma('create.v.02.create'), Lemma('produce.v.02.create'), Lemma('create.v.03.create')]
Run Code Online (Sandbox Code Playgroud)

但是,我正试图做相反的事情.这是一个看起来像我想做的链接,但代码不起作用,不回应我的请求:
在动词/名词/形容词形式之间转换单词

python nlp wordnet

7
推荐指数
1
解决办法
1642
查看次数

使用Anaconda安装github版本的软件包

我安装了SympyAnaconda,我的版本(Sympy)是0.7.6.

我希望能够使用Sympy的git版本.你知道我怎么能告诉Anaconda替换这2个版本?

我尝试过使用git clone命令,但是git和Anaconda的Sympy文件夹看起来并不一样,所以我不能用另一个替换.

git clone git://github.com/sympy/sympy.git
Run Code Online (Sandbox Code Playgroud)

有没有像"conda update-git sympy"这样的命令?

我找到了答案,但我不明白该怎么做.

可以从github分支做"conda build"吗?

更新:我使用了以下命令,它工作正常

python setup.py develop
Run Code Online (Sandbox Code Playgroud)

在我的同情目录中.

感谢@asmeurer

python git sympy anaconda

7
推荐指数
1
解决办法
8252
查看次数

过滤其值小于0的pandas数据帧行

我有像这样的熊猫数据框

df = pd.DataFrame(data=[[21, 1],[32, -4],[-4, 14],[3, 17],[-7,NaN]], columns=['a', 'b'])
df
Run Code Online (Sandbox Code Playgroud)

我希望能够删除列列表中具有负值的所有行,并保留具有NaN的行.

在我的例子中只有2列,但我的数据集中有更多,所以我不能一个接一个地做.

python pandas

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

检索pandas数据帧中的NaN值索引

我尝试为包含NaN值的每一行检索相应列的所有索引.

d=[[11.4,1.3,2.0, NaN],[11.4,1.3,NaN, NaN],[11.4,1.3,2.8, 0.7],[NaN,NaN,2.8, 0.7]]
df = pd.DataFrame(data=d, columns=['A','B','C','D'])
print df

      A    B    C    D
0  11.4  1.3  2.0  NaN
1  11.4  1.3  NaN  NaN
2  11.4  1.3  2.8  0.7
3  NaN   NaN  2.8  0.7
Run Code Online (Sandbox Code Playgroud)

我已经做了以下事情:

  • 添加每行的NaN计数列
  • 获取包含NaN值的每一行的索引

我想要的(理想情况下,列的名称)是这样的列表:

[ ['D'],['C','D'],['A','B'] ]
Run Code Online (Sandbox Code Playgroud)

希望我能找到一种方法,而不是为每一行测试每一行

if df.ix[i][column] == NaN:
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种能够处理我庞大数据集的熊猫方式.

提前致谢.

python machine-learning pandas

6
推荐指数
2
解决办法
4823
查看次数

基于字符串应用numpy函数

是否可以基于字符串应用 numpy 函数?如果我给 'max' 调用 np.max。

values = np.array([[1,2,-1],[2,3,6], [0,-1,4]]) 
aggregator = 'max'
print np.max(values, axis=0)
>>> [2 3 6]
Run Code Online (Sandbox Code Playgroud)

我希望是这样的:

some_cool_function(aggregator, values, axis=0)
>>> [2 3 6]
Run Code Online (Sandbox Code Playgroud)

这将提供更好的可读性并缩短我的代码。而不是做多个if。

编辑

我找到了numpy.apply_along_axis但它需要一个函数,它不能是一个字符串。

python numpy

3
推荐指数
1
解决办法
779
查看次数

根据列值删除pandas数据帧中的行

我有这样的数据帧:

cols = [ 'a','b']
df = pd.DataFrame(data=[[NaN, -1, NaN, 34],[-32, 1, -4, NaN],[4,5,41,14],[3, NaN, 1, NaN]], columns=['a', 'b', 'c', 'd'])
Run Code Online (Sandbox Code Playgroud)

我想检索所有行,当列'a'和'b'是非负的,但如果它们中的任何一个或全部都缺失,我想保留它们.

结果应该是

   a   b   c   d
2  4   5  41  14
3  3 NaN   1 NaN
Run Code Online (Sandbox Code Playgroud)

我试过这个,但它没有给出预期的结果.

df[(df[cols]>0).all(axis=1) | df[cols].isnull().any(axis=1)]
Run Code Online (Sandbox Code Playgroud)

python pandas

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

SQL使用2列

我有一个足球比赛(法国锦标赛)的数据集,如下所示:

Pandas数据框与数据集相关

我怎样才能处理团队可以成为'HomeTeam'或'AwayTeam'的事实?

我这样做是为了检索所有球队,但我不知道这是不是最好的方式.

SELECT HomeTeam as Team 
FROM data 
UNION 
SELECT AwayTeam 
FROM data
Run Code Online (Sandbox Code Playgroud)

如果我想计算每支球队的比赛数,我是否必须使用'HomeTeam'检查结果并将结果与​​'AwayTeam'相加?

sql

0
推荐指数
1
解决办法
33
查看次数

标签 统计

python ×7

pandas ×3

nlp ×2

anaconda ×1

git ×1

machine-learning ×1

numpy ×1

scikit-learn ×1

sql ×1

sympy ×1

wordnet ×1