http://hadoop.aura-el.com 你可能认识的数据科学家_光环大数据 Python培训机构
当你正在努力填写新员工登记表的时候,负责人事的高管来到你的办公桌前。她希望能够激发数据科学家之间更多的交流和联系,因此她希望你能够策划一个“你可能认识的数据科学家”的提示功能。
你的直觉告诉你一个用户很有可能认识自己朋友的朋友。这个想法非常容易验证:对于每一个用户的朋友们,验证这个朋友的朋友是不是被这个用户认识,最后合并结果即可检测这个想法是不是可靠:
def friends_of_friend_ids_bad(user):# \"foaf\" 是 \"friend of a friend\"的简称 return [foaf[\"id\"] for friend in user[\"friends\"] # 对于每一个用户的朋友们 for foaf in friend[\"friends\"]] # 检验这个朋友的朋友是不是这个用户的朋友
当我们把上面的函数作用在第一个用户users[0]上的时
候,friends_of_friend_ids_bad(users[0])给出如下的结果 [0, 2, 3, 0, 1, 3]
结果中包括了用户 0 两次,因为用户 0 ( Hero )确实同时是他的两个朋友的朋友。结果中也包括用户 1 和用户 2 ,虽然他们已经是用户 1 的朋友。同时他也包括了用户 3 两次,因为用户 3 ( Chi ) 可以通过用户 0 的两个朋友和用户 0 联系起来,具体的验证代码如下:
print [friend[\"id\"] for friend in users[0][\"friends\"]] #[1, 2]print [friend[\"id\"] for friend in users[1][\"friends\"]] #[0, 2, 3]print [friend[\"id\"] for friend in users[2][\"friends\"]] #[0, 1, 3]
知道人们可以借助自己朋友的朋友互相认识彼此是非常有趣的信息,所以或许我们应该统计下通过共同朋友可能成为朋友的数目。为了实现这个目的,我们需要借助辅助函数来排除已经彼此认识成为朋友的那批用户:
from collections import Counter # 并不默认加载collection函数def not_the_same(user, other_user):\"\"\"排除相同用户\"\"\" return user[\"id\"] != other_user[\"id\"]def not_friends(user,
other_user):\"\"\"other_user用户并不是user用户的朋友;也就是 other_user并不和user用户的friends列表中个的用户相同\"\"\" return all(not_the_same(friend, other_user) for friend in user[\"friends\"])def friends_of_friend_ids(user): return
光环大数据 http://hadoop.aura.cn
光环大数据--大数据培训&人工智能培训
http://hadoop.aura-el.com Counter(foaf[\"id\"] for friend in user[\"friends\"] # 对于每一个user用户的朋友 for foaf in friend[\"friends\"] # 对于每一个user用户朋友的朋友 if not_the_same(user, foaf) # 排除相同用户 and not_friends(user, foaf)) # 排除已经是朋友的用户print friends_of_friend_ids(users[3]) # Counter({0: 2, 5: 1})
这个输出结果正确地说明用户 Chi (id 为 3 ) 和用户 Hero ( id 为 0 ) 之间有 2 个共同朋友,而和用户 Clive ( id 为 5) 只有 1 个共同用户。 作为一个数据科学家,你知道大家都喜欢遇到和自己有共同兴趣的人。(事实上,下面要做的这个小探索是对数据科学家需要掌握的专业技能的精彩展示。) 通过咨询朋友,你得到了如下的数据,这个列表的每一个元素都包括一个由用户 id 和兴趣 interest 组成的元组 。
interests = [(0, \"Hadoop\"), (0, \"Big Data\"), (0, \"HBase\"), (0, \"Java\"),(0, \"Spark\"), (0, \"Storm\"), (0, \"Cassandra\"),(1, \"NoSQL\"), (1, \"MongoDB\"), (1, \"Cassandra\"), (1, \"HBase\"),(1, \"Postgres\"), (2, \"Python\"), (2, \"scikit-learn\"), (2, \"scipy\"),(2, \"numpy\"), (2, \"statsmodels\"), (2, \"pandas\"), (3, \"R\"), (3, \"Python\"),(3, \"statistics\"), (3, \"regression\"), (3, \"probability\"),(4, \"machine learning\"), (4, \"regression\"), (4, \"decision trees\"),(4, \"libsvm\"), (5, \"Python\"), (5, \"R\"), (5, \"Java\"), (5, \"C++\"),(5, \"Haskell\"), (5, \"programming languages\"), (6,
\"statistics\"),(6, \"probability\"), (6, \"mathematics\"), (6, \"theory\"),(7, \"machine learning\"), (7, \"scikit-learn\"), (7, \"Mahout\"),(7, \"neural networks\"), (8, \"neural networks\"), (8, \"deep learning\"),(8, \"Big Data\"), (8, \"artificial intelligence\"), (9, \"Hadoop\"),(9, \"Java\"), (9, \"MapReduce\"), (9, \"Big Data\")]
比如,用户 Thor ( id 为 4 ) 和用户 Devin ( id 为 7 ) 没有任何相同的朋友,但是他们都对于机器学习有兴趣。
非常容易地我们就可以构建一个函数寻找有相同兴趣的用户:
def data_scientists_who_like(target_interest): return [user_id for user_id, user_interest in interests if user_interest == target_interest]
虽然上面的方法可以正确得出我们期望的结果,但是每一次都必须遍历整个兴趣列表。如果我们有很多的用户和兴趣对或者我们希望做大量的查找,这样的程序效率就比较低来。因此,我们应该专门建立一个从兴趣到用户的检索:
光环大数据 http://hadoop.aura.cn
光环大数据--大数据培训&人工智能培训
http://hadoop.aura-el.com from collections import defaultdict# 字典的键是兴趣,值是对该兴趣感兴趣用户名列表 user_ids_by_interest = defaultdict(list)for user_id, interest in interests:
user_ids_by_interest[interest].append(user_id) 另一种形式是从用户到兴趣的检索:
# 键是用户名,值是该用户的兴趣列表interests_by_user_id = defaultdict(list)for user_id, interest in interests: interests_by_user_id[user_id].append(interest)
现在我们可以很容易的找到对于一个特定的用户和他有最多相同兴趣的用户了,具体思路如下:
对该用户的兴趣列表做一次循环
对于该用户的每一个兴趣,在相应的兴趣对应的用户列表中再次循环 记录下每一个用户在这样的循环中出现的次数
具体实现的代码为:
def most_common_interests_with(user_id): return Counter(interested_user_id for interest in
interests_by_user_id[user_id] for interested_user_id in user_ids_by_interest[interest] if interested_user_id != user_id)
或许将来,我们可以通过这个方法整合共同朋友和共同兴趣数据来构建一个更加丰富的“你应该知道的数据科学家”的功能。在第 22 章,我们将深入讨论这一点。
为什么大家选择光环大数据!
大数据培训、人工智能培训、Python培训、大数据培训机构、大数据培训班、数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请大数据领域具有多年经验的讲师,提高教学的整体质量与教学水准。讲师团及时掌握时
光环大数据 http://hadoop.aura.cn
光环大数据--大数据培训&人工智能培训
http://hadoop.aura-el.com 代的技术,将时新的技能融入教学中,让学生所学知识顺应时代所需。通过深入浅出、通俗易懂的教学方式,指导学生较快的掌握技能知识,帮助莘莘学子实现就业梦想。
光环大数据启动了推进人工智能人才发展的“AI智客计划”。光环大数据专注国内大数据和人工智能培训,将在人工智能和大数据领域深度合作。未来三年,光环大数据将联合国内百所大学,通过“AI智客计划”,共同推动人工智能产业人才生态建设,培养和认证5-10万名AI大数据领域的人才。
参加“AI智客计划”,享2000元助学金!
【报名方式、详情咨询】
光环大数据网站报名:http://hadoop.aura-el.com 手机报名链接:http:// hadoop.aura-el.com /mobile/
光环大数据 http://hadoop.aura.cn
因篇幅问题不能全部显示,请点此查看更多更全内容