车载导航升级多少钱那里可以升级,多少钱

投稿邮箱:『
为了展现 Pandas 的实用性,本文将利用 Pandas 来解决 MovieLen 数据集的一些问题。我们首先回顾下如何将数据集读进 DataFrame 中并将其合并:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# pass in column names for each CSV
u_cols = ['user_id', 'age', 'sex', 'occupation', 'zip_code']
users = pd.read_csv('ml-100k/u.user', sep='|', names=u_cols,
encoding='latin-1')
r_cols = ['user_id', 'movie_id', 'rating', 'unix_timestamp']
ratings = pd.read_csv('ml-100k/u.data', sep='\t', names=r_cols,
encoding='latin-1')
# the movies file contains columns indicating the movie's genres
# let's only load the first five columns of the file with usecols
m_cols = ['movie_id', 'title', 'release_date', 'video_release_date', 'imdb_url']
movies = pd.read_csv('ml-100k/u.item', sep='|', names=m_cols, usecols=range(5),
encoding='latin-1')
# create one merged DataFrame
movie_ratings = pd.merge(movies, ratings)
lens = pd.merge(movie_ratings, users)
评价最多的 25 部电影
most_rated = lens.groupby('title').size().sort_values(ascending=False)[:25]
most_rated
Star Wars (1977)
Contact (1997)
Fargo (1996)
Return of the Jedi (1983)
Liar Liar (1997)
English Patient, The (1996)
Scream (1996)
Toy Story (1995)
Air Force One (1997)
Independence Day (ID4) (1996)
Raiders of the Lost Ark (1981)
Godfather, The (1972)
Pulp Fiction (1994)
Twelve Monkeys (1995)
Silence of the Lambs, The (1991)
Jerry Maguire (1996)
Chasing Amy (1997)
Rock, The (1996)
Empire Strikes Back, The (1980)
Star Trek: First Contact (1996)
Back to the Future (1985)
Titanic (1997)
Mission: Impossible (1996)
Fugitive, The (1993)
Indiana Jones and the Last Crusade (1989)
dtype: int64
上述代码的含义是先将 DataFrame 按电影标题分组,接下来利用 size 方法计算每组样本的个数,最后按降序方式输出前 25 条观测值。
在 SQL 中,等价的代码为:
SELECT title, count(1)
GROUP BY title
ORDER BY 2 DESC
此外,在 Pandas 中有一个非常好用的替代函数—— value_counts :
lens.title.value_counts()[:25]
Star Wars (1977)
Contact (1997)
Fargo (1996)
Return of the Jedi (1983)
Liar Liar (1997)
English Patient, The (1996)
Scream (1996)
Toy Story (1995)
Air Force One (1997)
Independence Day (ID4) (1996)
Raiders of the Lost Ark (1981)
Godfather, The (1972)
Pulp Fiction (1994)
Twelve Monkeys (1995)
Silence of the Lambs, The (1991)
Jerry Maguire (1996)
Chasing Amy (1997)
Rock, The (1996)
Empire Strikes Back, The (1980)
Star Trek: First Contact (1996)
Titanic (1997)
Back to the Future (1985)
Mission: Impossible (1996)
Fugitive, The (1993)
Indiana Jones and the Last Crusade (1989)
Name: title, dtype: int64
评价最高的电影
movie_stats = lens.groupby('title').agg({'rating': [np.size, np.mean]})
movie_stats.head()
'Til There Was You (1997)
1-900 (1994)
101 Dalmatians (1996)
12 Angry Men (1957)
187 (1997)
我们可以利用 agg 方法来进行分组汇总计算,其参数包括键值和汇总方法。接下来我们对汇总结果进行排序即可得到评价最高的电影:
# sort by rating average
movie_stats.sort_values([('rating', 'mean')], ascending=False).head()
They Made Me a Criminal (1939)
Marlene Dietrich: Shadow and Light (1996)
Saint of Fort Washington, The (1993)
Someone Else's America (1995)
Star Kid (1997)
由于 movie_stats 是一个 DataFrame,因此我们可以利用& sort 方法来排序——Series 对象则使用 order 方法。此外,由于该数据集包含多层索引,所以我们需要传递一个元组数据来指定排序变量。
上表列出来的电影中评价数量都非常少,以致于我们无法从中得到一些有价值的信息。因此我们考虑对数据集进行筛选处理,只分析评价数量大于 100 的电影:
atleast_100 = movie_stats['rating']['size'] &= 100
movie_stats[atleast_100].sort_values([('rating', 'mean')], ascending=False)[:15]
Close Shave, A (1995)
Schindler's List (1993)
Wrong Trousers, The (1993)
Casablanca (1942)
Shawshank Redemption, The (1994)
Rear Window (1954)
Usual Suspects, The (1995)
Star Wars (1977)
12 Angry Men (1957)
Citizen Kane (1941)
To Kill a Mockingbird (1962)
One Flew Over the Cuckoo's Nest (1975)
Silence of the Lambs, The (1991)
North by Northwest (1959)
Godfather, The (1972)
这个结果看起来比较靠谱,需要注意的是在这里我们利用布尔索引来筛选数据。
在SQL中,等价的代码为:
SELECT title, COUNT(1) size, AVG(rating) mean
GROUP BY title
HAVING COUNT(1) &= 100
ORDER BY 3 DESC
筛选部分数据
为了便于进一步分析,我们从数据集中筛选出评价数最高的 50 部电影:
most_50 = lens.groupby('movie_id').size().sort_values(ascending=False)[:50]
SQL 中的等价代码为:
CREATE TABLE most_50 AS(
SELECT movie_id, COUNT(1)
GROUP BY movie_id
ORDER BY 2 DESC
此外,我们也可以利用 EXISTS, IN 或者 JOIN 来过滤数据:
WHERE EXISTS (SELECT 1 FROM most_50 WHERE lens.movie_id = most_50.movie_id);
不同年龄段观众之间争议最大的电影
首先,我们来看下数据集中用户的年龄分布情况:
users.age.plot.hist(bins=30)
plt.title(&Distribution of users' ages&)
plt.ylabel(&count of users&)
plt.xlabel(&age&);
Pandas 整合了 matplotlib 的基础画图功能,我们只需要对列变量调用& hist 方法即可绘制直方图。当然了,我们也可以利用& matplotlib.pyplot 来自定义绘图。
对用户进行分箱处理
我认为直接对比不同年龄用户的行为无法得到有价值的信息,所以我们应该根据用户的年龄情况利用 pandas.cut 将所有用户进行分箱处理。
labels = ['0-9', '10-19', '20-29', '30-39', '40-49', '50-59', '60-69', '70-79']
lens['age_group'] = pd.cut(lens.age, range(0, 81, 10), right=False, labels=labels)
lens[['age', 'age_group']].drop_duplicates()[:10]
上述代码中,我们首先创建分组标签名,然后根据年龄变量将用户分成八组(0-9, 10-19, 20-29,...),其中参数 right=False 用于剔除掉区间上界数据,即30岁的用户对应的标签为 30-39。
现在我们可以比较不同年龄组之间的评分情况:
lens.groupby('age_group').agg({'rating': [np.size, np.mean]})
从上表中我们可以看出,年轻用户比其他年龄段的用户更加挑剔。接下来让我们看下这 50 部热评电影中不同年龄组用户的评价情况。
lens.set_index('movie_id', inplace=True)
by_age = lens.loc[most_50.index].groupby(['title', 'age_group'])
by_age.rating.mean().head()
Air Force One (1997)
Name: rating, dtype: float64
需要注意的是,此处的电影标题和年龄组都是索引值,平均评分为 Series 对象。如果你觉得这个展示结果不直观的话,我们可以利用 unstack 方法将其转换成表格形式。
by_age.rating.mean().unstack(1).fillna(0)[10:20]
E.T. the Extra-Terrestrial (1982)
Empire Strikes Back, The (1980)
English Patient, The (1996)
Fargo (1996)
Forrest Gump (1994)
Fugitive, The (1993)
Full Monty, The (1997)
Godfather, The (1972)
Groundhog Day (1993)
Independence Day (ID4) (1996)
unstack 方法主要用于拆分多层索引,此例中我们将移除第二层索引然后将其转换成列向量,并用 0 来填补缺失值。
男士与女士分歧最大的电影
首先思考下你会如何利用 SQL 来解决这个问题,你可能会利用判断语句和汇总函数来旋转你的数据集,你的查询语句大概会是这个样子:
SELECT title, AVG(IF(sex = 'F', rating, NULL)), AVG(IF(sex = 'M', rating, NULL))
想象下,如果你必须处理多列数据的话,这样运算是多么的麻烦。DataFrame 提供了一个简便的方法—— pivot_table 。
lens.reset_index('movie_id', inplace=True)
pivoted = lens.pivot_table(index = ['movie_id', 'title'], columns = ['sex'],
values = 'rating', fill_value = /articles/0)
pivoted.head()
Toy Story (1995)
GoldenEye (1995)
Four Rooms (1995)
Get Shorty (1995)
Copycat (1995)
pivoted['diff'] = pivoted.M - pivoted.F
pivoted.head()
Toy Story (1995)
GoldenEye (1995)
Four Rooms (1995)
Get Shorty (1995)
Copycat (1995)
pivoted.reset_index('movie_id', inplace=True)
disagreements = pivoted[pivoted.movie_id.isin(most_50.index)]['diff']
disagreements.sort_values().plot(kind='barh', figsize=[9, 15])
plt.title('Male vs. Female Avg. Ratings\n(Difference & 0 = Favored by Men)')
plt.ylabel('Title')
plt.xlabel('Average Rating Difference');
从上图中我们可以看出,男性喜欢《终结者》的程度远高于,女性用户则更喜欢《独立日》。这个结果可靠吗?
原文链接: //using-pandas-on-the-movielens-dataset/
原文作者:Greg Reda
译者:Fibears中国领先的IT技术网站
51CTO旗下网站
数据至上的人工智能时代,哪些公开数据集最适合?
普遍存在的尖端开源工具如 TensorFlow、Torch 和 Spark,再加上通过 AWS 的大规模计算力、Google Cloud 或其他供应商的云计算,这些都意味着你可以在下午休闲时间使用笔记本电脑去训练出最前沿的机器学习模型。
作者:佚名来源:| 16:24
现如今构建人工智能或机器学习系统比以往的时候更加容易。普遍存在的尖端开源工具如 TensorFlow、Torch 和 Spark,再加上通过 AWS
的大规模计算力、Google Cloud 或其他供应商的云计算,这些都意味着你可以在下午休闲时间使用笔记本电脑去训练出最前沿的机器学习模型。
虽然不算是人工智能训练的最前沿,但人工智能的无名英雄确实就是数据,许多许多标注或未标注的数据。研究部门和公司也都认识到数据民主化是加快人工智能的必要步骤。
然而,涉及到机器学习或人工智能的大多数产品强烈依赖于那些通常没有开放的私有数据集,而本文将指出解决这种困境的办法。
事实上,我们很难用一篇文章来说明哪些开放数据集是有用的,因为那些有用的开放数据集必须是可概念证明的,而什么数据集对产品或确认特征是有用的,在你收集你自己所有数据之前是不知道的。
重要的是,如果数据集有良好的表现并不能保证其训练的机器学习系统在实际产品场景中表现良好。许多人在构建人工智能系统时常常忘了构建一个新人工智能解决方案或产品最困难的部分不是人工智能本身或算法,通常最困难的地方是数据收集和标注。标准数据集可以作为验证或构建更优良解决办法的良好起点。
在这个星期,我和一些机器学习专家们讨论的都是有关标准数据集的问题。为了让你能更轻松地构建人工智能系统,我们搜集了一些开源数据集,这些开源数据集是我们认为在人工智能的世界里你所需要了解的。
计算机视觉
MNIST: 最通用的健全检查。25x25 的数据集,中心化,B&W 手写数字。这是个容易的任务&&但是在 MNIST
有效,不等同于其本身是有效的。
CIFAR 10 & CIFAR 100: 32x32 彩色图像。虽不再常用,但还是用了一次,可以是一项有趣的健全检查。
ImageNet: 新算法实际上的图像数据集。很多图片 API 公司从其 REST 接口获取标签,这些标签被怀疑与 ImageNet 的下一级
WordNet 的 1000 个范畴很接近。
LSUN: 场景理解具有很多辅助任务(房间布置评估、显著性预测等)和一个相关竞争。
PASCAL VOC: 通用图像分割/分类:对于构建真实世界的图像注释毫无用处,对于基线则意义重大。
SVHN: 来自谷歌街景视图(Google Street View)的房屋数量。把这想象成荒野之中的周期性 MNIST。
MS COCO: 带有一个相关性竞争的通用图像理解/字幕。
Visual Genome: 非常详细的视觉知识库,并带有 100K 图像的深字幕。
Labeled Faces in the Wild:通过名称标识符,已经为被裁剪的面部区域(用
Viola-Jones)打了标签。现有人类的子集在数据集中有两个图像。对于这里做面部匹配系统训练的人来说,这很正常。
文本分类数据集(2015 年来自 Zhang 等人):一个用于文本分类的合 8 个数据集为 1
个的大型数据集。这些是用于新文本分类的最常被报道的基线。样本大小从 120K 到 3.6M, 问题从 2 级到 14 级。数据集来自
DBPedia、Amazon、Yelp、Yahoo!、Sogou 和 AG。
WikiText:来自由 Salesforce MetaMind 精心策划的维基百科文章中的大型语言建模语料库。
Question Pairs:从包含重复/语义相似性标签的 Quora 释放出来的第一个数据集。
SQuAD: 斯坦福大学问答数据集(The Stanford Question Answering
Dataset)&&一个被广泛应用于问题回答和阅读理解的数据集,其中每个问题的答案形式是文本的一个片段或碎片。
地址:https://rajpurkar.github.io/SQuAD-explorer/
CMU Q/A Dataset: 手动生成的仿真陈述问题/回答与维基百科文章的难度评级相对应。
Maluuba Datasets: 用于状态性自然语言理解研究的人工生成的精密数据集。
Billion Words: 大型,有统一目标的语言建模数据集。常被用来训练诸如 word2vec 或 Glove 的分布式词表征。
Common Crawl: PB 级规模的网络爬行&&常被用来学习词嵌入。可从 Amazon S3 上免费获取。由于它是 WWW
的抓取,同样也可以作为网络数据集来使用。
bAbi: 来自 FAIR(Facebook AI Research)的合成式阅读理解与问答数据集。
The Children&s Book
Test:从来自古登堡计划的童书中提取(问题+上下文,回答)组的基线。这对问题回答、阅读理解和仿真陈述查询有用。
Stanford Sentiment Treebank: 标准的情感数据集,在每一个句子解析树的节点上带有细腻的情感注解。
Newsgroups: 文本分类经典数据集中的一个。通常可用作纯分类或任何 IR/索引算法的基准。
Reuters: 旧的,纯粹基于分类的数据集与来自新闻专线的文本。常用于教程。
IMDB:一个用于二元情感分类的更旧更小的数据集。
UCI&s Spambase: 来自著名的 UCI
机器学习库较久的经典垃圾电子邮件数据集。由于数据集的策划细节,这可以是一个学习个性化过滤垃圾邮件的有趣基线。
大多数语音识别数据集是有所有权的,这些数据为收集它们的公司带来了大量的价值,但在这一领域里,许多可用的数据集都是比较旧的。
2000 HUB5 English: 仅仅只包含英语的语音数据,最近百度发表的论文《深度语音:扩展端对端语音识别(Deep Speech: Scaling
up end-to-end speech recognition)》就是使用了该语音数据集。
LibriSpeech:包括文本和语音的有声读物数据集。它是近 500
小时由多人朗读清晰的各类有声读物数据集,且由包含文本和语音的书籍章节组织起结构。
VoxForge:带口音的语音清洁数据集,特别是对于如期望对不同口音或腔调的语音有鲁棒性需求的系统很有用。
TIMIT:只包含英语的语音识别数据集。
CHIME:包含噪声的语音识别数据集。该数据集包含真实、模拟和清洁的语音记录。实际上是记录四个说话者在四个噪声源的情况下近 9000
份记录,模拟数据是在结合话语行为和清洁无噪语音记录的多环境下生成的。
TED-LIUM:TED 演讲的语音转录数据集。1495 份 TED 演讲的语音记录,并且这些语音记录有对应的全文本。
推荐和排序系统
Netflix Challenge:第一个主要 Kaggle 风格的数据库。因为存在隐私问题,只能非正式地获得授权。
MovieLens:各种电影的评论数据库,通常用于基线协同过滤(collaborative filtering baselines)。
Million Song Dataset:在 Kaggle
上大量、富元数据(metadata-rich)、开源的数据集,有利于人们试验混合推荐系统(hybrid recommendation systems)。
Last.fm:音乐推荐数据集,该数据集能有权访问底层社交网络和其他元数据,而这样的数据集正对混合系统有巨大的作用。
网络和图表
Amazon Co-Purchasing 和 Amazon
Reviews:从亚马逊以及相关产品评论数据网络爬取的如「用户买了这个同时也会买哪个」这样的语句。适合在互联网中进行推荐系统的测试。
Friendster Social Network Dataset:在 Friendster 的重心转入到游戏网站之前,这家网站发布了包含
103,750,348 个用户好友列表的匿名数据集。
地理测绘数据库
OpenStreetMap:免费许可的全球矢量数据集。其包含了旧版的美国人口统计局的 TIGER 数据。
Landsat8:整个地球表面的卫星拍摄数据,每隔几周会更新一次。
NEXRAD:多普雷达扫描的美国大气环境。
人们常常认为解决一个数据集上的问题就相当于对产品进行了一次完整的审视。因为我们可以使用这些数据集进行验证或证明一个概念,但是也不要忘了测试模型或原型是如何获取新的和更实际的数据来提高运算效果,获得优良产品的。数据驱动的成功公司通常从他们收集新数据、私有数据的能力中获得力量,从而以一种具有竞争力的方式提高他们的表现。
好数据集还有很多,这份列表当然不可能完全覆盖,如果你知道还有很好的数据集值得推荐,请通过评论与我们分享。
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条头条头条原创头条
24H热文一周话题本月最赞
讲师:2人学习过
讲师:9人学习过
讲师:7人学习过
精选博文论坛热帖下载排行
本书作者结合自己多年实践经验,从Oracle开发应用中遇到的问题着手,全面系统地介绍Oracle的安装与卸载、数据字典、安全管理以及用PL/SQL开...
订阅51CTO邮刊& & & & & & & & & & & & & & & & & & & & & & & & & & & && 理论部分
1. 隐因子模型的推荐算法:使用奇异值分解或者随机梯度下降等方法将用户的评分矩阵分解为用户和产品的特征矩阵&;
2. 提出一种对推荐效果新的评估方法:
3.Movielens 数据集:
(1)100k,包括1000个用户对1700部电影的点评信息。94.88%的评分都没有&。要给用户给予推荐,其实就是对评分矩阵中未知的项进行预测,也就是对一个稀疏的打分矩阵空白处进行“填空&。
(2)1m,包括6000个用户对4000部电影100万的评分记录。
(3)10m,包括72000个用户对10000部电影的的1000万个评分记录以及100000个标签。
4. 奇异值分解SVD:
5. 随机梯度下降算法:
6.平均绝对误差:
7.Baseline 模型:
8.KNN模型:
相似度的计算:
估计用户u对物品i的评分:
9.近邻模型与baseline模型的结合:
10.奇异值分解模型:
11.基于梯度下降的分解模型
garma代表的是学习速率,lamda代表的是正则系数;garma越大,结果越发散,通常情况下把garma取得比较小,视不同的数据集取值不同,大概在0.001量级。这样的话训练的时间会变长,但结果会更好。lamda一般也比较小,通常在0.01量级。迭代前,将对用户和产品的特征向量初始化,初始化非常关键,关系到运算速度的快慢。
==================================================================================================
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3717次
排名:千里之外
原创:59篇
(10)(36)(14)工具类服务
编辑部专用服务
作者专用服务
推荐系统中近邻算法与矩阵分解算法效果的比较——基于Movielens数据集
推荐系统的产生源自海量信息过载问题,在各式各样的推荐系统中,发展出了很多高效的算法,使得如今推荐系统在电子商务,社交媒体,广告系统,搜索引擎等领域取得了一定的成功。一般来讲,推荐算法分为基于内容和协同过滤两种方式,其中基于内容的推荐至今未取得较好的效果,协同过滤却取得了广泛的应用。传统的协同过滤技术基于推荐对象之间的相似度,通过近邻对象来进行推荐,但是这样的方式会带来海量的计算,限制实时推荐的应用。为了达到更高的精度,减少计算复杂度,最近一段时间,从机器学习中的隐因子分析得到启发,发展出了隐因子模型的推荐算法。这种方法使用奇异值分解或者随机梯度下降等方法将用户的评分矩阵分解为用户和产品的特征矩阵。本文着重讨论了两种隐因子模型:奇异值分解和随机梯度下降。然后比较了它们和传统最近邻算法在Movielens电影推荐系统真实数据集上的效果。试验结果表明,奇异值分解和随机梯度下降算法的“平均绝对误差”比“最近邻算法”分别下降了14.6%和17.9%。我们可以看出相对于传统的最近邻算法,这两种方法在movielens推荐系统真实数据集上能够取得更好的效果。
学科专业:
授予学位:
学位授予单位:
导师姓名:
学位年度:
在线出版日期:
本文读者也读过
相关检索词
万方数据知识服务平台--国家科技支撑计划资助项目(编号:2006BAH03B01)(C)北京万方数据股份有限公司
万方数据电子出版社

我要回帖

更多关于 凯立德车载导航升级 的文章

 

随机推荐