写在前面的废话:

好吧,不得不说鱼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. spring源码分析的书到了

    现在写java后台可以说都能用上spring 在原有的spring基础上,加上自己定制的一些功能,能够使编程变得非常简化. 我也准备在我的毕业设计中写一些spring改造的东西.用来简化开发. 就拿连 ...

  2. 获取byte数组的实际使用长度

    背景:byte.length只能获取到初始化的byte数组长度,而不是实际使用的长度,因此想要获取到实际的使用长度只能靠其他方法实现. 方法一: public class ByteActualLeng ...

  3. python操作db2和mysql ,ibm_db

    我需要提取mysql和db2的数据进行对比,所以需要用python对其都进行操作. python对mysql进行操作应该没什么问题,就是安装drive后就可以了,在上一篇中有讲安装python-mys ...

  4. linux路由表命令

    转自此大神http://www.cnblogs.com/gunl/archive/2010/09/14/1826234.html 留在好查阅 linux 路由表维护 查看 Linux 内核路由表 使用 ...

  5. 2015年p2p网络借贷平台的发展现状

    2015年春暖花开,莺飞草长,股市大涨大跌起起落落,P2P网络借贷收到越来越多的人关注,P2P网络借贷平台是p2p借贷与网络借贷相结合的金 融服务网站,这么多P2P网络借贷平台排我们应该如何选择呢?小 ...

  6. css shorthand属性简写

    一.什么是shorthand 属性简写(shorthand)就是一次性声明一组相关的属性.好处呢当然是众所周知的,让css从臃肿无序升级为简洁有效具有高可读性. 大多数的人都使用属性简写,我也用,但是 ...

  7. NPOI 读取excel到DataTable 读取隐藏列 读取公式列

    处理思路: 1.打开excel 用NPOI进行读取: 2.读取第一个Sheet: 读取过程中: a.先设置相应列 不隐藏 b.读取Cell时 先判断是否的包含公式 相应代码如下: public sta ...

  8. NOIP2008 普及组T2 排座椅 解题报告-S.B.S

    题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳.同学 ...

  9. 怎么在ZBrush中渲染漫画风格的插画

    创建“漫画插画”的外观和感觉想必一定很有趣吧,但是,获得想要的精确外观有时也会令人相当沮丧,因此了解一些基本原则,创建类似于ZBrush漫画MatCaps的作品很有必要. 若有疑问亦或者想查看具体的视 ...

  10. 半径无关单核单线程最快速高斯模糊实现(附完整C代码)

    之前,俺也发过不少快速高斯模糊算法. 俺一般认为,只要处理一千六百万像素彩色图片,在2.2GHz的CPU上单核单线程超过1秒的算法,都是不快的. 之前发的几个算法,在俺2.2GHz的CPU上耗时都会超 ...