我正在尝试使用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中使用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)
但是,我正试图做相反的事情.这是一个看起来像我想做的链接,但代码不起作用,不回应我的请求:
在动词/名词/形容词形式之间转换单词
我安装了Sympy和Anaconda,我的版本(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"这样的命令?
我找到了答案,但我不明白该怎么做.
更新:我使用了以下命令,它工作正常
python setup.py develop
Run Code Online (Sandbox Code Playgroud)
在我的同情目录中.
感谢@asmeurer
我有像这样的熊猫数据框
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列,但我的数据集中有更多,所以我不能一个接一个地做.
我尝试为包含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)
我已经做了以下事情:
我想要的(理想情况下,列的名称)是这样的列表:
[ ['D'],['C','D'],['A','B'] ]
Run Code Online (Sandbox Code Playgroud)
希望我能找到一种方法,而不是为每一行测试每一行
if df.ix[i][column] == NaN:
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种能够处理我庞大数据集的熊猫方式.
提前致谢.
是否可以基于字符串应用 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但它需要一个函数,它不能是一个字符串。
我有这样的数据帧:
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) 我有一个足球比赛(法国锦标赛)的数据集,如下所示:
我怎样才能处理团队可以成为'HomeTeam'或'AwayTeam'的事实?
我这样做是为了检索所有球队,但我不知道这是不是最好的方式.
SELECT HomeTeam as Team
FROM data
UNION
SELECT AwayTeam
FROM data
Run Code Online (Sandbox Code Playgroud)
如果我想计算每支球队的比赛数,我是否必须使用'HomeTeam'检查结果并将结果与'AwayTeam'相加?