Merge pull request #41 from hello19883/master

注释svdRec.py & 更新1.机器学习基础.md
This commit is contained in:
片刻
2017-03-20 23:31:38 +08:00
committed by GitHub
4 changed files with 64 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 KiB

View File

@@ -3,25 +3,59 @@
* 机器学习是什么
* 把无序的数据转换成有用的信息。
* 机器学习的意义
* 我们利用计算机来彰显数据背后的真实含义。
* 机器学习的任务
* 机器学习的主要任务就是分类。
* 分类:将实例数据划分到合适的分类中。
* 机器学习的另一项任务是回归。
* 回归:主要用于预测数值型数据。(例子———数据拟合曲线:通过给定数据点的最优拟合曲线)
* 目标变量
* 目标变量是机器学习预测算法的测试结果。
* 在分类算法中目标变量的类型通常是标称型的,而在回归算法中通常是连续型的。
* 机器学习的训练过程
* ![机器学习训练过程图](./1.机器学习基础训练过程.png)
* 监督学习
* 必须知道预测什么,即必须知道目标变量的分类信息。分类和回归属于监督学习。
* 样本集:训练数据 + 测试数据
* 训练样本 = 特征 + 目标变量
* 训练样本的集合称为训练样本集,训练样本集必须确定知道目标变量的值,以便机器学习算法可以发现特征和目标变量之间的关系。
* 特征(feature-是否有缺失情况) + 目标变量(分类-离散值<A/B/C、 是/否>/回归-连续值<0~100、 -999999>)
* 特征或者属性通常是训练样本集的列,它们是独立测量得到的结果,多个特征联系在一起共同组成一个训练样本。
* `知识表示`:机器已经学会如何识别鸟类的过程
* 1.可以采用规则集的形式
* 2.可以采用概率分布的形式
* 3.可以使训练样本集中的一个实例
* 非监督学习
* 数据没有类别信息,也不会给定目标值
* 聚类:在无监督学习中,将数据集合分成由类似的对象组成的多个类的过程称为聚类;
* 密度估计:将寻找描述数据统计值的过程称之为密度估计。
* 此外,无监督学习还可以减少数据特征的维度,以便我们可以使用二维或三维图形更加直观地展示数据信息。
* 选择算法需要考虑的两个问题
* 使用机器学习算法的目的。
* 想要完成何种任务,比如是预测明天下雨的概率还是对投票者按照兴趣分组;如果想要预测目标变量的值,则可以选择监督学习算法,否则可以选择无监督学习算法。
* 需要分析或收集的数据是什么
* 举例
* ![选择算法图](./1.机器学习基础-选择算法.png)
* 开发的步骤
* 1.收集数据
* 2.准备输入数据
* 注意数据的格式
* 3.分析输入数据
* 为了确保数据集中没有垃圾数据;如果是算法可以处理的数据格式或可信任的数据源,则可以跳过该步骤;另外该步骤需要人工干预,会降低自动化系统的价值。
* 4.训练算法
* 如果使用无监督学习算法,由于不存在目标变量值,则可以跳过该步骤
* 5.测试算法
* 6.使用算法
* Python相关的库
* 科学函数库SciPy、`NumPy`(底层语言C和Fortran)
* 绘图工具库:`Matplotlib`

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

View File

@@ -0,0 +1,30 @@
# coding=utf-8
def loadExData():
return[[1,1,1,0,0],
[2,2,2,0,0],
[1,1,1,0,0],
[5,5,5,0,0],
[1,1,0,2,2],
[0,0,0,3,3],
[0,0,0,1,1]]
from numpy import *
from numpy import linalg as la
# 欧氏距离相似度假定inA和inB 都是列向量
# 计算向量的第二范式,相当于计算了欧氏距离
def ecludSim(inA,inB):
return 1.0/(1.0 + la.norm(inA - inB))
# pearsSim()函数会检查是否存在3个或更多的点。
# corrcoef直接计算皮尔逊相关系数
def pearsSim(inA,inB):
# 如果不存在该函数返回1.0,此时两个向量完全相关。
if len(inA)< 3 :return 1.0
return 0.5 + 0.5*corrcoef(inA,inB,rowvar = 0)[0][1]
# 计算余弦相似度
def cosSim(inA,inB):
num = float(inA.T*inB)
denom = la.norm(inA)*la.norm(inB)
return 0.5 +0.5*(num/denom)