机器学习基础
- 有监督学习:给定某些特征去估计因变量,即因变量存在的时候。
- 回归:因变量是连续型变量,如:房价,体重等。
- 分类:因变量是离散型变量,如:是否患癌症,西瓜是好瓜还是坏瓜等。
- 无监督学习:给定某些特征但不给定因变量,建模的目的是学习数据本身的结构和关系。
教程出现的一些函数
- enumerate 函数
枚举函数。对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
for index, item in enumerate(np.unique(y)):
print (index, item)
0 0
1 1
介绍一下sklearn.datasets: Datasets 模块
玩具数据集
scikit-learn 内置有一些小型标准数据集,不需要从某个外部网站下载任何文件。这些数据集有助于快速说明在 scikit 中实现的各种算法的行为。然而,它们数据规模往往太小,无法代表真实世界的机器学习任务。
调用 | 描述 |
---|---|
load_boston ([return_X_y]) |
Load and return the boston house-prices dataset (regression). |
load_iris ([return_X_y]) |
Load and return the iris dataset (classification). |
load_diabetes ([return_X_y]) |
Load and return the diabetes dataset (regression). |
load_digits ([n_class, return_X_y]) |
Load and return the digits dataset (classification). |
load_linnerud ([return_X_y]) |
Load and return the linnerud dataset (multivariate regression). |
load_wine ([return_X_y]) |
Load and return the wine dataset (classification). |
load_breast_cancer ([return_X_y]) |
Load and return the breast cancer wisconsin dataset (classification). |
真实世界的数据集
scikit-learn 提供加载较大数据集的工具,并在必要时下载这些数据集。
一般以fetch_XXX
loaders和fetchers的所有函数都返回一个字典一样的对象,里面至少包含两项:shape为n_samples*n_features的数组,对应的字典key是data(20news groups数据集除外)以及长度为n_samples的numpy数组,包含了目标值,对应的字典key是target。
样本生成器
此外,scikit-learn 包括各种随机样本的生成器,可以用来建立可控制的大小和复杂性人工数据集。
- 分类和聚类生成器
这些生成器将产生一个相应特征的离散矩阵。 - 多标签
- 二分聚类
机器学习(统计)
机器学习: 追求最小化可约误差;
过程:
- 参数化
- 非参数化
复杂度越高的模型解释性越低。有时候我们可能更加倾向于预测性能,那么我们可以选择更复杂的模型进行估计,但是也不是一味追求复杂模型,因为可能会导致我们刚说的过拟合;如果我们倾向于解释性,那么可以选择复杂度相对较低的模型去估计。
模型精确度的评估
- MSE
- 偏差--方差权衡
- 方差(variance) 方差的含义:方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影
- 偏差(bias) 偏差的含义:偏差度量了学习算法的期望预测与真实结果的偏离程度,即刻画了学习算法本身的拟合能力。
一般而言,增加模型的复杂度,会增加模型的方差,但是会减少模型的偏差,我们要找到一个方差--偏差的权衡,使得测试均方误差最小