Professional Documents
Culture Documents
Zadanie Python Friends
Zadanie Python Friends
friendships=[(0,1),(0,2),(1,2),(1,3),(2,3),(3,4),(4,5),(5,6),(5,7),(6,8),(7,8),(8,9)]
for i, j in friendships:
users[i]["friends"].append(users[j]) #dodaje i do listy znajomych j
users[j]["friends"].append(users[i]) #dodaje j do listy znajomych i
Sumujemy długość wszystkich list znajomych, żeby później określić średnią liczbę
znajomych użytkowników naszego serwisu
total_connections
avg_connections
num_users
num_friends_by_id=[(user["id"],number_of_friends(user))
for user in users]
num_friends_by_id
friends_of_fried_ids(users[1])
Co to oznacza:
Użytkownik o id = 1 jest wymieniony trzykrotnie czyli jest on znajomym dwóch
przyjaciół Pawła. Lista zawiera użytkownika o id=4,3 i 0 którzy występują na
liście raz czyli są już znajomymi Pawła. A użytkownik o id= 2 występuje dwa razy
ponieważ znajduje się on na liście znajomych dwóch różnych przyjaciół.
def friend_of_friend_ids(user):
return Counter(potencial["id"]
for friend in user["friends"] #dla każdego z moich znajomych
for potencial in friend["friends"] #wybierz ich znajomych
if not_the_same(user, potencial) #którzy nie są mną
and not_friends(user, potencial)) #i nie są moimi znajomymi
print(friend_of_friend_ids(users[3]))
user_ids_by_interest=defaultdict(list)
user_ids_by_interest
defaultdict(list,
{'Hadoop': [0, 9],
'Big data': [0],
'HBase': [0, 1],
'Java': [0, 5, 9],
'Spark': [0],
'Storm': [0],
'Cassandra': [0, 1],
'NoSQL': [1],
'MongoDB': [1],
'Postgres': [1],
'Python': [2, 3, 5],
'scikit-learn': [2, 7],
'scipy': [2],
'numpy': [2],
'statsmodels': [2],
'pandas': [2],
'R': [3, 5],
'statistics': [3, 6],
'regression': [3, 4],
'probability': [3, 6],
'machine learning': [4, 7],
'decision trees': [4],
'libsvm': [4],
'C++': [5],
'Hskell': [5],
'programming languages': [5],
'mathematics': [6],
'theory': [6],
'Mahout': [7],
'neural networks': [7, 8],
'deep learning': [8],
'Big Data': [8, 9],
'artificial intelligence': [8],
'MapReduce': [9]})
interests_by_user_id=defaultdict(list)
for id, interest in interests:
interests_by_user_id[id].append(interest)
interests_by_user_id
defaultdict(list,
{0: ['Hadoop',
'Big data',
'HBase',
'Java',
'Spark',
'Storm',
'Cassandra'],
1: ['NoSQL', 'MongoDB', 'Cassandra', 'HBase', 'Postgres'],
2: ['Python',
'scikit-learn',
'scipy',
'numpy',
'statsmodels',
'pandas'],
3: ['R', 'Python', 'statistics', 'regression',
'probability'],
4: ['machine learning', 'regression', 'decision trees',
'libsvm'],
5: ['Python',
'R',
'Java',
'C++',
'Hskell',
'programming languages'],
6: ['statistics', 'probability', 'mathematics', 'theory'],
7: ['machine learning',
'scikit-learn',
'Mahout',
'neural networks'],
8: ['neural networks',
'deep learning',
'Big Data',
'artificial intelligence'],
9: ['Hadoop', 'Java', 'MapReduce', 'Big Data']})
def most_common_interests_with(id):
return Counter(interested_user_id
for interest in interests_by_user_id[id]
for interested_user_id in user_ids_by_interest[interest]
if interested_user_id != id)
most_common_interests_with(0)
words_and_counts=Counter(word
for user, interest in interests
for word in interest.lower().split())
words_and_counts
Counter({'hadoop': 2,
'big': 3,
'data': 3,
'hbase': 2,
'java': 3,
'spark': 1,
'storm': 1,
'cassandra': 2,
'nosql': 1,
'mongodb': 1,
'postgres': 1,
'python': 3,
'scikit-learn': 2,
'scipy': 1,
'numpy': 1,
'statsmodels': 1,
'pandas': 1,
'r': 2,
'statistics': 2,
'regression': 2,
'probability': 2,
'machine': 2,
'learning': 3,
'decision': 1,
'trees': 1,
'libsvm': 1,
'c++': 1,
'hskell': 1,
'programming': 1,
'languages': 1,
'mathematics': 1,
'theory': 1,
'mahout': 1,
'neural': 2,
'networks': 2,
'deep': 1,
'artificial': 1,
'intelligence': 1,
'mapreduce': 1})
big 3
data 3
java 3
python 3
learning 3
hadoop 2
hbase 2
cassandra 2
scikit-learn 2
r 2
statistics 2
regression 2
probability 2
machine 2
neural 2
networks 2