机器学习之线性回归及python实现

来源:互联网 发布:酒店网络部署方案 编辑:程序博客网 时间:2024/05/17 08:04

python代码实现(数据集:http://download.csdn.net/download/vinsuan1993/10173129):

import numpy as npimport pylabdef compute_error(b,m,data):    totalError = 0    #Two ways to implement this    #first way    # for i in range(0,len(data)):    #     x = data[i,0]    #     y = data[i,1]    #    #     totalError += (y-(m*x+b))**2    #second way    x = data[:,0]    y = data[:,1]    totalError = (y-m*x-b)**2    totalError = np.sum(totalError,axis=0)    return totalError/float(len(data))#梯度下降def optimizer(data,starting_b,starting_m,learning_rate,num_iter):    b = starting_b    m = starting_m    #迭代次数    for i in range(num_iter):        b,m =compute_gradient(b,m,data,learning_rate)        if i%100==0:            print('iter {0}:error={1}'.format(i,compute_error(b,m,data)))    return [b,m]def compute_gradient(b_current,m_current,data ,learning_rate):    N = float(len(data))    x = data[:,0]    y = data[:,1]    b_gradient = -(2/N)*(y-m_current*x-b_current)    b_gradient = np.sum(b_gradient,axis=0)    m_gradient = -(2/N)*x*(y-m_current*x-b_current)    m_gradient = np.sum(m_gradient,axis=0)        #update our b and m values using out partial derivations    new_b = b_current - (learning_rate * b_gradient)    new_m = m_current - (learning_rate * m_gradient)    #得到新的参数值    return [new_b,new_m]def plot_data(data,b,m):    #plottting    x = data[:,0]    y = data[:,1]    y_predict = m*x+b    pylab.plot(x,y,'o')    pylab.plot(x,y_predict,'k-')    pylab.show()def Linear_regression():    # get train data    data =np.loadtxt('data.csv',delimiter=',')    #define hyperparamters    #learning_rate is used for update gradient    #defint the number that will iteration    # define  y =mx+b    learning_rate = 0.001    initial_b =0.0    initial_m = 0.0    num_iter = 1000    #train model    #print b m error    print('initial variables:\n initial_b = {0}\n intial_m = {1}\n error of begin = {2} \n'.format(initial_b,initial_m,compute_error(initial_b,initial_m,data)))    #optimizing b and m    [b ,m] = optimizer(data,initial_b,initial_m,learning_rate,num_iter)    #print final b m error    print('final formula parmaters:\n b = {1}\n m={2}\n error of end = {3} \n'.format(num_iter,b,m,compute_error(b,m,data)))    #plot result    plot_data(data,b,m)if __name__ =='__main__':    Linear_regression()


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 1000度近视 近视危害 近视是什么 近视多少度是高度近视 近视视力 近视检查 多少是近视 学生近视 近视表 小儿近视 突然近视 小学生近视 眼睛近视了 近视的 近视准分子 怎样近视 近视了 近视的建议 近视的危害 青少年近视 怎么冶近视 准分子近视 近视症状 小孩子近视 怎么近视 近视费用 近视的情况 深度近视 近视的分类 近视的视力 中国近视 预防近视手抄报 散光与近视哪个可怕 戴眼镜加深近视 15岁近视2400度 近视300度严重吗 眼睛近视了怎么办 怎么预防近视 怎样预防近视 如何防止近视 如何预防近视