写在前面的废话:

好吧,不得不说鱼C的markdown文本编辑器挺不错的,功能齐全。再次感谢小甲鱼哥哥的python视频让我去年大三下学期的时候入门了编程,爱上了编程这门语言,由于是偏冷门的统计学,在实习以后就决定把方向放在数据挖掘方面了,越来越发现专业课的重要性。在大家都忙着参加各种培训的日子里面,我就在去年寒冷的冬天把甲鱼哥的python视频一字不落的看完了;现在,在别人拼命参加校招的日子里,我就来学习“机器学习”这里面的算法了(ps:工科学校的理科妹子表示很难找到数据分析工作,人家只要研究生)。好吧,我就不信邪了,硬是开启了持续两个月的Ng教授的coursera上面的“机器学习”课程(里面的assignment很简单,使用matlab完成),刚好实验室进货一本《机器学习实战》,也就拿来练练手,让自己的python进阶一下,之前各种web后台折腾,尤其是爬虫,然而我不想帮别人爬数据,我要分析数据,挖掘潜在信息,程序是工具,掌握业务趋势才是王道!
不废话了,接下来的笔记系列都是我在coursera上面的领悟,根据自己的手写笔迹以及《机器学习实战》这本书的代码得来的,希望不习惯更新博客的我能把这件事情坚持下来。加油!


正文:
这两年估计很多人都听说过“大数据”,目前机器学习也在悄无声息的进入到部分数据挖掘领域。当然,国外数据挖掘已经很成熟了,机器算法应用的范围也就更加广泛,分别有:网络搜索,邮件分类;机器人;生物和医药学研究等等。

这里举几个具体例子:

  • 网站数据:你可以根据网站的点击数据了解产品的欢迎程度;
  • 医疗数据:根据医疗记录了解病人的病情方便诊断;
  • 生物方面:比如基因DNA序列可以用于研究人类的某些特质甚至遗传方面的信息;
  • 工程领域:指导无人机自主运行,手写字体的识别,NLP(Natural Language Processing 俗称”自然语言处理“),以及计算机视觉;
  • 推荐系统:亚马逊的产品推荐系统(貌似这个也可以被分到网站数据)。

那么啰嗦了这么多,什么是机器学习呢?
这里有两种定义:

  1. 通俗点讲:研究让机器拥有人一样的学习能力,该能力不被固定的编程实现或操作,属于机器本身的一种自主学习行为。
  2. 学术点讲:通过经验E,针对某些任务T,设计出一段计算机程序,该程序拥有特定的绩效指标P,程序的目的就是根据历史经验E的不断的积累在任务T中提高它的绩效指标P。

学术就是学术,太生硬了,也是我不考研的原因之一,so boring~通俗的举个例子:


下跳棋:
E = 玩了多局跳棋所累积的经验
T = 下跳棋本身就是一个任务
P = 程序赢得下一次跳棋的可能性

机器学习主要包括两个任务:分类和回归。前者非常容易理解,就是在一个预测任务中把数据分类;后者回归主要是统计意义上的,用于预测数据,做过数学建模的同学估计对拟合曲线相当熟悉;是的,回归里面一个非常重要的任务——数据拟合曲线:通过给定的数据集合拟合出最优曲线,使得该曲线尽量能够反应数据的趋势,在不过度拟合的情况下能让给定的数据集落在线附近(上)。而机器学习包括“监督学习”和“非监督学习”,那么分类和回归都属于“监督学习”。接下来抛砖引玉,本文的重点就是区分“监督学习”和“非监督学习”,后面的文章中讲分别对这两种学习进行细分,甚至回归和分类里面的细节更是数不甚数。

  • Supervised Study

Example 1:房价预测(线性回归)
假设,你手上有一堆房价以及房子大小面积的数据,让你根据房子大小估算房价,然后你根据数据得出下图(图太丑,不许勿喷)

你根据数据的分布分别拟合直线和曲线,两种拟合的线在x1这个点预测分别得到y1和y2;因此,不同的曲线对应不同的预测结果。那么,为什么我说这里的房价预测就是一种“监督学习”呢?因为有确定的答案被给出了,也就是说在数据集中,不同的房子的面积分别对应着不同的房价。也就是说,这类算法明确的知道自己预测的是什么(本例中预测房价),目标变量非常明确。
以上问题也被称为回归问题:预测连续的输出值。

Example 2:肿瘤癌的预测:良性肿瘤和恶性肿瘤(Logistic回归)

上图中的“×”符号代表的就是数据集,指的是不同肿瘤大小对应是否为恶性肿瘤(1),如果是恶性肿瘤,那么对应数值1;反之对应数值2。这就是一个典型的二值化问题,也被称为(Logistic回归问题),常用于分类:离散的输出值(0或者1)。

当然,在实际的预测中,肿瘤是否恶性的判断需要依据很多属性,比如:肿瘤块的厚度、细胞的形状等等,而影响肿瘤大小的因素也有很多,比如年龄等等。这么多属性,如果都用画图的方式来拟合数据,就显得比较低效率,因此,我们引入了“向量机”,以后我们会讨论到这个问题,有兴趣的可以谷歌一下。

  • Unsupervised Study

顾名思义就是没有给定的正确的答案
先上图:

单纯是给一堆数据,如上图的黑色小圆圈代表数据集,让你找到这些数据的结构特点,也就是聚类(正所谓:物以类聚,人以群分)。很明显,你没有标准答案,因此既可以把数据按照红色的椭圆形聚为2类,又可以按照紫色的线条圈起来的范围聚为3类,还可以按照蓝色正方形圈为2类,没有人说你这种聚类是错误的,只要你说出你的理由。

看起来,非监督学习无理可循,但是应用范围相当广泛:组织计算机集群,社交网络分析,市场份额分割以及天文数据分析。在未来大数据下需要被探索的东西太多,未知数也往往深不可测,因此非监督学习这个学科的“水”相当深~

嗯,暂且介绍到这里,老衲要午睡了,下午还要上courera的课程,第四周了,欢迎有兴趣的朋友和我成为同学~

下集预告:线性回归以及梯度下降算法。

python机器学习《入门》的更多相关文章

  1. Python机器学习--回归

    线性回归 # -*- coding: utf-8 -*- """ Created on Wed Aug 30 19:55:37 2017 @author: Adminis ...

  2. 吴裕雄 python 机器学习——回归决策树模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.model_s ...

  3. python机器学习《回归 一》

    唠嗑唠嗑 依旧是每一次随便讲两句生活小事.表示最近有点懒,可能是快要考试的原因,外加这两天都有笔试和各种面试,让心情变得没那么安静的敲代码,没那么安静的学习算法.搞得第一次和技术总监聊天的时候都不太懂 ...

  4. 常用python机器学习库总结

    开始学习Python,之后渐渐成为我学习工作中的第一辅助脚本语言,虽然开发语言是Java,但平时的很多文本数据处理任务都交给了Python.这些年来,接触和使用了很多Python工具包,特别是在文本处 ...

  5. [Python] 机器学习库资料汇总

    声明:以下内容转载自平行宇宙. Python在科学计算领域,有两个重要的扩展模块:Numpy和Scipy.其中Numpy是一个用python实现的科学计算包.包括: 一个强大的N维数组对象Array: ...

  6. 2016年GitHub排名前20的Python机器学习开源项目(转)

    当今时代,开源是创新和技术快速发展的核心.本文来自 KDnuggets 的年度盘点,介绍了 2016 年排名前 20 的 Python 机器学习开源项目,在介绍的同时也会做一些有趣的分析以及谈一谈它们 ...

  7. [resource]Python机器学习库

    reference: http://qxde01.blog.163.com/blog/static/67335744201368101922991/ Python在科学计算领域,有两个重要的扩展模块: ...

  8. python机器学习实战(四)

    python机器学习实战(三) 版权声明:本文为博主原创文章,转载请指明转载地址 www.cnblogs.com/fydeblog/p/7364317.html 前言 这篇notebook是关于机器学 ...

  9. python机器学习工具包

    1. scikit-learn: Machine Learning in Python scikit-learn是一个基于NumPy, SciPy, Matplotlib的开源机器学习工具包,主要涵盖 ...

  10. Python机器学习:5.6 使用核PCA进行非线性映射

    许多机器学习算法都有一个假设:输入数据要是线性可分的.感知机算法必须针对完全线性可分数据才能收敛.考虑到噪音,Adalien.逻辑斯蒂回归和SVM并不会要求数据完全线性可分. 但是现实生活中有大量的非 ...

随机推荐

  1. Effective Java 13 Minimize the accessibility of classes and members

    Information hiding is important for many reasons, most of which stem from the fact that it decouples ...

  2. 问题解决——基于MSCOMM32.OCX控件的类在客户机不能创建控件

    大家不要笑我了,我不喜欢用那个人家写的串口类. 所以导出了MSCOMM32.OCX的类,然后在此基础上写了一个串口打印机的小工具类. -------------声明--------------- 本文 ...

  3. jQuery form插件的使用--ajaxForm()和ajaxSubmit()的可选参数项对象

    一.前提说明 Form Plugin API 里提供了很多有用的方法可以让你轻松的处理表单里的数据和表单的提交过程. 测试环境:部署到Tomcat中的web项目. 二.简单介绍 本文演示的是:jQue ...

  4. Python Backup Files

    近来书写 Python 脚本进行替换以前的 shell 脚本,发现 Python 优于 shell 的最直观的一点Python 结构明了,可读性高(本人认为)在此做一些记录 本次记录利用 Python ...

  5. Linux搭建DNS服务器

    Linux系统信息: Version: Centos 6.6 Ip address:10.0.0.104 Hostname: extmail.com 配置系统 hostname Vim /etc/sy ...

  6. 两台SQL Server数据同步解决方案

    复制的概念 复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式.使用复制技术,用户可以将一份数据发布到多台服务器上,从而使不同的服务器用户都可以在权限的许可 ...

  7. TEZ安装试用

    下载地址:http://pan.baidu.com/s/1ZNpyI 第一次使用maven编译 tez的时候到tez ui部分报错,google后发现有人遇到类似问题是因为maven版本的问题, 当时 ...

  8. dipole antenna simulation by HFSS

    工作频点为1GHz,新建工程,添加新设计,编辑添加下面的变量 建立天线模型,即两个金属圆柱.编辑完一个振子后,另一半可以用镜像命令产生参数如下设置 ,材料为PEC 两个圆柱间建立一个矩形片,连接两个圆 ...

  9. 电磁兼容设计经验(转载 原文电子科技大学硕士毕业论文DDS扩频技术研究)

    2 Corinthians 1:3-4“[Praise to the God of All Comfort] Praise be to the God and Father of our Lord J ...

  10. runc的detach, console, tty等相关问题

    runc 端解析: 1. runc/utils_linux.go func (r *runner) run(config *specs.Process) (int , error) 在该函数中第一次对 ...