-2
다양한 학생간에 식량 벡터의 코사인 유사성을 수행하려고합니다. 나는이 포함 된 CSV 파일이 :Python - 중첩 된 사전 구조와의 코사인 유사도
Student food amount
John apple 15
John banana 20
John orange 1
John grape 3
Ben apple 2
Ben orange 4
Ben strawberry 8
Andrew apple 10
Andrew watermelon 3
다음 코드 :
import csv
from collections import defaultdict
data = defaultdict(dict)
with open('data.csv', 'r') as file:
reader = csv.DictReader(file)
for row in reader:
data[row['Student']][row['food']] = row['amount']
나에게이 같은 구조를 제공합니다
{'John': {'apple': 15, 'banana': 20, 'orange': 1, 'grape': 3},
'Ben': {'apple': 2, 'orange': 4, 'strawberry': 8}, #etc.
}
내가 벡터로 이러한 사전을 켜려는를 어디에 벡터의 길이는 고유 한 식품 항목의 수이고 학생이 섭취하지 않은 음식 항목은 0으로 기본 설정되어 다음과 같이됩니다.
for John: [15,20,1,3,0] corresponds to [apple,banana,orange,grape,strawberry,watermelon]
for Ben: [2,0,4,0,8,0] corresponds to [apple,banana,orange,grape,strawberry,watermelon] #etc
그러면 각 학생간에 코사인 유사성 매트릭스가 출력됩니다. 시간을내어 읽어 주셔서 감사합니다. 어떤 도움이라도 대단히 감사하겠습니다. 모든 고유 키
>>> all_keys = sorted({k for i in D for k in D[i]})
>>> all_keys
['apple', 'banana', 'grape', 'orange', 'strawberry']
의 목록을함으로써
공통 대한 그 키를 통해 루프 수) 가능성이 이미 시도 할 수 이전 단계에 대해 물어 본 지난 질문 이후 많은 부분 (정확한 대답을 수락하지 않은 곳) – deinonychusaur
지금까지 코드는 어디에 있습니까? 그게 뭐가 잘못 되었 니? – jonrsharpe