数据挖掘——正规方程拟合直线
一、问题描述
假设平面上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()
数据挖掘——正规方程拟合直线相关推荐
- python椭圆拟合_opencv python 轮廓特征/凸包/外接矩形/外接圆/拟合矩形/拟合直线/拟合圆...
Contour Features 1 图像的矩 cv2.moments() 图像的矩可以帮助计算物体的某些特征,如对象的质心,对象的区域等. 代码: import cv2 import numpy a ...
- OpenCV_11 轮廓检测:图像的轮廓+绘制轮廓+轮廓近似+边界矩形+椭圆拟合+直线拟合
1 图像的轮廓 轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度.轮廓是图像目标的外部特征,这种特征对于我们进行图像分析,目标识别和理解等更深层次的处理都有很重要的意义. ...
- c++ opencv fitLine函数拟合直线
c++ opencv fitLine函数拟合直线 fitLine 函数 void fitLine( InputArray points, OutputArray line, int distType, ...
- Python-Opencv fitLine 拟合直线
转自: output = cv2.fitLine(InputArray points, distType, param, reps, aeps) 参数: InputArray Points: 待拟合的 ...
- OpenCV实战——拟合直线
OpenCV实战--拟合直线 0. 前言 1. 直线拟合 2. 完整代码 相关链接 0. 前言 在某些计算机视觉应用中,不仅要检测图像中的线条,还要准确估计线条的位置和方向.本节将介绍如何找到最适合给 ...
- 【matlab】拟合直线的方法
1.hough变换 图像空间–>参数空间 图像空间的点(直角坐标系) 在参数空间是一条曲线(极坐标系) 曲线:由垂直每条 过直角坐标中的点的任意斜率的直线相交,获得角度和弧长,由这些点在极坐标中 ...
- C++:最小二乘法拟合直线
原理: 代码: #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp>using names ...
- Python实现最小二乘法拟合直线(求斜率截距)
利用最小二乘法拟合直线,实现了对一系列点拟合出其最接近的直线,并给出公式,包括斜率和截距.并且绘制出最终拟合线. 完整代码如下: # 核心代码,求斜率w,截距b def fit(data_x, dat ...
- 最小二乘法拟合直线 C++/OpenCV
问题: 我们在拥有一系列散列的点(x1,y1),(x2,y2)... (xm,ym),这些点在一条直线附近,通过点拟合直线. 我在工程中是要拟合一系列线段,其实一条线段就对应着两个要拟合的点,算法上稍 ...
最新文章
- 深入理解yield from语法
- 老股民经验之谈 这些股票买入必死无疑
- linux 系统 权限
- 微信小程序中this指向作用域问题this.setData is not a function报错
- Android 封装一个通用的PopupWindow
- k近邻算法_K近邻(knn)算法是如何完成分类的?
- Iphone开发-NSdata 与 NSString,Byte数组,UIImage 的相互转换
- linux 下生成中文pdf,Linux itex pdf生成中文不显示
- linux Shell学习笔记第二天
- 星环科技社区版TDH新增组件Hyperbase
- 阿里云服务器部署springboot项目
- 火狐浏览器自动加滚动条,如何去除?
- Apache Calcite教程-SQL解析-Calcite SQL解析
- tensorRT教程——tensor RT OP理解(实现自定义层,搭建网络)
- 攻防世界-re2-cpp-is-awesome
- 广州市劳动保障总集成项目1.06亿
- php 仿微信朋友圈,HTML5仿微信聊天界面和朋友圈代码
- 【总结】56个JavaScript 实用工具函数助你提升开发效率!
- 关于隔离电源断电瞬间MOSFET损坏问题分析
- php版本的charCodeAt()函数