一、问题描述

假设平面上3个点: (-1.0,-1.2) , (0.0,1.0),  (1.0,2.8)。

(1)请写出相应的正规方程。

(2)并通过求解正规方程来计算这3个点的最佳直线拟合。

二、实验目的

画出原始数据的散点图;

画出拟合的直线。

三、实验内容

1、首先对数据进行特征处理

2、然后求出正规方程的最优解

3、通过最优解预测数据

四、实验结果及分析

五、完整代码

机器学习GitHub:https://github.com/wanglei18/machine_learning

linear_regression.py

import numpy as npclass LinearRegression:def fit(self, X, y):self.w = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)  #最优解return def predict(self, X):           #预测return X.dot(self.w)def mean_squared_error(y_true, y_pred):                 #h的均方误差return np.average((y_true - y_pred)**2, axis=0)     #axis = 0 按列计算def r2_score(y_true, y_pred):           #R^2的决定系数numerator = (y_true - y_pred)**2denominator = (y_true - np.average(y_true, axis=0))**2return 1- numerator.sum(axis=0) / denominator.sum(axis=0)   #按列计算
import numpy as np
import matplotlib.pyplot as plt
import machine_learning.linear_regression.lib.linear_regression as libdef mean_squared_error(y_true, y_pred):  # h的均方误差return np.average((y_true - y_pred) ** 2, axis=0)  # axis = 0 按列计算def r2_score(y_true, y_pred):  # R^2的决定系数numerator = (y_true - y_pred) ** 2denominator = (y_true - np.average(y_true, axis=0)) ** 2return 1 - numerator.sum(axis=0) / denominator.sum(axis=0)  # 按列计算def process_features(X):            #特征处理m,n = X.shapeX = np.c_[np.ones((m,1)), X]    #按行连接,(1,x)return Xplt.figure(1)
x = np.mat([[-1.0],[0.0],[1.0]])
y = np.mat([[-1.2],[1.0],[2.8]])
plt.plot(x[:, 0], y[:, 0],"bs", ms=3)x_train = process_features(x)model = lib.LinearRegression()model.fit(x_train, y)
print(model.w)y_pred = model.predict(x_train)
plt.plot(x,y_pred)
plt.show()

数据挖掘——正规方程拟合直线相关推荐

  1. python椭圆拟合_opencv python 轮廓特征/凸包/外接矩形/外接圆/拟合矩形/拟合直线/拟合圆...

    Contour Features 1 图像的矩 cv2.moments() 图像的矩可以帮助计算物体的某些特征,如对象的质心,对象的区域等. 代码: import cv2 import numpy a ...

  2. OpenCV_11 轮廓检测:图像的轮廓+绘制轮廓+轮廓近似+边界矩形+椭圆拟合+直线拟合

    1 图像的轮廓 轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度.轮廓是图像目标的外部特征,这种特征对于我们进行图像分析,目标识别和理解等更深层次的处理都有很重要的意义. ...

  3. c++ opencv fitLine函数拟合直线

    c++ opencv fitLine函数拟合直线 fitLine 函数 void fitLine( InputArray points, OutputArray line, int distType, ...

  4. Python-Opencv fitLine 拟合直线

    转自: output = cv2.fitLine(InputArray points, distType, param, reps, aeps) 参数: InputArray Points: 待拟合的 ...

  5. OpenCV实战——拟合直线

    OpenCV实战--拟合直线 0. 前言 1. 直线拟合 2. 完整代码 相关链接 0. 前言 在某些计算机视觉应用中,不仅要检测图像中的线条,还要准确估计线条的位置和方向.本节将介绍如何找到最适合给 ...

  6. 【matlab】拟合直线的方法

    1.hough变换 图像空间–>参数空间 图像空间的点(直角坐标系) 在参数空间是一条曲线(极坐标系) 曲线:由垂直每条 过直角坐标中的点的任意斜率的直线相交,获得角度和弧长,由这些点在极坐标中 ...

  7. C++:最小二乘法拟合直线

     原理: 代码: #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp>using names ...

  8. Python实现最小二乘法拟合直线(求斜率截距)

    利用最小二乘法拟合直线,实现了对一系列点拟合出其最接近的直线,并给出公式,包括斜率和截距.并且绘制出最终拟合线. 完整代码如下: # 核心代码,求斜率w,截距b def fit(data_x, dat ...

  9. 最小二乘法拟合直线 C++/OpenCV

    问题: 我们在拥有一系列散列的点(x1,y1),(x2,y2)... (xm,ym),这些点在一条直线附近,通过点拟合直线. 我在工程中是要拟合一系列线段,其实一条线段就对应着两个要拟合的点,算法上稍 ...

最新文章

  1. 深入理解yield from语法
  2. 老股民经验之谈 这些股票买入必死无疑
  3. linux 系统 权限
  4. 微信小程序中this指向作用域问题this.setData is not a function报错
  5. Android 封装一个通用的PopupWindow
  6. k近邻算法_K近邻(knn)算法是如何完成分类的?
  7. Iphone开发-NSdata 与 NSString,Byte数组,UIImage 的相互转换
  8. linux 下生成中文pdf,Linux itex pdf生成中文不显示
  9. linux Shell学习笔记第二天
  10. 星环科技社区版TDH新增组件Hyperbase
  11. 阿里云服务器部署springboot项目
  12. 火狐浏览器自动加滚动条,如何去除?
  13. Apache Calcite教程-SQL解析-Calcite SQL解析
  14. tensorRT教程——tensor RT OP理解(实现自定义层,搭建网络)
  15. 攻防世界-re2-cpp-is-awesome
  16. 广州市劳动保障总集成项目1.06亿
  17. php 仿微信朋友圈,HTML5仿微信聊天界面和朋友圈代码
  18. 【总结】56个JavaScript 实用工具函数助你提升开发效率!
  19. 关于隔离电源断电瞬间MOSFET损坏问题分析
  20. php版本的charCodeAt()函数

热门文章

  1. 5分钟弄懂程序员的如何升级到架构师。
  2. vs2015单元测试 - error LNK2011: 未链接预编译对象;映像可能不能运行
  3. Matlab数字图像的傅里叶变换(FFT)
  4. oracle导入dmp文件
  5. $(dirname $0)
  6. 【计算机组成原理】计算机组成原理——组成篇
  7. android 实现QQ好友列表(扩展listview:ExpandableListView)
  8. LeetCode-1264. 页面推荐(中等)
  9. 2023电工杯数学建模AB题思路分析
  10. oracle 学习积累(3)