[关闭]
@wuqi0616 2017-12-05T12:46:16.000000Z 字数 4282 阅读 1006

机器学习实战 - 分类-1机器学习基础

机器学习入门资料


监督学习一般使用两种类型的目标变量:
标称型目标变量: 结果只在有限目标集中取值,如真与假、动物分类集合。
数值型目标变量: 结果可以从无限的数值集合中取值,如0.100、42.001、1000.743等

分类算法介绍:
1. k-近邻算法,使用某种距离计算方法进行分类
2. 决策树,直观,容易理解,但是相对难于实现
3. 使用概率论建立分类器
4. Logistic回归,如何使用最优参数正确地分类原始数据
5. 支持向量机
6. 元计算——AdaBoost,它由若干个分类器构成

非均衡分类问题:一旦训练样本某个分类的数据多于其他分类的数据,就会产生非均衡分类问题。

1机器学习基础

1.1何谓机器学习

简单地说,机器学习就是把无序的数据转换成有用的信息。

1.1.1传感器和海量数据

移动计算和传感器产生的海量数据意味着我们面临越来越多的数据,如何从海量数据中抽取到有价值的信息僵尸一个非常重要的课题。

1.2关键术语

专家系统:专家系统是一个智能计算机程序系统,其内部含有大量的某个领域专家水平的知识与经验,能够利用人类专家的知识和解决问题的方法来处理该领域问题。
特征:不同分类具有不同的特征,能够象征性的代表这个分类。
训练集:用于训练机器学习算法的数据样本集合。(必须确定知道目标变量的值)
目标变量:机器学习算法的预测结果,在分类算法中目标变量的类型通常是标称型的,在回归算法中通常是连续型的。
知识表示:把知识客体中的知识因子与知识关联起来,便于人们识别和理解知识。可以采用规则集的形式,可以采用概率分布的形式,可以是训练样本集中的一个实例。

1.3机器学习的主要任务 —— 分类

主要任务:分类和回归,属于监督学习
1. 分类:将实例数据划分到合适的分类中。
2. 回归:主要用于预测数值型数据。
聚类:无监督学习中,将数据集合分成由类似的对象组成的多个类的过程。
密度估计:无监督学习中,寻找描述数据统计值的过程。

此处输入图片的描述

1.4选择合适的算法

问题:
1. 使用机器学习算法的目的,想要算法完成何种任务?
2. 需要分析或收集的数据是什么?
具体(常规):
(1)是否要预测目标变量的值?监督学习/无监督学习
如果是监督学习:
(2)进一步确定目标变量的类型:是否目标变量是离散型?分类算法/回归算法
如果是无监督学习
(2)进一步分析是否需要将数据划分为离散的组?聚类算法/密度估计算法
如果还需要估计数据与每个分组的相似程度,需要密度估计算法。

1.5开发机器学习应用程序的步骤

步骤:
1. 收集数据。方法很多,可以使用公开可用的数据源。
2. 准备输入数据。将数据标准化,这种标准数据格式可以融合算法和数据源,方便匹配操作。
3. 分析输入数据。为了确保前面两步有效,最简单的方法是用文本编辑器打开数据文件,查看得到的数据是否为空值。主要要确保数据集中没有垃圾数据。
4. 训练算法。
5. 测试算法。
6. 使用算法。

1.6 Python语言的优势

(1) Python的语法清晰;
(2) 易于操作纯文本文件;
(3) 使用广泛,存在大量的开发文档;

1.6.1可执行伪代码

python具有清晰的语法结构,又称可执行伪代码。
- 默认安装了很多高级数据类型,如列表、元组、字典、集合、队列等,无需进一步编程就可以使用这些数据类型的操作。
- python语言处理和操作文本文件非常简单,非常易于处理非数值型数据。
- python语言提供了丰富的正则表达式函数以及很多web页面数据库,从HTML中提取数据变得非常简单、直观。

1.6.2Python 比较流行

1.6.3Python语言的特色

1.6.4Python语言的缺点

唯一不足是性能问题
Python可以调用C编译的代码,其中C++Boost库适合完成这个任务,其他类似于Cython和PyPy的工具也可以编写强类型的Python代码,改进一般Python程序的性能。

1.7NumPy函数库基础

进入Python Shell的开发环境:
- Windows 命令行提示符下输入c:\Pyhton27\python.exe [我自己是python]
- Linux或者Mac OS的终端输出python [我自己是python]
看到>>>就是进入Python shell开发环境

  1. mat.I\\逆矩阵
  2. eye(4)\\单位矩阵

2 Python 入门

2.1 Python 安装

书中提到,需要安装Python2.7、Numpy 和 Matplotlib。
Python不支持向下兼容,在Python3.x下,书中代码不一定正常运行。
最简单的安装方法是用软件包安装程序来安装。

2.1.1 Windows系统

http://www.python.org/getit/下载安装包
http://sourceforge.net/projects/numpy/files/NumPy/下载二进制NumPy文件。
http://blog.csdn.net/sd2558448/article/details/51234809安装Numpy教程

2.1.2 Linux系统

https://www.cnblogs.com/MasterE/p/6619157.html安装Numpy教程
Python 将这些模块安装在Python主目录下的Lib\site-packages子目录,默认安装方式为>python setup.py install

2.2入门

Elkner、Downey 和 Meyers 的在线免费资料:“How to Think like a Computer Scientist”(http://www.openbookproject.net/thinkCS/

2.2.1容器类型

用户可以添加模块创建更多容器类型,python常用的容器有:
- 列表(List):存放有序对象的容器,可以容纳任何数据类型:数值、布尔型、字符串等等 jj=[1,'nice hat']
- 字典(Dictionary):存放无序的键值映射(key/value)类型数据的容器,键的类型可以是数字或者字符串。在其他编程语言中,字典一般被称为关联数组或者映射。jj={1:42,'dog':'dalmatian'}
- 集合(Set):和数学中集合的概念类似,是指不同元素组成的合集。集合支持数学运算,并集(|),交集(&)补集(-)。sB=set([4,5,6,7]);sA=set([1,2,2,2,4,5,5]);sA-sB;sA|sB;sA&sB

2.2.2控制结构

python的缩进采用空格或者制表符完成。
(1)if语句
if 、 elif 、 else
(2)for语句
与Java或C++0x中的增强的for循环:

  1. for item in sB
  2. print item

2.2.3列表推导式

  1. myList=[item*4 for item in a]
  2. [item*4 for item in a if item>2]

2.3NumPy快速入门

  1. //数组
  2. from numpy import array
  3. mm=array((1,1,1))
  4. pp=array((1,2,3))
  5. pp+mm
  6. //每个元素乘法
  7. pp*2
  8. //每个元素平方
  9. pp**2
  10. //访问数组元素
  11. pp[1]
  12. //多维数组
  13. jj=array([[1,2,3],[1,1,1]])
  14. //多维数组访问
  15. jj[0][1]
  16. jj[0,1]
  17. //数组相乘,元素对应相乘
  18. a1*a2
  19. //矩阵:需要导入matrix或者mat模块
  20. from numpy import mat,matrix
  21. ss=mat([1,2,3])
  22. //访问矩阵单个元素
  23. ss[0,1]
  24. //把python列表转换成NumPy矩阵
  25. mat(pyList)
  26. //矩阵乘法 :数学运算
  27. mm*ss.T//T转置
  28. from numpy import shape
  29. shape(mm)//查看矩阵或者数组的维数
  30. //用multiply完成元素相乘法
  31. from numpy import multiply
  32. multiply(mm,ss)
  33. //排序
  34. mm.sort()//这是原地排序
  35. dd=mat([4,5,11])
  36. dd.argsort()//获得每个元素的排序序号
  37. //求均值
  38. dd.mean()
  39. //取矩阵某行元素,用冒号
  40. jj[1,:]
  41. jj[1,0:2]//这里与matlab不同0:2只有0,1

2.4Beautiful Soup包

利用Beautiful Soup包查找和解析HTML,下载对应的模块:
http://www.crummy.com/software/BeautifulSoup/#Download

2.5Mrjob

Mrjob用于在Amazon网络服务上启动MapReduce作业。安装mrjob: http://github.com/Yelp/mrjob

  1. //AWS,配置环境变量
  2. set AWS_ACCESS_KEY_ID=1269696969696969
  3. set AWS_SECRET_ACCESS_KEY=1269696969696969
  4. echo %AWS_ACCESS_KEY_ID%
  5. echo %AWS_SECRET_ACCESS_KEY%

2.6Voote Smart

2.7Python-Twitter


添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注