文章目录
机器学习和人工智能,一直觉得挺神秘而且又高大上的,经常听说,但又因为各种数学概念而没有付诸实践。
但是,如果不做专职的相关岗位开发,自己跑一些学习程序是否可行呢?比较现在各种框架都挺多的了,即使再不济,了解一下具体都能做哪些东西也是很不错的。
入手了周志华的《人工智能》一书,刚看了开头,觉得讲的非常好。以例子开始逐步深入,做了如下笔记。

以挑西瓜的例子开篇: 为什么色泽青绿、根蒂蜷缩、敲声浊晌,就能判断出是正熟的好瓜?
因为我们吃过、看过很多西瓜,所以基于色泽、根蒂、敲声这几个特征我们就可以做出相当好的判断。
**过渡,引出学习经验:**类似的,我们从以往的学习经验知道,下足了工夫、弄清了概念、做好了作业,自然会取得好成绩。可以看出,我们能做出有效的预判?是因为我们已经积累了许多经验,而通过对经验的利用?就能对新情况做出有效的决策。
**进而来说机器学习:**如果说计算机科学是研究关于"算法"的学问,那么类似的,可以说机器学习是研究关于"学习算法"的学问。

将西瓜的例子归纳为下面的表格:
| 序号 | 色泽 | 根蒂 | 敲声 |
|---|---|---|---|
| 1 | 青绿 | 蜷缩 | 浊响 |
| 2 | 乌黑 | 稍蜷 | 沉闷 |
| … |
对照表格,了解一些相关术语:
对于单条记录,以“色泽”、“根蒂”、“敲声”三个属性标识如下图:

每个属性作为一个坐标轴,就形成了一个三维的坐标系。 坐标系还记得吧,希望还没全还给老师。
属性张成的空间称为**“属性空间” (attribute space) “样本空间” (sample space) 或"输入空间"**,即图中的长方体。
当然,实际上一个样本(西瓜)肯定不止这三个属性,这里只是举例。每个属性代表一个坐标轴,那就会组成一个d维空间,d为样本的属性数。
每个西瓜都可在这个空间中找到自己的坐标位置。由于空间中的每个点对应一个坐标向量,因此我们也把…个示例称为一个**“特征向量” (feature vector)。**
从数据中学得模型的过程称为**“学习” (learning) 或"训练" (training)**;
这个过程通过执行某个学习算法来完成.训练过程中使用的数据称为**“训练数据” (training data)** ;
其中每个样本称为一个训练样本" (training sample),;
训练样本组成的集合称为"训练集" (training set).
学得模型对应了关于数据的某种潜在的规律,因此亦称"假设" (hypothesis);
这种潜在规律自身,则称为**“真相"或"真实” (ground-truth)** ;
学习过程就是为了找出或逼近真相.本书有时将模型称为"学习器" (learner) ,可看作学习算法在给定数据和参数空间上的实例化.
训练不止需要样本的属性信息,还需要样本的"结果"信息,例如" ((色泽:青绿;根蒂二蜷缩;敲声=浊响),好瓜)" .这里关于示例结果的信息,例如"好瓜",称为标记 (labe1);
拥有了标记信息的示例,则称为**“样例” (example)**。如下图

若我们欲预测的是离散值,例如"好瓜" “坏瓜”,此类学习任务称为**“分类” (classification)**;
若欲预测的是连续值?例如西瓜成熟度 0.95 0.37,此类学习任务称为**“回归” (regression)**.
对只涉及两个类别的**“二分类” (binary classification)** 任务,通常称其中一个类为正类(positive class),另一个类为**“反类” (negative class);**
涉及多个类别时,则称为**“多分类” (multi-class classificatio)**任务。
学得模型适用于新样本的能力,称为"泛化" (generalization) 能力.具有强泛化能力的模型能很好地适用于整个样本空间.

在数学公理系镜中,基于一组公理和推理规则推导出与之相洽的定理,这是演绎;而"从样例中学习"显然是一个归纳的过程,因此亦称"归纳学习" (inductive learning) .。
我们可以把学习过程看作一个在所有假设(hypothesis) 组成的空间中进行搜索的过程。如下图

有多少种可能呢,就是一个排列组合。现实问题中我们常面临很大的假设空间,但学习过程是基于有限样本训练集进行的,因此,可能有多个假设与训练集一致,即存在着一个与训练集一致的"假设集合",我们称之为**“版本空间” (version space)**。


对于图1.2的西瓜版本空间,对应(色泽口=青绿;根蒂=蜷缩;敲声=沉闷)这个新收来的瓜,如果我们采用的是"好瓜<->(色泽=* )(根蒂=蜷缩)(敲声=*),那么将会把新瓜判断为好瓜,而如果采用了另外两个假设,则判断的结果将不是好瓜。若仅有表1. 中的训练样本,则无法断定上述三个假设中明哪一个"更好, 那么计算机就傻了。
怎么办,任何一个有效的机器学习算法必有其归纳偏好,否则它将被假设空间中看似在训练集上"等效"的假设所迷惑,而无法产生确定的学习结果。

那么,有没有一般性的原则来引导算法确立"正确的"偏好呢? “奥卡姆剃刀” (Occam’s razor) 是一种常用的、自然科学研究中最基本的原则,即"若有多个假设与观察一致,则选最简单的那个。

脱离具体问题,空泛地谈论"什么学习算法更好"毫无意义,因为若考虑所有潜在的问题,则所有学习算法都一样好。要谈论算法的相对优劣,必须要针对具体的学习问题;在某些问题上表现好的学习算法,在另一些问题上却可能不尽如人意,学习算法自身的归纳偏好与问题是否相配,往往会起到决定性的作用。
我正在阅读SandiMetz的POODR,并且遇到了一个我不太了解的编码原则。这是代码:classBicycleattr_reader:size,:chain,:tire_sizedefinitialize(args={})@size=args[:size]||1@chain=args[:chain]||2@tire_size=args[:tire_size]||3post_initialize(args)endendclassMountainBike此代码将为其各自的属性输出1,2,3,4,5。我不明白的是查找方法。当一辆山地自行车被实例化时,因为它没有自己的initialize方法
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现
遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg
ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear
require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame
我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or