2017-09-21 3 views
-3

텍스트 문서에서 피쳐 추출을 배우고 있으며 this tutorial을 찾았습니다. 나는 끝에서 세 번째 줄에있는 np.asarray(doc_counts.sum(axis=0)).ravel()이 무엇을 반환하는지 이해할 수 없었다. 나는 이것을 검사했고 그것은 숫자 목록을 반환했다. 나는 이것이 용어 - 빈도라고 생각하지만 확실하지 않습니다.파이썬에서 람다 함수는 어떻게됩니까?

무엇을 idx: -1 * idx[1]이 (가) -1을 특히하고 있습니다. zip() 함수에 .idx 액세스 요소가 연결되어 있지만 찾을 수 없는지 확인했습니다.

코드 :

import numpy as np 
from sklearn.feature_extraction.text import CountVectorizer 

docs = <load your docs as an iterable> 

count_vect = CountVectorizer() 
doc_counts = count_vect.fit_transform(docs) 

word_counts = zip(count_vect.get_feature_names(), np.asarray(doc_counts.sum(axis=0)).ravel()) 
word_counts = sorted(word_counts, key=lambda idx: -1 * idx[1]) 

# Display top 100 words by frequency 
word_counts[:100] 

사람이 두 라인을 설명해 주시겠습니까.

미리 감사드립니다.

+0

'word_counts'의 각 항목'idx'는'-1 * idx [1]'인 것처럼 * 정렬됩니다. – timgeb

+0

나는 정말로이 질문에 대한 투표의 동기를 이해하지 못한다. 그것은 *** *** 투표 버튼 ****을 클릭하면 질문에 답하는 것보다 초보자가 너무 멀리 뛰게하기 때문입니다. –

+0

@OmPrakash downvotes는 간단한 Google 검색으로 쉽게 대답 할 수있는 질문으로이 사이트를 어지럽히 기 때문에 발생합니다. [ "람다는 정렬 된 비단뱀에서 무엇을합니까?] (https://stackoverflow.com/questions/8966538/syntax-behind-sortedkey-lambda) – gobrewers14

답변

3

기본적으로 정렬 기준으로 사용되는 키는 -1*idx[1]입니다. 이제 word_count의 각 요소에는 빈도가 나오는 단어가 포함되어 있습니다. 따라서 idx[1]을 쓰면 빈도에 액세스하는 중입니다.이 빈도는 배열을 정렬하는 기준으로 사용됩니다. 나는 그가 -1을 곱한 이유는 기본적으로 오름차순으로 정렬하므로, + ve 숫자의 목록에 -1을 곱해서 오름차순으로 정렬하면 내림차순으로 원래의 목록을 얻게된다는 것을 생각하면 sorted()이 기본값으로 정렬됩니다. 정확하게 원하는 단어 목록을 빈도 순으로 내 보냅니다.

람다 및 키 사용에 대한 자세한 내용은 on this page으로 정렬되어 있습니다.

+1

좋은 설명! +1 –

관련 문제