首页 文章 精选 留言 我的

精选列表

搜索[python3],共1105篇文章
优秀的个人博客,低调大师

我们来说说Python3的主要应用

如果您正在考虑学习Python,或者您最近刚开始学习, 您可能会问自己:“我到底可以用Python做什么?” 这是个棘手的问题,因为Python有很多用途。 但是随着时间的推移, 我发现Python主要可用于一下三个方面: Web开发 数据科学——包括机器学习、数据分析和数据可视化 脚本编写 我们就依次来看看吧。 一、Web开发 像Django和Flask这样基于Python的Web框架最近在web开发中变得非常流行。 这些web框架帮助您用Python创建服务器端代码(后端代码)。 这些代码在您的服务器上而不是在用户设备以及浏览器上(前端代码)运行。 如果您不熟悉后端代码和前端代码之间的区别,请参阅下面脚注。 但是,等等,我为什么需要web框架呢? 那是因为web框架让构建通用后端逻辑变得更简单了。 这包括把不同的URL映射到Python代码块、处理数据库和生成用户在浏览器中看到的HTML文件。 我应该用哪个Python web框架? Django和Flask是两种最流行的Python web框架。 如果您刚刚开始学习,那么可以用它们中的任何一个。 Django和Flask有什么区别? 主要的对比: Flask提供简洁、灵活和细粒度控制。它很是客观(让您决定如何实现想要的东西)。 Django提供一种包罗万象的体验:您可以获得管理面板、数据库接口、ORM(object-relational mappling,对象关系映射),还有开箱即用的应用程序和项目的目录结构。 您应该选择: Flask,如果您专注于体验和学习机会,或者您想对选用哪个组件有更大的控制权(例如您想使用哪个数据库和如何与它们交互)。 Django,如果你专注于最终的产品。特别是如果您正在做一个简单的应用程序(如一个新闻网站、电子商店,或者博客)并且希望有一个直接明了的做法。 换句话说,如果您是位初学者,Flask可能是个更好的选择,因为用到的组件比较少。 如果您想要更多的定制,那么Flask也是个更好的选择。 而且,根据我的数据工程师朋友的看法, Flask更适合创建那些所谓的REST API的东西,因为它比Django更灵活。 另一方面, 如果您想构建一些简单的东西, Django会让您更快地达到目标。 好,我们接着谈谈下一个! 二、数据科学 —— 包括机器学习、数据分析和数据可视化 首先,我们来回顾一下什么是机器学习。 我认为,解释什么是机器学习的最好方法莫过于举个例子。 假设您想开发一个程序用于自动检测图片中的内容。 因此,对于下面的这张图片(图片1),您希望您的程序能识别出这是条狗。 图1 而对于下面的这张图片(图片2),您希望您的程序能识别出它是张桌子。 图2 您也许会说,我可以用几行代码搞定。例如,如果在图片上有很多淡棕色的像素,那么我们可以说那是狗。 或者,您可以找到在照片中检测边缘的方法。然后,您也许会说,如果有很多直边,那么那就是一张桌子。 但是,这种方法很快就遇到麻烦了。如果图片上是条没有棕色毛发的白狗怎么办?如果图片上显示的只是桌子的圆形部分呢? 轮到机器学习大显身手了。 比如,您给机器学习的算法提供1000张狗的照片和1000张桌子的照片。那么,它将会学习区别狗和桌子。当您给出一张狗或桌子的新图片时,它将能够识别出是狗还是桌子。 我认为,这和婴儿学习新事物有点类似。婴儿是如何知道一样东西看起来像狗,而另一样东西看起来像桌子呢?可能就是从大量的例子中学到的。 您也许不会明确地告诉一个婴儿:“如果一样东西是毛茸茸的,并且有着淡棕色的毛发,那么它可能是条狗。” 您可能只是说:“那是条狗。这也是条狗。这是桌子。那也是桌子。” 机器学习算法的工作方式大致相同。 您可以把同样的想法应用于: 推荐系统(像YouTube、Amazon和Netflix在用的) 面部识别 声音识别 您可能听说过的流行的机器学习算法包括: 神经网络 深度学习 支持向量机 随机森林 您可以使用任何一个上述算法来解决我刚才解释过的图片标注问题。 三、将Python用于机器学习 有一些流行的Python机器学习库和框架,其中最流行的两个是scikit-learn和TensorFlow。 scikit-learn附带了一些更流行的内置机器学习算法。我刚才提到了其中的几个。 TensorFlow更像是个低级库,它允许您构建自定义机器学习算法。 如果您刚开始一个机器学习项目,那么我建议您先用scikit-learn。如果您开始遇到效率问题,那么我建议用TensorFlow。 请注意,您需要微积分和线性代数的基本知识以理解这些课程中的某些内容。 四、那么数据分析和数据可视化呢? 为了帮助您理解,我在这里给您举个简单的例子。假设,您为一家在线销售产品的公司工作。 那么,作为数据分析师,您也许会画一个类似的条形图。 条形图1-由Python生成 从这张图上,我们可以看到,在某个特定的周日,对于某件产品来说,男性购买了400多件,而女性购买了大约350件。 作为一个数据分析师,您也许会对其中的差异做出几个可能的解释。 一个很显然的可能解释是,该产品在男性中比在女性中更流行。另一个可能的解释是,样本量太小,这个差异是偶尔产生的。还有一个可能的解释是,在周日,由于某种原因,男性比女性更倾向于购买该产品。 为了搞明白哪个解释是正确的,您可能绘制另一张图,如下图所示: 折线图1-由Python生成 我们不再只显示周日的数据,而是整整一周的数据。正如您所见,从这张图中,我们可以看到,这种差异在不同的日子里很一致。 从这个简单的分析中,您可能得出了结论,对这种差异,一个最有说服力的解释就是,这个产品更受男性而不是女性欢迎。 另一方面,如果您看到是如下所示的图呢? 折线图2-同样由Python生成 那么,如何解释出现在周日的差异呢? 您也许会说,也许出于某种原因,男性在周日更倾向于购买该产品。或者,也许只是巧合,男性在周日购买了更多的该产品。 好了,这是个简化的例子,展示了数据分析在真实世界中看起来的样子。 我在谷歌和微软工作的时候做过数据分析,跟这个例子非常相似,只是更复杂一些罢了。事实上,我在谷歌工作时,是用Python来做这种分析,而我在微软的时候,用的是JavaScript。 在这两家公司工作的时候,我用SQL从数据库中提取数据。然后,我会用Python和Matplotlib(在谷歌工作时)或JavaScrip和D3.js(在微软工作时)进行数据可视化和分析。 五、用Python进行数据分析/可视化 最流行的数据可视化库之一是Matplotlib。 刚开始学习的话,它是个不错的库,因为: 它容易上手 其他一些库,如seaborn是以它为基础的。因此,学习Matplotlib可以帮助您随后学习其他库。 六、选Python 3还是Python 2? 我会推荐Python 3,因为它更现代化,并且目前它更受欢迎。 脚注:对于后端代码和前端代码的的说明(万一您对这些术语不熟悉)。 假设,您想做个类似于Instagram的东西。 那么,您需要为每种想支持的设备创建前端代码: Swift用于iOS设备 Java用于安卓设备 JavaScript用于web浏览器 每组代码都将在对应类型的设备/浏览器上运行。这组代码将决定应用的布局看上去的样子,单击时按钮的外观等等。 但是,您仍然需要存储用户信息和照片的能力。除了在用户的设备商储存这些信息,您还会希望将这些信息储存在服务器上,这样,每个用户的关注者就能看到用户的照片。 这里就是后端代码/服务器端代码的用武之地了。您需要编写后端代码以执行以下操作: 持续跟踪谁在关注谁 压缩照片,以免占据太多存储空间 在发现功能中给每个用户推荐照片和新账号 好了,这就是后端代码和前段代码之间的区别。 顺便说一下,Python不是编写后端/服务器端代码的唯一好选择。还有很多其他流行的选择,包括Node.js,它是基于JavaScript的。

优秀的个人博客,低调大师

ubuntu14.04上设置默认python命令是执行python3而不是Python2

欢迎关注大数据和人工智能技术文章发布的微信公众号:清研学堂,在这里你可以学到夜白(作者笔名)精心整理的笔记,让我们每天进步一点点,让优秀成为一种习惯! update-alternatives --install /usr/bin/python python /usr/bin/python2 100 update-alternatives --install /usr/bin/python python /usr/bin/python3150 如果要切换到Python2,执行: update-alternatives 按照提示输入选择数字回车即可。 这样你甚至可以将自己喜欢的任意版本python安装到任意位置,然后使用update-alternatives将其设置为系统默认python。

优秀的个人博客,低调大师

Python3 使用pli优化图片大小,相机或手机拍图片根据exif旋转、纠正方向

首先安装 pip install pillow 如果报错,请根据报错的信息去搜索一下,一般都能得到解决,未找到请升级pip python -m pip install --upgrade pip 或者 pip install --upgrade pip 那么写个方法 from PIL import Image,ExifTags #定义保存图片都路径 def get_outfile(infile, outfile): if outfile: return outfile dir, suffix = os.path.splitext(infile) outfile = '{}-cover{}'.format(dir, suffix) return outfile #缩小图片大小,保持原始宽高 def compress_image(infile, outfile='', kb=3200, step=5, quality=80): o_size = os.path.getsize(infile) / 1024 if o_size <= kb: return False outfile = self.get_outfile(infile, outfile) while o_size > kb: img = Image.open(infile) #相机或手机拍摄图片需要根据exif旋转角度 try: for orientation in ExifTags.TAGS.keys(): if ExifTags.TAGS[orientation] == 'Orientation': break exif = dict(img._getexif().items()) if exif[orientation] == 3: img = img.rotate(180, expand=True) elif exif[orientation] == 6: img = img.rotate(270, expand=True) elif exif[orientation] == 8: img = img.rotate(90, expand=True) except: pass img.save(outfile, quality=quality) if quality - step < 0: break quality -= step o_size = os.path.getsize(outfile) / 1024 return outfile compress_image(infile, outfile='', kb=3200, step=5, quality=80) infile : 原始图片路径 outfile: 生成图片保存路径 kb : 图片压缩上限,单位kb step : 每次压缩质量, quality: 图片质量,jpg特有,最高为100的质量 使用 small_path = compress_image(image_path) if not small_path: small_path = image_path 在某个项目中用到,就记录一下吧~特别是碰到图片上传后改变了方向的,特别郁闷,所以找到了解决方案 img = Image.open(infile) #相机或手机拍摄图片需要根据exif旋转角度 try: for orientation in ExifTags.TAGS.keys(): if ExifTags.TAGS[orientation] == 'Orientation': break exif = dict(img._getexif().items()) if exif[orientation] == 3: img = img.rotate(180, expand=True) elif exif[orientation] == 6: img = img.rotate(270, expand=True) elif exif[orientation] == 8: img = img.rotate(90, expand=True) except: pass img.save(outfile, quality=100)

优秀的个人博客,低调大师

这是我最想推荐给程序员们看的基于Python3实现的数据科学书

​点击关注异步图书,置顶公众号 每天与你分享IT好书 技术干货 职场知识 ​ 参与文末话题讨论,每日赠送异步图书。 ——异步小编 ​​和武侠世界里有少林和武当两大门派一样,数据科学领域也有两个不同的学派:以统计分析为基础的统计学派,以及以机器学习为基础的人工智能派。虽然这两个学派的目的都是从数据中挖掘价值,但彼此“都不服气”。注重模型预测效果的人工智能派认为统计学派“固步自封”,研究和使用的模型都只是一些线性模型,太过简单,根本无法处理复杂的现实数据。而注重假设和模型解释的统计学派则认为人工智能派搭建的模型缺乏理论依据、无法解释,很难帮助我们通过模型去理解数据。 随着云计算和人工智能的发展,数据科学这门新的综合学科被越来越多的人所熟知,业界也普遍看好其在未来的发展前景。体现在就业市场上,与这个行业相关的数据科学家和数据工程师成为了“21世纪最吸引人的职业”。 就像“一千个人眼里有一千个哈姆雷特”一样,对于什么是数据科学也有很多种不同的解读,并由此衍生出很多相关概念,比如数据驱动(data driven)、大数据(big data)、分布式计算(parallel computing)等。这些概念虽然各有侧重点,但它们都毫无争议地围绕着同一个主题:如何从实际的生活中提取出数据,然后利用计算机的运算能力和模型算法从这些数据中找出一些有价值的内容,为商业决策提供支持。这正是数据科学的核心内涵。 传统的数据分析手段是所谓的商业智能(business intelligence)。这种方法通常将数据按不同的维度交叉分组,并在此基础上,利用统计方法分析每个组别里的信息。比如商业智能中最常见的问题是:“过去3个月,通过搜索引擎进入网站并成功完成注册的新用户里,年龄分布情况如何?若将上面的用户群按年龄段分组,各组中有多大比例的用户在完成注册后,完成了至少一次消费?” 这样的分析是非常有用的,能揭示一些数据的直观信息。但这样的方法如同盲人摸象,只能告诉我们数据在某个局部的情况,而不能给出数据的全貌。而且对于某些问题,这样的结果显得有些不够用。比如用户注册之后完成消费的比例与哪些因素相关?又比如对于某个客户,应该向他推荐什么样的商品?在这些场景下,我们就需要更加精细的数据分析工具—机器学习和统计模型。在我看来,这些内容是数据科学的核心内容,也是我推荐《精通数据科学:从线性回归到深度学习》一书的重点。​ ​1.1挑战 在数据科学实践中,我们将使用较为复杂的机器学习或统计模型对数据做精细化的分析和预测。这在工程实现和模型搭建两方面都提出了挑战,如图1-1所示。 工程实现的挑战 数据科学在工程上的挑战可以大致分为3类:特征提取、矩阵运算和分布式机器学习。 (1)一个建模项目的成功在很大程度上依赖于建模前期的特征提取。它包含数据清洗、数据整合、变量归一化等。经过处理后,原本搅作一团的原始数据将被转换为能被模型使用的特征。这些工作需要大量的自动化程序来处理,特别是面对大数据时,因为这些大数据无法靠“人眼”来检查。在一个典型的建模项目中,这部分花费的时间远远大于选择和编写模型算法的时间。 (2)对于一个复杂的数学模型,计算机通常需要使用类似随机梯度下降法的最优化算法来估算它的模型参数。这个过程需要大量的循环,才能使参数到达收敛值附近。因此即使面对的是很小的数据集,复杂的模型也需要很长时间才能得到正确的参数估计。而且模型在结构上越复杂,需要估计的参数也就越多。对这些大量的模型参数同时做更新,在数学上对应着矩阵运算。但传统的CPU架构并不擅长做这样的运算,这导致模型训练需要耗费大量的时间。为了提高模型的训练速度,需要将相应的矩阵运算(模型参数的估算过程)移植到GPU或者特制的计算芯片上,比如TPU。 (3)近年来,随着分布式系统的流行和普及,存储海量数据成为了业界的标配。为了能在这海量的数据上使用复杂模型,需要将原本在一台机器上运行的模型算法改写成能在多台机器上并行运行,这也是分布式机器学习的核心内容。 ​图1-1 ​模型搭建的挑战 数据科学对模型搭建的要求也可以总结为3点:模型预测效果好、模型参数是稳定且“正确”的、模型结果容易解释。 (1)模型的预测效果好,这是数据科学成功的关键。而一个模型的预测效果取决于它的假设是否被满足。从数学上来看,任何一个模型除去假设部分,它的其他推导都是严谨的数学演算,是无懈可击的。因此模型假设就像模型的阿喀琉斯之踵,是它唯一的薄弱环节。当问题场景或数据满足模型假设时,模型的效果一定不会差,反之,则预测效果就无法保证了。但在实际生产中,针对一个具体的问题,几乎不可能找到一个模型,它的假设被百分之百地满足。这时就需要避重就轻,通过特征提取等手段,尽量避免违反那些对结果影响很大的假设。这就是为什么说“所有模型都是错的,但是,其中有一些是有用的”。 (2)除了被用来对未知数据做预测外,模型另一个重要的功能就是对已有数据做分析,比如哪个变量对结果的影响最大或者某个变量对结果到底是正向影响还是负向影响等。这些分析结果在很大程度上依赖于模型参数的估计值,后者的准确与否直接决定分析结果的质量。但问题是,模型参数的估计值是不太“可靠”的。例如从训练数据中随机抽取两个不完全一样的数据子集A和B,然后用这两个数据集分别训练同一个模型。得到的参数估计值几乎不可能完全一样。从数学的角度来看,这说明模型参数的估计值其实是一个随机变量,具体的值取决于训练模型时使用的数据。于是我们要求这些估计值是“正确”的:围绕参数真实值上下波动(也就是说它们的期望等于参数真实值)。我们还要求这些估计值是稳定的:波动的幅度不能太大(也就是说它们的方法比较小)。这样就可以把参数估计值的“不可靠性”控制在可接受的范围内。 (3)数据科学家将模型搭建好,并不是一个数据科学项目的终点。为了充分发挥数据的价值,需要将模型结果应用到实际的生产中,比如为手机银行APP架设实时反欺诈系统,或者将利用新搭建的车祸风险模型为汽车保险定价等。参与这个过程的不仅有懂模型的数据科学家,还有更多非技术的业务人员。而后者往往是使用模型的主力,比如根据反欺诈系统的结果,对可疑用户进行人工审核,又或者向客户解释为什么他的车险比别人贵。为了帮助他们更好地理解模型结果,需要将复杂深奥的模型翻译成直观的普通语言。这要求模型是能被解释的,而且是容易被解释的。 在对数据搭建模型时,有两种截然不同的思路,如图1-2所示。 一种是所谓的数据模型(data model),也就是传统的统计模型。这种思路假设数据的产生过程是已知的(或者是可以假设的),可以通过模型去理解整个过程。因此,这类模型通常具有很好的可解释性,分析其稳定性的数学工具也很多,能很好地满足上面提到的后两点。但是在实际生产中,这些模型的预测效果并不好,或者更准确地说,单独使用时,预测效果并不理想。 ​图1-2 另一种是所谓的算法模型(algorithm model),也就是机器学习。这类模型是人工智能的核心内容,它们假设数据的产生过程是复杂且未知的。建模的目的是尽可能地从结构上“模仿”数据的产生过程,从而达到较好的预测效果。但代价是模型的可解释性很差,而且模型稳定性的分析方法也不多。 正如上面的分析,统计学和机器学习在某些方面具有极好的互补性。因此在实际的生产中,为了将一个数据科学项目做得尽可能完美,我们需要将这两种思路结合起来使用。比如使用机器学习的模型对数据建模,然后借鉴数据模型的分析工具,分析模型的稳定性和给出模型结果的直观解释。 1.2 机器学习 在讨论机器学习之前,我们先来总结一下人是怎么学习的:在面对一个具体的问题时,人首先会根据已有的经验和当前的信息做出反应行动,然后按照行动获得的反馈去修正自己的经验,并不断重复这个过程。 机器学习就是通过程序让计算机“学会”人的学习过程。换句话说,机器学习是一个计算机程序,这个程序能够根据“经验”自我完善。那么问题来了,既然都是程序,机器学习和传统编程有什么不同呢? 机器学习与传统编程 首先,通过一个假想的例子来体会这两者之间的差异。假设我们需要构建一个能区分老虎和斑马图片的系统,而这个任务被交给了程序员小李和数据科学家小胡。 程序员小李拿到这个任务之后,他首先总结了两条分辨这两种动物的经验: • 斑马的毛发是黑白相间的,而老虎的毛发有3种颜色:黑色、白色和黄色。 • 斑马的耳朵比较大,而老虎的耳朵比较小。 然后,小李将上面的两条经验总结成规则:如果图中的动物有黄色毛发或者耳朵比较小,那么图中的动物是老虎,反之则为斑马。 最后,他将规则翻译成程序代码交给计算机去执行。 数据科学家小胡的做法则完全不同。他并不去总结区别这两种动物的规则,而是假设毛发颜色和耳朵大小能区别这两者。于是小胡将这个逻辑翻译成学习程序运行在计算机上。与此同时,他还从网络上收集了一大堆老虎和斑马的图片,并将这些图片做好标记,即每张图片对应的动物是什么。然后小胡将数据(图片+标记)输入给之前编写好的学习程序,而后者就可以根据数据不断累积经验和总结规则,这个过程被称为模型训练。经过一段时间的训练后,学习程序最后得到了一个模型(以代码的形式存在)。这个得到的模型和小李自己编写的程序一样,可以用来区分老虎和斑马的图片。 小李和小胡各自的工作流程如图1-3所示。从编程的角度来看,机器学习是一种能自动生成程序的特殊程序。 ​图1-3 也许上面的例子有点过于抽象了,下面再来看一个简单而具体的例子。假设我们想通过一个成年人的身高(用变量x表示)来预测他的体重(用变量y表示)。这项工作同样被交给了小李和小胡。 小李拿到问题之后,首先上网查阅了成年人身高与体重的相关研究资料。他发现这两者的关系可以用如下的公式表示。 y = 0.9x – 90 (1-1) 接着他将公式(1-1)转换为程序里面的函数,这个函数的输入参数是身高,输出是预测的体重。 小胡接到任务后,首先假设身高和体重的关系可以用线性回归模型来表示,也就是公式(1-2),其中a和b为未知的模型参数 y = ax + b (1-2) 同图片识别中的做法类似,小胡接下来收集了大量的人体身高和体重的数据。他将这些数据输入给模型,而模型将根据得到的数据估计未知参数a,b。估计的原则是使得模型预测值与实际值的差距达到最小。经过计算之后,得到参数的估计值为a ̂ = 0.8,b ̂ = -100。也就是说经过模型训练后,小胡得到了如公式(1-3)所示的程序 y = 0.8x – 100 (1-3) 图1-4所示是小李和小胡各自提供的解决方案。 ​图1-4 总结一下,传统的编程方式是人类自己积累经验,并将这些经验转换为规则或数学公式,然后就是用编程语言去表示这些规则和公式。而机器学习可以被看作一种全新的编程方式。在进行机器学习时,人类不需要总结具体的规则或公式,只需制订学习的步骤,然后将大量的数据输入给计算机。后者可以根据数据和人类提供的学习步骤自己总结经验,自动升级。计算机“学习”完成之后会得到一个模型程序,而这个由程序生成的程序可以达到甚至超过人类自身的水平。 监督式学习和非监督式学习 机器学习根据所用的训练数据可以分为两类。一类是监督式学习,这类模型的特点是训练数据里有标注,也就是常说的被预测量y。1.2.1节里讨论的两个例子都是监督式学习。监督式学习按标注的类型又可以细分为两类:分类和回归。如果数据里的标注表示事物的类别,也就是说标注是离散的,那么相应的模型就属于分类,比如1.2.1节里动物图片识别的例子。如果标注表示具体的数量,也就是说标注的是连续的,那么相应的模型就属于回归,比如1.2.1节里通过身高预测体重的例子。 另一类是非监督式学习,这类模型所用的训练数据里并没有标注,只有自变量x。非监督式学习根据用途又可以分为两类:聚类和降维。把“距离”相近的点归于一类叫作聚类,而将高维空间里的数据映射到低维度空间叫作降维,具体内容见图1-5。 ​图1-5 1.3 统计模型 从上面的例子中可以看到,机器学习非常依赖所用的训练数据。但是数据就百分之百可靠吗?下面就来看两个数据“说谎”的例子。 如图1-6所示,我们将某APP每月的用户注册数表示在图中。图1-6a给人的直观印象是每月的安装数是大致差不多的,没有明显的增长。而图1-6b给人不同的印象,从3月份开始,用户注册数大幅度增长。但其实两幅图的数据是一模一样的,给人不同的感觉是因为图1-6a中纵轴的起点是0,而且使用了对数尺度;而图1-6b的纵轴是从17 000开始的,而且使用的是线性尺度。​ ​ (a) (b) 图1-6 读者可能会觉得上面这个例子太过简单了,只需要使用一些简单的统计指标,比如平均值或每个月的增长率,就可以避免错误的结论。那么下面来看一个复杂一点的例子。 当得到如图1-7所示的两组数据时,我们应该如何用模型去描述数据的变化规律呢? • 对于图1-7a,数据的图形有点像抛物线,因此选择二次多项式拟合是一个比较合理的选择。于是假设模型的形式为y = (x - a)(x - b)。然后使用数据去估计模型中的未知参数a,b。得到的结果还不错,模型的预测值与真实值的差异并不大。 ​ (a) (b) 图1-7 • 对于图1-7b,数据之间有明显的线性关系,所以使用线性回归对其建模,即y = ax + b。与上面类似,得到的模型结果也不错。 根据上面的分析结果,可以得出如下的结论,图1-7a中的x与y之间是二次函数关系,而图1-7b的x与y之间是线性关系。但其实两幅图中的变量y都是与x无关的随机变量,只是因为观察窗口较小,收集的数据样本太少,让我们误以为它们之间存在某种关系。如果增大观察窗口,收集更多的数据,则可以得到完全不同的结论。如图1-8所示,如果将收集的样本数从20增加到200,会发现图1-8a中的数据图形更像是一个向下开口的抛物线,这与图1-7a中的结论完全相反。而图1-8b中也不再是向下的直线,而与开口向上的抛物线更加相似。 ​ (a) (b) 图1-8 上面的例子就是所谓的模型幻觉:表面上找到了数据变动的规律,但其实只是由随机扰动引起的数字巧合。因此在对搭建模型时,必须时刻保持警惕,不然很容易掉进数据的“陷阱”里,被数据给骗了,而这正是统计学的研究重点。这门学科会“小心翼翼”地处理它的各种模型,以确保模型能摆脱数据中随机因素的干扰,得到稳定且正确的结论,正好弥补机器学习在这方面的不足。 1.4 关于《精通数据科学:从线性回归到深度学习》 数据科学涉及计算机编程和数学建模这两个方面。它们之间的交集并不多,所强调的技能也有很大区别。这体现在实际生产中就是懂模型的人不懂编程,懂编程的人不懂模型,两者兼备的人才非常稀缺。本书的第一个目的就是将这两者的鸿沟弥补起来,注重模型假设和数学推导的同时,强调如何用代码实现模型。 • 从模型之间的联系和区别出发,分析各个模型的优缺点。帮助非数学专业的读者更加深入地理解模型的假设和适用范围,而不只是停留在会使用开源模型库的API。 •通过大量实际案例和代码展示,帮助非计算机专业的读者能独立上机实践模型算法,而不只停留在模型的理论研究。 对于数据科学中的模型搭建,统计学和机器学习是其最重要的组成部分。这两门学科的侧重点并不相同,在很多方面它们是彼此很好的补充。在面对一个实际问题时,若能将两者的方法相结合,能更好地挖掘数据的内在规律,从而更大程度地发挥数据的价值。这是本书的第二个目的。 •将机器学习和统计结合起来,并借鉴统计学在经济领域的应用,为机器学习的算法提供一个生动而又不失精确的解释。同时用丰富的图片将这些解释直观地表现出来,帮助专业人员将模型和算法解释给非专业的业务人员,推动模型的落地和应用。 •借鉴计量经济学的方法,深入探讨模型应用中常常被人们(特别是机器学习专业人员)忽略的问题,如模型是否稳定、模型结果是否可靠等,帮助读者反思建模过程中是否有考虑不周到的地方,以至于模型得到错误的结论。 当前,数据科学有两个最热门的前沿领域:分布式机器学习和深度学习。本书有专门的章节讨论它们,展示这两个领域想要解决的问题和目前最好(或最流行)的解决方案。这是本书的第三个目的:从宏观的角度向读者展示什么是数据科学,想要解决的问题、主要的方法以及未来的发展方向。 本书并不试图成为机器学习或统计学的参考文。在之后的章节里,有关模型的数学推导都只是简略讲解,并不做详细证明(本文也不会为了迎合行文简便,一味地回避这些难点)。本书讨论的重点是数据科学的整个工作流程(Pipeline):不止是搭建模型、用数据去训练模型,而是如何对数据进行预处理,初步分析数据、搭建并评估模型以及根据结果分析模型的缺点进而改进模型。 ​本文摘自《精通数据科学:从线性回归到深度学习》 ​《精通数据科学:从线性回归到深度学习》 唐亘著 点击封面购买纸书 京东购书 当当购书 天猫购书 数据科学入门到实战,介绍数据科学常用的工具——Python、数学基础及模型,讨论数据科学的前沿领域——大数据和人工智能,包括机器学习领域经典的模型、分布式机器学习、神经网络和深度学习等。 在数据学科的角度,融合了数学、计算机科学、计量经济学的精髓 为读者阐释了数据科学所要解决的核心问题—数据模型、算法模型的理论内涵和适用范围 以常用的IT工具—Python 3为基础,教会读者如何建模以及通过算法实现数据模型,具有很强的实操性。 本书还为读者详解了分布式机器学习、神经网络、深度学习等大数据和人工智能的前沿技术。 作者简介:唐亘,数据科学家,专注于机器学习和大数据。曾获得复旦大学的数学和计算机双学士学位;巴黎综合理工的金融硕士学位;法国国立统计与经济管理学校的数据科学硕士学位。热爱并积极参与是Apache Spark和Scikit-Learn等开源项目。作为讲师和技术顾问,为多家机构(包括惠普、华为、复旦大学等)提供百余场技术培训。此前的工作和研究集中于经济和量化金融,曾参与经济合作与发展组织(OECD)的研究项目并发表论文,并担任英国最大在线出版社Packt的技术审稿人。 今日互动 有一种说法,数据分析的工作终将会被机器所替代,你认同吗?为什么?截止时间5月12日17时,留言+转发本活动到朋友圈,小编将抽奖选出3名读者 赠送纸书1本和2张e读版100元异步社区代金券,(留言点赞最多的自动获得一张)。异步图书后台回复“5月新书”进入新书交流群,获得第一手新书信息, 点击此处直达活动。 ​ ​推荐阅读 2018年5月新书书单 2018年4月新书书单 异步图书最全Python书单 一份程序员必备的算法书单 第一本Python神经网络编程图书 ​ ​长按二维码,可以关注我们哟 每天与你分享IT好文。 在“异步图书”后台回复“关注”,即可免费获得2000门在线视频课程;推荐朋友关注根据提示获取赠书链接,免费得异步e读版图书一本。赶紧来参加哦! 点击阅读原文,购买《精通数据科学:从线性回归到深度学习》 ​阅读原文

优秀的个人博客,低调大师

Python爬虫入门教程 52-100 Python3爬虫获取博客园文章定时发送到邮箱

写在前面 关于获取文章自动发送到邮箱,这类需求其实可以写好几个网站,弄完博客园,弄CSDN,弄掘金,弄其他的,网站多的是呢~哈哈 先从博客园开始,基本需求,获取python板块下面的新文章,间隔60分钟发送一次,时间太短估摸着没有多少新博客产出~ 抓取的页面就是这个 https://www.cnblogs.com/cate/python 需求整理 获取指定页面的所有文章,记录文章相关信息,并且记录最后一篇文章的时间 将文章发送到指定邮箱,更新最后一篇文章的时间 实际编码环节 查看一下需要导入的模块 模块清单 import requests import time import re import smtplib from email.mime.text import MIMEText from email.utils import formatadd

优秀的个人博客,低调大师

Python爬虫入门教程 51-100 Python3爬虫通过m3u8文件下载ts视频-Python爬虫6操作

什么是m3u8文件 M3U8文件是指UTF-8编码格式的M3U文件。M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。 原视频数据分割为很多个TS流,每个TS流的地址记录在m3u8文件列表中 比如我这里有一个m3u8文件,文件内容如下 #EXTM3U #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-ALLOW-CACHE:YES #EXT-X-TARGETDURATION:15 #EXTINF:6.916667, out000.ts #EXTINF:10.416667, out001.ts #EXTINF:10.416667, out002.ts #EXTINF:1.375000, out003.ts #EXTIN

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册