注:数据集放在文章末尾

(1)多元线性回归 —— 梯度下降法

port numpy as np
from numpy import genfromtxt
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D  # 读入数据
data = genfromtxt(r"Delivery.csv",delimiter=',')# 切分数据
x_data = data[:,:-1]
y_data = data[:,-1]# 学习率learning rate
lr = 0.0001
# 参数
theta0 = 0
theta1 = 0
theta2 = 0
# 最大迭代次数
epochs = 1000# 最小二乘法
def compute_error(theta0, theta1, theta2, x_data, y_data):totalError = 0for i in range(0, len(x_data)):totalError += (y_data[i] - (theta1 * x_data[i,0] + theta2*x_data[i,1] + theta0)) ** 2return totalError / float(len(x_data))def gradient_descent_runner(x_data, y_data, theta0, theta1, theta2, lr, epochs):# 计算总数据量m = float(len(x_data))# 循环epochs次for i in range(epochs):theta0_grad = 0theta1_grad = 0theta2_grad = 0# 计算梯度的总和再求平均for j in range(0, len(x_data)):theta0_grad += (1/m) * ((theta1 * x_data[j,0] + theta2*x_data[j,1] + theta0) - y_data[j])theta1_grad += (1/m) * x_data[j,0] * ((theta1 * x_data[j,0] + theta2*x_data[j,1] + theta0) - y_data[j])theta2_grad += (1/m) * x_data[j,1] * ((theta1 * x_data[j,0] + theta2*x_data[j,1] + theta0) - y_data[j])# 更新b和ktheta0 = theta0 - (lr*theta0_grad)theta1 = theta1 - (lr*theta1_grad)theta2 = theta2 - (lr*theta2_grad)return theta0, theta1, theta2print("Starting theta0 = {0}, theta1 = {1}, theta2 = {2}, error = {3}".format(theta0, theta1, theta2, compute_error(theta0, theta1, theta2, x_data, y_data)))
print("Running...")
theta0, theta1, theta2 = gradient_descent_runner(x_data, y_data, theta0, theta1, theta2, lr, epochs)
print("After {0} iterations theta0 = {1}, theta1 = {2}, theta2 = {3}, error = {4}".format(epochs, theta0, theta1, theta2, compute_error(theta0, theta1, theta2, x_data, y_data)))

输出:

# 画图ax = plt.figure().add_subplot(111, projection = '3d')
ax.scatter(x_data[:,0], x_data[:,1], y_data, c = 'r', marker = 'o', s = 100) #点为红色三角形
x0 = x_data[:,0]
x1 = x_data[:,1]
# 生成网格矩阵
x0, x1 = np.meshgrid(x0, x1)
z = theta0 + x0*theta1 + x1*theta2
# 画3D图
ax.plot_surface(x0, x1, z)
#设置坐标轴
ax.set_xlabel('Miles')
ax.set_ylabel('Num of Deliveries')
ax.set_zlabel('Time')  #显示图像
plt.show()

输出:

(2)多元线性回归 —— sklearn

import numpy as np
from numpy import genfromtxt
from sklearn import linear_model
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D  # 读入数据
data = genfromtxt(r"Delivery.csv",delimiter=',')# 切分数据
x_data = data[:,:-1]
y_data = data[:,-1]# 创建模型
model = linear_model.LinearRegression()
model.fit(x_data, y_data)# 系数
print("coefficients:",model.coef_)# 截距
print("intercept:",model.intercept_)# 测试
x_test = [[102,4]]
predict = model.predict(x_test)
print("predict:",predict)

输出:

# 画图ax = plt.figure().add_subplot(111, projection = '3d')
ax.scatter(x_data[:,0], x_data[:,1], y_data, c = 'r', marker = 'o', s = 100) #点为红色三角形
x0 = x_data[:,0]
x1 = x_data[:,1]
# 生成网格矩阵
x0, x1 = np.meshgrid(x0, x1)
z = model.intercept_ + x0*model.coef_[0] + x1*model.coef_[1]
# 画3D图
ax.plot_surface(x0, x1, z)
#设置坐标轴
ax.set_xlabel('Miles')
ax.set_ylabel('Num of Deliveries')
ax.set_zlabel('Time')  #显示图像
plt.show()

输出:

● 数据集:“Delivery.csv”:

100,4,9.3
50,3,4.8
100,4,8.9
100,2,6.5
50,2,4.2
80,2,6.2
75,3,7.4
65,4,6
90,3,7.6
90,2,6.1

【机器学习】监督学习--(回归)多元线性回归相关推荐

  1. 机器学习——Day 3 多元线性回归

    写在开头 由于某些原因开始了机器学习,为了更好的理解和深入的思考(记录)所以开始写博客. 学习教程来源于github的Avik-Jain的100-Days-Of-MLCode 英文版:https:// ...

  2. SPSS—回归—多元线性回归(转)

    多元线性回归,主要是研究一个因变量与多个自变量之间的相关关系,跟一元回归原理差不多,区别在于影响因素(自变量)更多些而已,例如:一元线性回归方程 为: 毫无疑问,多元线性回归方程应该为: 上图中的 x ...

  3. 100天机器学习(100-Days-Of-ML)day3多元线性回归及虚拟变量陷阱分析

    本系列为100天机器学习学习笔记.详细请参考下方作者链接: 100天机器学习github: https://github.com/MLEveryday/100-Days-Of-ML-Code Day3 ...

  4. 09机器学习实战之多元线性回归

    基本概念 1. 与简单线性回归区别(simple linear regression) 多个自变量(x) 2. 多元回归模型 y=β0+β1x1+β2x2+ ... +βpxp+ε 其中:β0,β1, ...

  5. 学习机器学习四 回归模型——线性回归、L1正则化(Lasso回归)、L2正则化(ridge回归)

    还记得什么是回归吗?回忆下回归就是连续的输出,分类是离散的. 回归模型一般分为:①线性回归--就是线性方程,类似为一元一次方程(y=wx+b),比如你的年龄: ②逻辑回归(类似为曲线方程) 线性回归 ...

  6. 机器学习--多元线性回归

    Logistic回归(分类问题) Logistic/sigmoid函数: 求导数如下所示: 根据导数形式,假设y服从二项分布 Logistic回归参数学习规则: softmax 回归

  7. [云炬python3玩转机器学习] 5-7,8 多元线性回归正规解及其实现

    08 实现我们自己的 Linear Regression import numpy as np import matplotlib.pyplot as plt from sklearn import ...

  8. 【机器学习之线性回归】多元线性回归模型的搭建+Lasso回归的特征提取

    文章目录 前言 一.多元线性回归 1.原理介绍 2.sklearn代码实现 二.Lasso回归 1.原理介绍 2.sklearn代码实现 三.总结 前言 回归是监督学习的一个重要问题,回归用于预测输入 ...

  9. 机器学习 回归篇(1)——多元线性回归

    机器学习 回归篇(1)--多元线性回归 摘要 线性回归简介 python实现 运行结果及可视化 摘要 本文介绍了最基础的回归问题--多元线性回归,并通过python进行实现及可视化展示运行结果. 线性 ...

最新文章

  1. 早餐组合(购买方案)
  2. hive外部表改为内部表_3000字揭秘Greenplum的外部数据加载——外部表
  3. exsi5.5安装过程中遇到的一个问题
  4. myeclipse安装svn插件的多种方式
  5. cv2.imread读取图像结果none_python cv2.imread 读取中文路径的图片返回为None的问题
  6. 【Flink】Flink连接prometheus报错 IOException :Response code formxxx/metrics/job/rule
  7. 《原力计划【第二季】》第 6 周周榜揭晓!!!
  8. innodb ibd结构图
  9. Bailian4130 踩方格【组合+打表】
  10. 【java笔记】包装类
  11. 菜鸟 学注册机编写之 “序列号组合”
  12. 【优化覆盖】基于matlab虚拟力算法求解无线网络传感覆盖优化问题【含Matlab源码 1187期】
  13. 世嘉MD游戏开发【十三】:音乐和音效
  14. JAVACC使用总结(四):LOOKAHEAD解决语法选择冲突的利刃
  15. 为了让你在“口袋奇兵”聊遍全球,java面试代码题
  16. http://blog.csdn.net/pizi0475/article/details/48286579 -------------(Collada 快速入门)
  17. android xml 画竖线,css如何画竖线?
  18. [CTF] python的pip源更改及常用python库
  19. NOIP2018(普及组 ) 赛后感想 题解
  20. 蚂蚁借呗总利息计算——每月等额(等额本息)

热门文章

  1. ffmpeg 从MP4转flv
  2. 机票预定系统类图_出行干货|在法国,廉价机票攻略
  3. [设计模式] - Singleton单例模式
  4. linux mysql多主一从_linux中mysql多主一从热备份
  5. c语言课后答案谢延红,C语言程序设计基础第4,5章 课后习题答案
  6. 加载osgb数据转换不能用_在ArcGIS Pro中OSGB数据转换及发布服务流程
  7. 《深入理解分布式事务》第六章 最终一致性分布式事务解决方案
  8. 【LeetCode】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
  9. java并发初探ConcurrentSkipListMap
  10. Python学习 第3天 VS与PyCharm使用对比