写在前面的废话:

好吧,不得不说鱼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. Cron 表达式详解和案例

    1. cron表达式格式: {秒数} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)} 2. cron表达式各占位符解释: {秒数} ==> 允许值范围: 0~59 ,不允许 ...

  2. 【linux】关于分析系统问题的前几分钟

    为了解决性能问题,你登入了一台Linux服务器,在最开始的一分钟内需要查看什么?你可以在几分钟内就对系统资源的使用情况和进程的运行状况有大体上的了解.无非是先查看错误信息和饱和指标,再看下资源的使用量 ...

  3. DataGridView单元格内容自动匹配下拉显示

    页面显示数据使用的控件是ComponentFactory.Krypton.Toolkit中的KryptonDataGridView控件.在指定“商品”单元格中需要根据用户输入内容自动匹配数据库中商品信 ...

  4. android去掉顶部标题栏

    在清单文件(manifest.xml)里面实现 <application> <activity android:name="cn.ui.activity.UserRegAc ...

  5. 23 其它话题 - 《Python 核心编程》

  6. String to Integer (atoi)

    Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. ...

  7. Cinder 调试 - cinder service 状态为 down

    1. 问题 我们经常会发现某个cinder service 的状态为 down.比如下面例子中 controller 上的 cinder-scheduler 和 block1 节点上 cinder-v ...

  8. Java 开发环境部署

    1.下载Java开发环境工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载后,双击jdk ...

  9. HDU 2065 “红色病毒”问题 --指数型母函数

    这种有限制的类棋盘着色问题一般可以用指数型母函数来解决,设Hn表示这样的着色数,首先H0=1,则Hn等于四个字母的(A,B,C,D)的多重集合的n排列数,其中每个字母的重数是无穷,且要求A,C出现的次 ...

  10. Android开发环境搭建(转)

    转载:http://www.cnblogs.com/zoupeiyang/p/4034517.html#1 引言   在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想 ...