内容提要
一些专有名词
- 数据集(data set) 数据的整体
- 样本(sample) 每一行的数据
- 特征(feature) 除最后一列,每一列所表达的信息
- 标记(label) 最后一列
机器学习的分类
监督学习
给机器训练的数据拥有“标记”或“答案”
分类任务
回归任务:结果是一个连续数字的值,而非一个类别
非监督学习
对没有标记的数据进行分类-聚类分析,对数据进行降维处理
- 特征提取:信用评级和胖瘦
- 特征压缩:PCA算法,对数据进行降维处理
- 异常检查:不符合数据集的一般性特征
半监督学习
标记缺失,先对数据集进行非监督学习排除异常项,之后再进行监督学习
增强学习
根据采取行动的结果,学习行动方式
其他的分类
对学习算法选取的原则
奥卡姆剃刀(简单的就是好的)
学习环境的安装
使用集成开发环境anaconda,集成了python机器学习的相关库以及一些开发工具,比如Jupyter notebook,自动配置环境变量,安装成功界面如下
选择第二个启动Web版Jupyter notebook,选择一个路径新建notebook,一个新的以ipynb
为后缀的文件将被创建
使用pycharm CE IDE进行python开发,社区版足以胜任python机器学习相关开发。新建工程的时候注意选用anaconda内置的python,否则无法使用相关的机器学习库
Jupyter notebook的一些使用技巧
相关运行指令
- 使用
%run
来运行本地文件
- 使用
import
引入模块,和普通的python语法一样,可以随意随地引入模块,比较灵活
测试指令
numpy对于矩阵的基本操作
1 2
| '''先引入numpy模块,并自定义模块名''' import numpy as np
|
生成矩阵
1 2 3 4 5
| np.array([1,2,3,4])
np.array([i for i in range(10)])
|
- 自定义维度零矩阵,默认是类型float64,通过
dtype
设置类型
1 2 3 4
| np.zeros(shape=[3,5], dtype=int)
|
- 自定义维度一矩阵,默认是类型float64,通过
dtype
设置类型
1 2 3 4
| np.ones(shape=[3,5], dtype=int)
|
- 自定义维度自定义n矩阵,通过
fill_value
设置n
1 2 3 4
| np.full(shape=[3,5], fill_value=666.0)
|
1 2
| np.arange(start=0, stop=5, step=0.5)
|
1 2 3
| np.linspace(start=0, stop=20, num=10)
|
1 2 3
| np.random.randint(low=0, high=10, size=[2,3])
|
1 2 3
| np.random.random(size=[2,3])
|
1 2 3
| np.random.normal(10, 100, size=[2,3])
|
查看矩阵
1 2 3 4 5 6
| ''' 预定义一个一维矩阵一个二维矩阵 ''' x = np.arange(6)
X = np.arange(6).reshape([2,3])
|
1 2 3
| NA = np.array([1,2,3, 4.0]) NA.dtype
|
1 2
| x[::-1] array([5, 4, 3, 2, 1, 0])
|
基础操作矩阵
1 2 3 4 5 6
| ''' 预定义一个一维矩阵一个二维矩阵 ''' x = np.arange(6)
X = np.arange(6).reshape([2,3])
|
- 对numpy.arange进行切变后的结果和源数据共享内存,若想完全复制需要使用copy方法
1 2 3
| ll = np.array([[0],[1],[2]]) ll[:, 0]
|
拼拆矩阵
1 2 3 4 5 6 7
| '''预定义两个二维矩阵''' XX = np.full(shape=[2,3], fill_value=233)
YY = np.full(shape=[2,3], fill_value=666)
|
1 2 3
| np.concatenate([XX, YY], axis=1)
|
1 2 3 4 5
| np.concatenate([XX, YY], axis=0)
|
1 2 3 4 5 6
| SS = np.arange(10) s1, s2, s3, s4 = np.split(SS, [3, 6, 8])
|
1 2 3
| np.split(YY, [1], axis=0)
|
1 2 3
| np.split(YY, [1], axis=1)
|
1 2 3 4 5 6 7
| xx = np.array([1,2,3]) np.concatenate([XX,np.reshape(xx, (1, -1))])
np.vstack([XX,xx])
|
1 2 3 4 5 6
| yy = np.array([[1],[2]]) np.concatenate([XX, yy], axis=1)
np.hstack([XX, yy])
|