数据分析师-机器学习之线性回归

数据分析师-机器学习之线性回归

回归分析:
回归:统计学分析数据的方法,目的在于了解两个或多个变量间是否相关、研究其相关方向与强度,并建立数学模型以便观察特定变量来预测研究者感兴趣的变量,回归分析可以帮助人们了解在自变量变化时因变量的变化量。一般来说,通过回归分析我们可以由给出的自变量估计因变量的条件期望。

误差分布:
真实值和预测值之间的差异:
在这里插入图片描述
在这里插入图片描述

误差分布特点 (独立、同分布、 高斯分布)。

线性回归的最小二乘法:

在这里插入图片描述

最小二乘法回归存在问题:
矩阵必须可逆。
当特征数较多时,求逆运算时间开销较大。

线性回归的梯度下降法:

梯度下降法(Gradient descent)是使得代价函数达到最小的经典方法之一。
在这里插入图片描述
在这里插入图片描述
梯度下降的算法调优:
算法的步长选择。
算法参数的初始值选择。
归一化。

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
%matplotlib inline
# y = kx + b,k is slope, b is y-intercept
def step_gradient(b_current, k_current, points, learningRate):
 b_gradient = 0
 k_gradient = 0
 for i in range(0, len(points)):
 x = points[i, 0]
 y = points[i, 1]
 k_gradient += (((k_current * x) + b_current)-y)*x
 b_gradient += (((k_current * x) + b_current)-y)*1
 new_b = b_current - (learningRate * b_gradient)
 new_k = k_current - (learningRate * k_gradient)
 return [new_b, new_k]
#误差函数
def compute_error_for_line_given_points(b, k, points):
 totalError = 0
 for i in range(0, len(points)):
 x = points[i, 0]
 y = points[i, 1]
 totalError += (y - (k * x + b)) ** 2
 return totalError
def gradient_descent_runner(points, starting_b, starting_k, learning_rate, num_iterations):
 b = starting_b
 k = starting_k
 error=[]
 for i in range(num_iterations):
 b, k = step_gradient(b, k, np.array(points), learning_rate)
 error.append(compute_error_for_line_given_points(b, k, points))
 return [b, k,error]
 
#画原始数据图
points = np.array(pd.read_table("data.csv", delimiter=",",names=['x1','y']))
plt.figure(figsize=(8,4),dpi=100)
plt.scatter(points[:,0],points[:,1],color='black')
plt.title("original_data")
#梯度下降法
plt.figure(figsize=(8,4),dpi=100)
plt.scatter(points[:,0],points[:,1],color='black')
learning_rate = 0.000001 #学习率
initial_b = 0 # initial y-intercept guess
initial_k = 0 # initial slope guess
num_iterations = 10000
[b, k, error]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值