粉丝2.1万获赞10.6万

今天我们要用一下计算器里边科学计算器里的 logo 工具。 logo 工具的正确使用是, 以十为底,以十为底,一百的对数等于二, 以十为底,一千的对数等于三。那么以二为底,八的对数该怎么计算呢?其实他 的可以是公式演算成以,演算成以八为底, 十的对数除以以二为低, 十的对数等于三。然后我们再计算一下其他的计算方式。 嗯,假如以七为底,七百的对数该怎么来计算呢?就是 log, 以 log 以时为底,七百 除以一时为敌, log 七 等于三点三六,这就是 logo 的正确使用方法。好,谢谢大家。

要打开这道门,需要猜中一个数字,这个数字在一到一百之间,你们可以随便猜,但是我会用一个超级厉害的魔法来帮助你们,这个魔法叫做二分查找,记住,你们只有七次机会, 我是阿 q, 如果你想在一百万人的档案里找一个叫张三的人,一秒钟看一个名字,一个个找,你不吃不喝也要翻上整整十一天,这种苦力活别说你受不了,计算机也怕。 早在一九四六年,计算机大神约翰莫奇利在设计第一代电子计算机时,就发现内存太小,电费太贵,绝不能让机器干一个个找这种蠢事。于是他提炼了人类翻字典的本能,发明了二分查找。 想要使用这项黑科技,必须满足一个前提,数据必须是有序的。假设有一百万个随机不重复的有序数据,现在我们要找这个数的位置,勾且管这个数叫做目标。 这个任务看上去好像很难,但对于二分查找,最多只需要找二十次。他的逻辑极其简单,直接从中间切开,看一看中间位置这个值,如果他比目标小,那左边的一半就没用了,扔掉瞬间就排除了五十万的数据量。 再切看看中间位置的值,如果他比目标大,那右边的一半就没用了,扔掉瞬间就又排除了一半的数据量。 十几次下来,再查找的数据量就只剩这么点了,这就叫对数级的降维打击。我把数据量缩小,让你看的更清楚些。这里有二十个有序的数, 确定一个查找目标,比如三十五开始查找第一次中间位置是五十五,十比三十五大, 排除掉右边所有数字,在左边继续查找。第二次,中间位置是二十五。二十五比三十五小,排除掉左边所有数字在右边继续查找。第三次,中间位置是三十五,找到了它的缩影是六。 我们维护头和尾两个指向,每次算出中间位置,根据提示移动它们。 passing 二分查找算法看,这里设置 low 和 high 两个指数,进入循环计算终点,如果正好猜中,查找成功,猜大了 high 往左移,猜小了 low 往右跑。 如果你用普通的现行查找一百个数,可能要找一百次,但用二分查找最多只要七次。如果我想在一到一百万之前找一个数字最坏的情况下,二分查找需要切几刀呢?请在这个模拟器中尝试用最少的次数抓住那个随机生成的数字。 二分查找可不是只能来猜数字,在软件世界里,它无处不在。当你查数据库时,底层所引本质上就是更高效的多路二分。 代码出 bug 了,却找不到哪次提交改坏了,程序员会用这个指令,他把提交记录一分为二,通过对数级查找,瞬间就能锁定那个闯祸的 bug。 甚至在三 d 游戏里,为了判断你那一枪打中了哪个怪物,电脑也会结合四叉树进行地归二分,它就是隐藏在屏幕背后的效率之王。

在西普考前啊,有件事你一定不能忘,西普人呢,都知道在西普啊,大部分考试呢,是可以带计算器的,因为考试的时候啊,会碰到大量复杂的计算题。平常呢,我们可能习惯了用手机或者电脑来算, 但是考试的时候手机不能带,电脑也不能带,那就只能用学校指定的卡西欧计算器。所以啊,考前呢,请务必看一下计算器的必备操作,怎么开机,怎么关机, 二分之一怎么算出来是零点五,而不是二分之一, line, e, log, sine, cosine 等等,怎么去计算?要知道,考试的时候呢,不会用计算器,那可能真的是要命的。如果说真的不知道怎么用的话呢,也可以去看一下我之前发布的计算器速成教程。

今天来了一个新同学啊,咱们正好可以发现一下,当有些模型填洞无法完成的时候,我们看看是怎么解决的。干活,选择 上面那个边面这个地方它有三个填充,选择两个循环边,或可以从中计算出两个循环边的单个闭合循环边。我们是单个闭合循环边,但是我们这个点数很可能是个基数,我们顶点是三十五法, 就导致了刚才那个命令还没有用,我们实际上可以在这把这个顶点改成三十六。我在中间细分了一下,我细分了一下,是不是一条边就变两条边,中间必须多一个点来三格填充。哎,这个填充的不好,是吧? 我们可以改一下这个参数。哎哎,这样比你手动填要好很多。这个步线就相当的会学会了吗?本毛会了哦。

科学计算器的隐藏用法你们肯定不知道,那就拿我们家这个型号 d 八二 ms, 这个是得意这个来弄我们这。我这个是灰色的 啊,你看见这个键了吗?红色的,上面还有个按键,和这个踢键, 然后然后看好了,你要如果不行的话,还多按几次,你看一次就全平了。然后一点他他就灭了,地点 再一点再点点到了,然后这个点到九之后呢,他就会有个零,然后然后这这样按顺序顺序我发到评论区了啊。 如果想找点刺激的话可以这样。就是说可以这样, 然后要是弄到这四十八的话就不能按了,只能按一下等于号了。 等于号你看 ok, 四和二十五也。呃,如果养给家长的话,可以可以感觉到坏了,因为这样。摁摁,这个盒子不行, 按这个加这个也是不能关机的。但是我告诉你,你怎么恢复啊,怎么恢复放在评论区了啊。

好,同学们,这个对数的预算,如果你想直接计算,非常麻烦,如果你知道一个公式,那就不一样了,这个叫换底公式。 好,什么意思?比如说我们一个对数以二为底, b 的 对数都可以给它写成两个对数相除,一般我们写成 log, log 啊, log, 以十为底的,这样比较简单,来实操一下。所以说以五为底,四的对数,我们可以写成 log 除以 log, 然后这个四在上面写在上面,这里,五在下面写在分子分母上。好,乘以 log 除以 log, 然后五在上面写在这里,八在下面写在下面,然后 log 五, log 五是不是就可以消掉了?没问题吧?好,接着 这个地方你还要处理的话,还知道一个,还必须知道一个公式,这个公式长这样,比如说以 a 为底, a 的 n 次方,然后 n 可以 拿出来,然后以 a 为底,底的对数咔嚓等于一,所以就等于 n。 好,所以说我们把这个四写成了二的平方,把八写成二的三次方,因为他都跟二有关系,这样 logo 二就可以约掉啊,你看这个二拿出来是跑到前面去了,这就没有二了,这个三拿出来是跑到这前面去了,然后剩个 logo 二, logo 二是不是就约掉了?是,所以剩个三分之二选 d 了,你听懂了吗?好,这个题你来自己练一练吧。差不多的啊。 ok, 答案是,答案填多少打在评论区。

ms 实操教学,五分钟掌握 ms 核心功能,迈出材料模拟第一步!从本节课开始,我们来讲 material studio 这款软件,它是一款提供了完善可塑化界面的模拟计算平台,可以帮助我们构建、显示和分析分子, 搭建固体及表面结构模型。通过计算可以研究预测材料的相关性质,帮助我们更好地研究原子与分子层面的结构,通过微观计量来解释宏观现象,进而在后续的实验研究中提出一个更加准确的方案, 也可以在实际生产中节省时间成本。 m s 涉及众多模块,它通过可视化界面将这些模块进行连用, 包括了各种分子模拟方法,涉及到量子化学、分子力学、动力学、蒙特卡洛法界关动力学、晶体学、构效关系等等。 而量子化学实际上是用量子力学的方式计算原子内部电子的运动情况,可以有效的分析原子核与电子的相互作用,进而分析电赫的转移与成见情况。 主要涉及到 cast、 tab、 dm 三等模块。而分子力学与分子动力学主要是用牛顿经典力学的方式拟合式函数,通过式函数来反映分子之间的相互作用,平衡分子间的有效构型。 主要涉及到 foresight 和 goop 等模块。由于该方法不涉及内部电子的计算,只需要合适的式函数,将分子看成一个弹簧体系, 用经典力学方法进行计算,因此计算速度极快,相比于量子化学,其速度可超过万倍以上,常用于大体系的计算。借观动力学是将多个分子看成一个整体,不考虑这些分子内部的相互作用, 这使得我们的计算体系可以进一步的扩大。在这个方法下,我们可以计算达微米级别的体系。而晶体学在 ms 中主要涉及 reflex, xl 等模块。在这些模块的帮助下,我们可以精修实验室得到光谱, 并通过光谱预测晶体结构,也可以用已知的晶体结构反推计算出光谱性质, 而 q、 s, a、 r 主要是用来分销构效关系。这些众多的模块以及分子模拟理论 通过可视化界面进行完美的连用,我们可以调用不同的模块满足不同的需求。 ms 完善的可视化界面可以帮助我们搭建不同类型的分子, 可以从简单小分子到复杂的聚合物。在我们已知原子坐标及金格参数的前提下,我们也可以构建晶体模型。 当然很多时候我们可以通过数据库下载 c、 r、 f 的 方式进行导入。 ms 也可以帮助我们构建碳、纳米管、石墨烯等二维材料。而孔结构是多孔材料研究当中的一个重要方向。通过 ms 我 们可以 构建从纳米孔到微米孔不同孔的直径模型。这边所展示的是一个界观孔结构,通过粗量化的方式达到微米级的孔结构模型。 ms 还拥有聚合物搭建工具,可以有效帮助我们搭建不同的聚合物,研究聚合物之间的性质。 而分子塞作为常用的吸附剂,我们也可以用分子模拟的方式,在搭建分子塞模型的基础上,研究吸附质与吸附剂之间相互作用关系。这边展示了 ms 的 几个计算结果,上面是量子化学的计算结果, 下面为分子动力学计算结果。首先是静电式, ms 可以 帮助我们计算表面静电式,在此基础上可以分析分子间的静电作用,预测两个分子间的活性位点。 而能带与钛密度是分析晶体结构的重要参数,我们可以通过 costep 进行计算。电赫密度可以有效帮助我们分析两个原子间的相互作用,从成见关系到一些非见作用都可以通过电赫密度进行预测。 而氢键的统计在水溶液中有微重要,通过分子动力学计算,结合一个 p、 r l 脚本,我们就可以分析每一针的氢键数量,分析体系内氢键的变化。同时通过分子动力学与 ac 模块连用,我们可以搭建一个固液界面模型, 研究固体对水中的离子吸附作用。结合 ms 已有的聚合物搭建模型和 ac 无定型建模,我们可以搭建不同的聚合物模型 并研究其相容特性。 ms 的 软件介绍到这里就结束了,这节课就到这里,关注不迷路,科研少走弯路,我们下节继续。

好,上回咱们聊了怎么用 c born 把数据画的漂漂亮亮,让数据自己说话,但光会看还不够,有时候我们得让机器也学会看懂数据,甚至还能预测未来,这就是机器学习要干的事儿。 简单说,他就是数据科学的升级版,拿计算和算法来解决那些传统统计方法有点力不从心的问题。听起来是不是很酷?但别急着兴奋,这玩意可不是万能药,用不好反而添乱。 所以咱们得先搞清楚他的脾气秉性,还有那些基本的统计概念,比如偏差方、差过你河、欠你河,这些坑都得心里有数。 所以今天这堂课,咱们的目标很明确,第一,把机器学习的基本行话、术语、概念搞清楚。第二,重点介绍一个超级好用的工具, psychic learn, 看看它怎么用, api 长啥样。 第三,挑几个最重要的机器学习方法,讲讲它们具体怎么用,适合什么场景。咱们主要用 python 的 psychic learn 这个包来实操。当然啦,机器学习是个大宝库,想全挖完得花不少功夫。 咱们这里只是管中窥豹,先掌握核心技能。那到底啥是机器学习?很多人一听就觉得,哦,人工智能嘛,离我们很远。 作者觉得这种归类有点误导,虽然机器学习确实出身于人工智能,但他现在更多是在数据科学领域发光发热, 所以换个角度看,把他当成一种数学建模的方法可能更贴切。你想啊,我们用数学公式模型去描述现实世界的数据,对吧? 机器学习就是给这些模型装上可调节的旋钮,也就是参数,然后让模型通过学习数据,自动调整这些旋钮,找到最佳状态。 一旦模型学会了,就能根据新的数据做出预测或者解释。这个过程有点像我们人脑学习新知识,只不过机器是靠数据驱动的。 机器学习这门手艺主要分两大流派,第一派叫有监督学习,顾名思义,就是有人带着你学,他需要你提供一堆带标签的数据,告诉模型哪些特征对应哪个结果。 比如告诉他哪些邮件是垃圾邮件,哪些不是学好了之后,模型就能给没见过的新邮件分类。这一派又分两类,一类是分类,预测的是离散的类别,比如邮件是垃圾还是非垃圾。 另一类是回归,预测的是连续的数值,比如房价是多少。第二排叫无监督学习。这就厉害了,没人带路,全靠自己摸索,他面对的是没有标签的数据,任务是让数据自己站队或者瘦身。 比如句类,就是把相似的数据点归为一类,降维就是把高维数据压缩到低维,方便我们观察。当然还有个半监督学习,就是老师只带了一部分,大部分得自己学,适用于标签不全的情况。 咱们先来看第一个例子,分类。这就像玩连连看,只不过连线的是数据点和它们的类别。假设我们有一堆数据点,每个点有两个特征,比如鸳鸯花的花瓣长度和宽度用横纵坐标表示, 同时这些点还被染上了颜色,代表不同的种类,比如红色代表山鸳鸯,蓝色代表变色鸳鸯。 我们的目标就是根据这些已知的点和他们的颜色,训练出一个模型以后,来了新的点,不管他是什么颜色,我们都能准确判断他应该属于哪一类。 最简单的分类方法就是画一条直线,假设这两类点可以用一条直线完美分开,那这条直线就是我们的模型,直线的位置和角度就是模型的参数,怎么找到这条最佳直线呢?这就是机器学习里的训练过程, 你看图五二,这就是模型学出来的结果。一条线把两类点分开了,现在来了新数据,就是图五三里这些灰色点,他们没颜色,我们不知道他们是哪一类, 怎么办?很简单,把这条学好的直线也画上去,看看心点落在哪一边,就给他分配对应的类别,这就是预测,如图五四所示,是不是很简单?别被这个二维粒子迷惑了,真正的挑战在于处理高维数据。 说到高维,想想垃圾邮件过滤器,每天收到那么多邮件,不可能每封都人工看, 怎么办?机器学习来帮忙,我们可以收集一些已知的垃圾邮件和正常邮件提取特征,比如里面出现了多少次 viagra nigeria、 prince 这些关键词,形成一个长长的特征向量 标签,就是垃圾邮件或普通邮件。用这些带标签的邮件训练一个分类模型,比如朴素贝叶斯,训练好了之后,模型就能自动扫描海量的新邮件,根据关键词频率快速判断是不是垃圾邮件。 这里的关键在于特征工程,选对了特征模型才能学得好。接下来是回归, 跟分类不一样,回归预测的是连续值,不是离散的类别,还是看图。这次数据点的颜色深浅代表一个连续的值,比如温度、房价等等。 我们的任务是找到一个模型,能够根据这个点的两个特征,预测出它对应的那个连续值。 对于回归问题,一个简单的想法是,你和一个平面,如果把标签看作是第三个维度,那么数据点就分布在三维空间里。 我们希望找到一个平面,让这个平面尽可能的贴近所有的数据点,这就是宪性回归的核心思想。 图五到五是从三维视角看这些数据点,想象一下,他们大致构成一个倾斜的平面,回到二维图,图五到六,我们看到的就是这个。你和平面在二维平面上的投影通常是一条直线, 这条线就是我们的回归模型。有了这个模型,我们就能预测新的数据点对应的标签值了。 回归的实际应用也很广泛,比如天文学家想知道宇宙中某个遥远星系的距离,直接测量距离成本太高了怎么办?他们可以测量星系在不同颜色波段的亮度,这些亮度就是特征。 通过少量能精确测量距离的星系,建立一个模型,学习亮度和距离之间的关系,然后用这个模型去估计那些无法精确测量的星系的距离,这就是所谓的测光红仪。 你看,机器学习又一次帮我们省钱省力了。前面两个例子都是有监督学习需要标签。现在我们来看,无监督学习的第一个代表具类 句类,就像给一群陌生人分组,你不知道他们是谁,但你可以根据他们的外貌特征,比如身高、体重、穿着风格。把他们分成几个自然的小团体。 看图五到八这些点看起来有点乱,但如果你仔细看,是不是能感觉到他们大致形成了三个小团?这就是句类算法要做的事情,自动发现数据中的这种结构。 最常用的句类方法之一是 k means。 它的工作原理大概是这样的,首先,你得猜一个数字 k, 告诉算法你想分成几组。 然后,算法会在数据空间里随机撒下 k 个种子,这些种子就是簇中心。接着,它会把每个数据点划分到离它最近的那个种子所在的组。 之后,他会重新计算每个组的中心点位置,重复这个过程,直到中心点不再移动,或者达到预设的迭代次数。最终,每个点都会被赋予一个促标签,表示他属于哪个组。图五到九就是 k 命算法对前面数据点的具类结果, 你看,他确实找到了三个促,虽然可能不是完美的原型,但大致轮廓出来了。 巨类的应用场景非常广泛,比如,电商平台可以用巨类分析客户购买行为,把客户分成不同的群体,以便进行精准营销。生物学家可以用巨类分析基因表达数据,找出功能相似的基因集合。 搜索引擎可以用剧类来对网页进行分组,发现主题相关的文档集合。总之,只要你想从一大堆没有标签的数据里挖掘出隐藏的结构或模式,剧类都是个好帮手。无监督学习的另一个重要方向是降维。 想象一下,你有一张非常高清的照片,像素点非常多,处理起来很慢。降维就是想办法把这张照片压缩一下,变成一张分辨率低一点,但关键信息还在的图片。 在机器学习里,数据的维度就是特征的数量,如果特征太多,不仅计算慢,还可能导致模型复杂度过高。 降维的目标就是用尽可能少的特征,保留原始数据的主要信息。看图五到十,这些点看起来好像在二维平面上随机分布,但实际上它们是沿着一个螺旋线排列的。 也就是说,这些数据本质上只有一维的结构,只是被嵌入到了二维空间里。好的降维算法应该能发现这个隐藏的一维结构。 对付这种非限性结构,有一种叫做流行学习的算法特别有效,比如 isomap, 它不像 pca 那 样简单地找方差最大的方向,而是试图找到数据在低维空间中的几何形状。 图五十一展示了 isomap 算法的结果。注意看点的颜色代表算法提取出来的一个潜在的一维变量,你会发现颜色沿着螺旋线均匀变化,这说明算法确实抓住了数据的本质结构,那个隐藏的螺旋线。 通过降维,我们就能在一个二维图上清晰的看到这个一维结构。降维最大的价值之一就是可视化。你想想,我们人眼最多能直接感知三维空间,更高维度的数据怎么画, 根本没法直观感受。但是如果能把高维数据降到二维或三维,那就可以轻松的画图出来了。 比如基因芯片实验,会产生成百上千个基因的表达量数据,每个样本都是一个高维向量,用降维技术,比如 pca, 把它们降到二维,就能画出一张图,看看不同类型的细胞样本在基因表达上有什么区别。 再比如手写数字识别,每个数字图像本来是八乘八,等于六十四维的像素,数据降维后也能画出来,看看不同数字的分布情况,这对于探索数据、发现异常、理解模式都非常有帮助。 好,我们快速总结一下今天接触到的机器学习方法。类型有监督学习,就是有老师带着给数据贴标签,然后让模型去学,目的是预测新数据的标签。 这里面又分两类,预测离散类别的叫分类,比如垃圾邮件识别,预测连续数值的叫回归,比如房价预测无监督学习,就是没老师带,让数据自己玩,自己发现里面的结构。 这里面也分两类,把数据分成不同团伙的叫具类,比如客户分群,把高维数据压缩成低维表示的叫降维,比如数据可视化。记住这四种基本类型,后面我们就要深入学习具体的算法了。 理论讲完了,该上手干活了。在 python 的 世界里,实现机器学习的工具包不少,但要说最流行最全面的,还得是 psychic learn, 它就像一个瑞士军刀,各种常用的机器学习算法都有高效实现。更重要的是,它有一个非常统一简洁的设计理念,叫做 estimate a p i。 一 旦你掌握了这个 a p i 的 使用方式,你会发现换用不同的模型简直不要太方便,而且它的文档写的非常好,查起来很方便。所以学好 psychic learn 绝对是数据科学道路上的一大步, 要想用好 psychic learn, 首先得搞清楚它喜欢怎么看待数据。 psychic learn 最喜欢的数据形式就是一张标准的数据表, 这张表里每一行代表一个样本,比如一朵花、一个人、一篇文章,每一列代表一个特征,描述这个样本的某个属性,比如花瓣长度、年龄、词频等等。 我们来看经典的鸳鸯花数据集,这个数据集记录了一百五十朵鸳鸯花,每朵花有四个特征,扦片长度、扦片宽度、花瓣长度、花瓣宽度。 还有一个物种列,告诉我们这朵花是山鸳鸯、变色鸯尾还是维基尼亚鸯尾。在 ciken 里,我们通常把特征部分称为特征矩阵 x, 把标签部分称为目标数组 y。 具体来说,特征矩阵 x 就是 一个二维数组,它的行数是样本数量 n samples, 列数是特征数量 n features。 在 渊伟话例子里, x series 就是 一个一百五十行四列的矩阵, 目标数组 y 就是 一个一维数组,长度等于样本数量,里面存放着每个样本对应的标签。在渊尾话例子里, yeras 就是 一个长度为一百五十的数组,里面是 satosa、 vericolor、 virginica 这些字母串。 记住这个 x 和 y 的 约定俗成,后面我们所有的代码是例都会遵循这个格式。 scient learn 的 强大之处很大程度上来自于它的 estimate a p i 设计。这套设计遵循几个核心原则,第一,统一性, 所有模型和工具都用差不多的接口,学一种就会用很多种。第二,内省模型的参数都是公开的属性,你可以直接访问。第三,限制对象层级算法,用类数据,用标准的 nmap 或 pandas 对 象,避免过度复杂化。 第四,函数组合鼓励你把多个简单的步骤串联起来,构建复杂的流水线。第五,明智的默认值。很多参数都有合理的默认设置,新手也能快速上手。理解这些原则,你会发现 cklearn 的 api 非常直观和一致。 基于这些设计原则,使用 psychic learn 的 流程通常就这几步。第一步,从 psychic learn 模块里导入你需要的模型类,比如 linear regression 或 gaussian nb。 第二步,创建一个这个模型的实例,同时可以设置一些超参数,这些参数在模型学习之前就要确定好。 第三步,准备好你的数据,确保是 x 和 y 的 形式。第四步,调用模型实体的 fit 方法,把 x 和 y 传进去,让模型去学习数据。如果是无监督学习,就只传 x。 第五步,模型训练好了,就可以用它来干活了。对于有监督学习,通常用 predict 方法预测新数据的标签。 对于无监督学习,可能会用 transfer 方法转换数据,或者用 predict 方法来推断数据的某些属性,比如具类标签。 咱们用一个简单的例子来演练一下这个流程任务是限信回归,就是给一堆散点数据,你和一条直线。我们先生成一些模拟数据,如图五杠十四所示。这些点大致呈上升趋势,但有点乱,加了点随机扰生。 我们的目标就是找到一条最佳直线,穿过这些点。第一步,选模型。我们要做限性回归,就从 scallorn dot linear modelly 导入 linear regression 类。第二步,实力化模型, 创建一个 linear regression 的 对象。这里我们设置了一个超参数 fit intercept, 等于 true, 意思是告诉模型我们希望你和的直线可以有一个截距象, 如果不设置,默认也是 true。 注意,这时候只是创建了一个空壳子,里面存着我们的设置,但还没开始干活。 第三步,准备数据。我们已经有了 x 和 y, 但是还记得 psychic learn 的 要求吗? x 必须是二维的,形状是 n samples and features。 我 们现在只有一个特征, x, 它是一维的, 怎么办?很简单,把它变成一个列向量就行了,用 x and p new axis 或者 x dot reshape 负一都可以。这样 x 的 形状就变成了五十,符合要求了。 第四步,拟核模型调用 model dot fit x 这一下模型就开始工作了, 它会根据我们提供的 x 和 y 计算出最佳你和直线的斜率和截距。这些计算出来的参数模型会悄悄地保存在自己的属性里,属性名通常会带个下划线, 比如 coalf 就是 系数, intercept 就是 拮据。你看算出来的 coalf 大 约是一点九七七, intercept 大 约是负零点九零三,跟我们生成数据时设定的二和负一差不多,说明模型学得还不错。 第五步,预测新数据模型训练好了,现在我们想知道,如果 x 取一些新的值,比如从负一到十一的一系列值,对应的 y 值应该是多少? 我们把这些新的 x 值也整理成 x fit 的 形式,然后调用 model dot predicts x fit 模型,就会根据他学到的直线方程给出预测的 y 值 y fit。 最后我们把原始数据点和这条拟合出来的直线画在一起,就得到了图五十五。看起来这条线确实很好地概括了数据的整体趋势。 我们再来看一个有监督学习的例子,还是用渊伪花数据。这次做分类,目标是预测花的种类。我们选用一个简单又快的方法,高斯朴素贝叶斯。 朴素贝叶斯家族的模型通常不需要太多调餐,很适合快速试水。在动手之前有个重要的步骤,划分数据集。我们不能用全部数据来训练,然后用同样的数据来测试,那样成绩再好也可能是在原地打转。 正确的做法是把数据分成两部分,一部分用来训练模型,另一部分用来测试模型的泛化能力。 这里用 train test split 函数很方便地完成了这个任务。然后选择模型 gaussian nb 实力化,用训练级 x train y train 拟合模型,最后用测试级 x test 进行预测,得到 y model。 最后用 accuracy score 计算预测结果。 y model 和真实标签 ytest 的 匹配程度,也就是准确率,在这个例子里,准确率高达百分之九十七,说明即使是简单的模型,对这个数据集也学得很好。 现在我们来看,无监督学习的例子还是圆尾花,这次的目标是降维。圆尾花有四个特征,画图不方便,我们想把它压缩到二维,方便可式化。我们用 pca 主成分分析,这是一种非常经典的限性降维方法。 pca 的 目标是找到数据中方差最大的方向,把数据投影到这些方向上。我们指定 n components 等于二,告诉 pca, 我 们想要两个新的特征, pca 模型只需要 x rays 就 能拟合,因为它不需要标签。 拟合完成后,调用 transform 方法,就把原来的一百五十乘四的数据矩阵变成了一百五十乘二的新矩阵 x 二 d。 我们把这两个新维度 pca 一 和 pca 二加回到原始数据框里,然后用 c 本画散点图,如图五到十六所示。 神奇的事情发生了,虽然 pca 完全不知道花的种类,但它找到的这两个新维度竟然能把不同种类的花很好的分开,特别是 stosa, 几乎完全独立。 这说明鸳鸯花的四个特征里确实存在很强的腺性结构,可以用两个维度来近似表示。 最后我们用鸳鸯花数据试试具类。这次我们用高丝混合模型 g m m g m m 比 k means 更复杂一点,它假设每个醋的数据点是服从某种高丝分布的,可以捕捉到更复杂的醋形状。 我们同样需要指定一个超参数 n components, 告诉 g m m。 我 们想分成几类。根据渊伪花数据,我们知道有三种花,我们就设为三 g m m 模型同样只需要 xyz 就 能拟合。拟合完成后,调用 predict 方法, 模型会给每个数据点分配一个簇标签, y g m m。 我 们把这个标签加到数据框里,然后按照簇标签把数据分成三组,分别画在三个图里,如图五到十七所示。 可以看到 g m m 成功地把数据分成了三个簇,而且有趣的是,这三个簇的分布跟真实的鸳鸯花种类分布非常吻合, 特别是 satosa, 几乎完美的被分到了一个簇里。这再次证明,渊尾花数据的特征差异确实很大,即使没有标签句类算法,也能有效地把它们区分开来。 理论和渊尾花都搞定了,咱们来点更刺激的手写数字识别,这可是个经典的应用场景。 psychic learn 自带了一个手写数字的数据集,我们先加载看看。 这个数据集里有一千七百九十七张手写的数字图片,每张图片都是八乘八像素的灰度图,我们用 matlablab 展示一下,前一百张如图五到十八所示。哇,密密麻麻的各种歪瓜裂枣的数字都有,挺有挑战性的。 要把这些图像数据喂给 psychiclearn, 我 们得先把它们转换成 x 和 y 的 形式。好消息是, digits 对 象已经帮我们准备好了。 digits data 就是 我们需要的特征矩阵 x, 它把每张八 x 八的图像展平成了一个长度为六十四的一维数组,所以 x 的 形状是一千七百九十七六十四。 digits dot target 就是 目标数组。 y 里面是每个图像对应的数字标签,比如零一二,一直到九。 现在我们面对的是一个六十四维的数据空间,直接画图是画不出来的,怎么办?降维, 我们再次请出 iso map, 把它降到二维,你和和转换完成后, data projected 的 形状就是一千七百九十七二。我们把这些二维坐标画出来,颜色代表原始的数字标签。

每天学习一个例子,命令,呃,今天呢,咱们来学习 time 命令, time 命令它也是用来查看文件的,查看文件内容的, 咱们前面是不是学了一个 time 命令啊? time 命令是从上往下查看,那么 time 命令刚刚反过来,它是从文件的末尾向上查看指定函数的文件内容,当然默认函数也是一样是行。那么命令格式比较简单,一个 time 选项加文件,它常用选项呢?有两个,一个杠 n 指定我要显示的函数, 第二个是杠 f, 杠 f 表示持续监控文件,那么我们来看啊,怎么用?首先来看它的基本用法,比如还是一样,我们去查看一下杠 nvr 还是这个文件 log 下的 messages, 那 么这里面文件我会看到啊,它一共是不是有一百五十二行数据啊?那么下面呢,我用 had, 比如杠五,是不是查看前五行数据?前五行数据我用一个叫 vr 下的 log 下的 message, 注意了啊,最后一行是个四十七 message, ok, 这会查看的是不是九到十三呀?九到十三就是他的,我们来看九到十三,九到十三 来看九到十三是不是前五行数据啊,是不是?那我现在要查看后行怎么办呢?后行就用 tab tab 命令,然后杠五,然后还是一样 v r 下的 log 下的 message 执行, ok, 这会显示的是不是四十七啊?它最后一行是不是四十七, ok, 通过 pair 啊,可以查看从后向前查看多少行数据,这是他的一个用法,默认一样的是十行,比如说我在这, 我在什么都不写,它是十行, ok, 那 么同样的,我们说 pair 命令啊,除了可以查看指定行数据,它还可以对这个文件进行持续监控。什么意思呢?我们来看,我现在有一个文件叫这个加中点客服文件,我先看了一下,这里面文件内容啊,比较少,就一行数据,那么我用 pair 加钟,然后呢?我前面加上个谁呢?加上杠 f, 让他持续监控,然后在这回抄,你会看到我当前这个界面就停到这了,停到这了,然后我利用另外一个终端来给它发送数据,那我为了看的清晰一点啊,我把这个文件移到下面, 移到下面之后呢,我现在往这个文件里写个数据,比如说我去写入到加钟 加重点克服里面来看啊,我这边一敲,回抄是不写进去了,来看上面是不自动变化了,然后同样的我再写一个,比如说开口,比如说我要 come 加重, 然后再加重点克服,然后回抄,你会看到这边一写入,这边是不是就变化了?那么也就是说我用杠 f 啊,他会对这个文件进行持续监控。持续监控?什么?持续监控他的变化?当然你说我不想监控怎么办呢? ctrl 加 c 退出来能看到吧? ok, 这就是泰尔命令的用法。