爱吧机器人网 » 技术 > 机器学习 > 正文

机器学习算法Python实现--线性回归分析

1、代价函数

其中:

下面就是要求出theta,使代价最小,即代表我们拟合出来的方程距离真实值最近

共有m条数据,其中代表我们要拟合出来的方程到真实值距离的平方,平方的原因是因为可能有负值,正负可能会抵消

前面有系数2的原因是下面求梯度是对每个变量求偏导,2可以消去

实现代码:

# 计算代价函数
def computerCost(X,y,theta):
    m = len(y)
    J = 0 
    J = (np.transpose(X*theta-y))*(X*theta-y)/(2*m) #计算代价J
    return J
注意这里的X是真实数据前加了一列1,因为有theta(0)

2、梯度下降算法

代价函数对求偏导得到:

所以对theta的更新可以写为:

其中为学习速率,控制梯度下降的速度,一般取0.01,0.03,0.1,0.3.....

为什么梯度下降可以逐步减小代价函数

假设函数f(x)

泰勒展开:f(x+△x)=f(x)+f'(x)*△x+o(△x)

令:△x=-α*f'(x) ,即负梯度方向乘以一个很小的步长α

将△x代入泰勒展开式中:f(x+x)=f(x)-α*[f'(x)]²+o(△x)

可以看出,α是取得很小的正数,[f'(x)]²也是正数,所以可以得出:f(x+△x)<=f(x)

所以沿着负梯度放下,函数在减小,多维情况一样。

实现代码

# 梯度下降算法
def gradientDescent(X,y,theta,alpha,num_iters):
    m = len(y)     
    n = len(theta)
    temp = np.matrix(np.zeros((n,num_iters)))   # 暂存每次迭代计算的theta,转化为矩阵形式
    J_history = np.zeros((num_iters,1)) #记录每次迭代计算的代价值
    for i in range(num_iters):  # 遍历迭代次数   
        h = np.dot(X,theta)     # 计算内积,matrix可以直接乘
        temp[:,i] = theta - ((alpha/m)*(np.dot(np.transpose(X),h-y)))   #梯度的计算
        theta = temp[:,i]
        J_history[i] = computerCost(X,y,theta)      #调用计算代价函数
        print '.',     
    return theta,J_history 

3、均值归一化

目的是使数据都缩放到一个范围内,便于使用梯度下降算法

其中  为所有此feture数据的平均值

可以是最大值-最小值,也可以是这个feature对应的数据的标准差

实现代码:

# 归一化feature
def featureNormaliza(X):
    X_norm = np.array(X)            #将X转化为numpy数组对象,才可以进行矩阵的运算
    #定义所需变量
    mu = np.zeros((1,X.shape[1]))  
    sigma = np.zeros((1,X.shape[1]))
    mu = np.mean(X_norm,0)          # 求每一列的平均值(0指定为列,1代表行)
    sigma = np.std(X_norm,0)        # 求每一列的标准差
    for i in range(X.shape[1]):     # 遍历列
        X_norm[:,i] = (X_norm[:,i]-mu[i])/sigma[i]  # 归一化 
    return X_norm,mu,sigma

注意预测的时候也需要均值归一化数据

4、最终运行结果

代价随迭代次数的变化

\

5、使用scikit-learn库中的线性模型实现

导入包
from sklearn import linear_model
from sklearn.preprocessing import StandardScaler    #引入缩放的包
归一化
    # 归一化操作
    scaler = StandardScaler()  
    scaler.fit(X)
    x_train = scaler.transform(X)
    x_test = scaler.transform(np.array([1650,3]))
线性模型拟合
    # 线性模型拟合
    model = linear_model.LinearRegression()
    model.fit(x_train, y)
预测
    #预测结果
    result = model.predict(x_test)


实例及数据请入传送门:
https://github.com/lawlite19/MachineLearning_Python/tree/master/LinearRegression

上一篇:ArXiv最受欢迎开源深度学习框架榜单:TensorFlow第一,PyTorch第四
下一篇:机器学习各种熵:从入门到全面掌握
精选推荐
全自动膝关节置换手术机器人被美国FDA批准上市
全自动膝关节置换手术机器人被美国FDA批准上市

[2019-10-14]  美国Think Surgical公司已获得美国食品和药物管理局(FDA)的批准,在美国销售用于全膝关节置换(TKA)的TSolution One&reg;全膝关节应用 ...

苹果AI主管透露自动驾驶汽车项目关于机器学习方面的进展
苹果AI主管透露自动驾驶汽车项目关于机器学习方面的进展

[2017-12-11]  苹果隐秘的自动驾驶汽车项目多年来一直在转移焦点,但今年似乎正在加速。 4月份,公司获得了在加利福尼亚州进行自动驾驶汽车测试的许可证,而在6月份,苹果公司首席执行官库......

亚马逊计划建一个4000万美元的机器人中心
亚马逊计划建一个4000万美元的机器人中心

[2019-11-07]  爱吧机器人网消息,亚马逊11月6日宣布了一项计划,计划在美国马萨诸塞州韦斯特伯勒建立一个4000万美元、35万平方英尺的机器人创新中心。新 ...

Crossbar将电阻式RAM推入嵌入式AI
Crossbar将电阻式RAM推入嵌入式AI

[2018-05-17]  电阻RAM技术开发商Crossbar表示,它已与航空航天芯片制造商Microsemi达成协议,允许后者在未来的芯片中嵌入Crossbar的非易失性存储器。此举是在先进制造业节点的领先代工厂选......

瑞士研发出微型机器人集群 可像蚂蚁一样互相交流并协同工作
瑞士研发出微型机器人集群 可像蚂蚁一样互相交流并协同工作

[2019-07-12]  EPFL(瑞士联邦理工学院)的研究人员受到了蚂蚁的启发,开发了一款仅有10克重的小型机器人:他们可以相互交流,分配角色并完成复杂的任务。 ...

MIT研制出可以像植物一样生长的机器人
MIT研制出可以像植物一样生长的机器人

[2019-11-09]  麻省理工学院开发了一种新型机器人,这种机器人可以本质上自我延伸,其生长方式与植物幼苗向上生长的方式惊人相似。值得注意的是,研究人员 ...

哈佛大学《自然》发表新驱动技术,让飞行机器人悬停且不受损伤
哈佛大学《自然》发表新驱动技术,让飞行机器人悬停且不受损伤

[2019-11-06]  哈佛大学研究人员发表在《自然》杂志上的一项最新研究,他们开发了一种由柔软的人造肌肉驱动的机器人蜜蜂(RoboBee),这种机器人在撞墙、 ...

研究人员融合人类与AI的创造力 显著提高了深度学习的表现
研究人员融合人类与AI的创造力 显著提高了深度学习的表现

[2019-10-12]  由加拿大人工智能领域研究主席、滑铁卢大学系统设计工程教授Alexander Wong领导的一个团队开发了一种新型紧凑型神经网络家族,可以在智能 ...

本周栏目热点

盘点全球十大最具影响力的机器人摇篮

[1970-01-01]    人工智能(AI)研究现正迅速发展,如无人驾驶汽车、计算机在《危险边缘》智力竞赛节目中获胜、数字私人助手Siri、GoogleNow和语音助手C ...

深度学习反向传播算法(BP)原理推导及代码实现

[2017-12-19]  分析了手写字数据集分类的原理,利用神经网络模型,编写了SGD算法的代码,分多个epochs,每个 epoch 又对 mini_batch 样本做多次迭代计算。这其中,非常重要的一个步骤,......

如何在机器学习项目中使用统计方法的示例

[2018-07-23]  事实上,机器学习预测建模项目必须通过统计学方法才能有效的进行。在本文中,我们将通过实例介绍一些在预测建模问题中起关键作用的统计学方法。...

Machine Learning-感知器分类算法详解

[2018-05-31]  今天我们来讲解的内容是感知器分类算法,本文的结构如下:什么是感知器分类算法,在Python中实现感知器学习算法,在iris(鸢尾花)数据集上训练一个感知器模型,自适应线性神......

[2017-08-28]  模拟退火(Simulated Annealing,简称SA)是一种通用概率算法,用来在一个大的搜寻空间内找寻命题的最优解。1、固体退火原理:将固体加温 ...