(含Python源码)Python实现K阶多项式的5种回归算法(regression)

0、文章结构

为了方便客官根据需要取阅,节约时间,文章目录结构如下:

  • 问题描述
  • 理论部分:五种回归算法
  • 两种Python读取文件的方法
  • Python实现五种回归算法
  • 使用的工具箱
  • 总结

1、问题描述

K阶多项式表达式

其中,

现有数据集

为了方便回归运算,标记如下:

通过数据集,求出回归参数\theta

2、五种回归算法

2.1 QP solver

2.2 LP solver

3、 Python代码获取数据

      下面将介绍两种获取数据的方法,一种是获取txt文件,另一种是Mat文件。

3.1 获取text文件数据

          这种方法获取数据后,还可以对数据进行预处理。

          获取text文件数据

def get_data():#1*50sampleX = np.loadtxt("D:/路径/文件名.文件格式")#1*50sampleY = np.loadtxt("D:/路径/文件名.文件格式")#1*100polyX = np.loadtxt("D:/路径/文件名.文件格式")#1*100polyY = np.loadtxt("D:/路径/文件名.文件格式")#50*1samplex = sampleX.reshape(len(sampleX), 1)# 50*1sampley = sampleY.reshape(len(sampleY), 1)#100*1polyx = polyX.reshape(len(polyX), 1)# 100*1polyy = polyY.reshape(len(polyY), 1)return samplex, sampley, polyx, polyy

对数据进行处理,形成 \phi \left ( x \right ) 矩阵

def fi_vector(samplex):  #(k+1)*1return np.array([samplex**j for j in range(k+1)]).reshape(k+1,1)def fi_array(samplex):  #n*(K+1)return np.array([fi_vector(x) for x in samplex]).transpose()#the matrix of samplyx
def fi_matrix(X): #n*1return np.matrix(fi_array(X))

3.2 获取Mat文件

返回的矩阵数据

def get_data3():data_path="D:/路径/文件名.mat"data = scio.loadmat(data_path)samplex=data['trainx']sampley=data['trainy']polyx=data['testx']polyy=data['testy']return samplex, sampley, polyx, polyy

 4、Python实现五种回归算法

4.1 least squares(LS)

代码实现 \theta 求解

#求least squared parameter theta1
def theta1(samplex,sampley): #output k*1return np.dot(np.matrix(np.dot(samplex,samplex.transpose())).I,samplex).dot(sampley)

代码实现预测函数

def prediction1(polyx,theta1): #output 100*1return np.dot(polyx.transpose(),theta1)

4.2 Regularized LS(RLS)

求解 \theta 代码

lamda=1
def theta2(samplex,sampley): #k*1return (np.matrix(np.dot(fi_matrix(samplex), fi_matrix(samplex).transpose()) + \lamda * np.identity(len(fi_matrix(samplex)))).I).dot(fi_matrix(samplex)).dot(sampley)

实现预测函数代码

def prediction2(polyx,theta2): # 100*1return np.dot(np.matrix(fi_matrix(polyx)).transpose(), theta2)

4.3 L1-regularized LS(LASSO)

求解 \theta 代码

lamda2=1
def theta3(samplex,sampley):fi_matrix_squared = np.dot(fi_matrix(samplex), fi_matrix(samplex).transpose())fi_matrix_sampley = np.dot(fi_matrix(samplex),sampley)fi_matrix_sampley_aug = np.concatenate((fi_matrix_sampley, -1 * fi_matrix_sampley), axis=0)Hl = np.concatenate((fi_matrix_squared, -1 * fi_matrix_squared), axis=0)Hr = np.concatenate((-1 * fi_matrix_squared, fi_matrix_squared), axis=0)H = np.concatenate((Hl, Hr), axis=1)f = lamda2 * np.ones((len(fi_matrix_sampley_aug), 1)) - fi_matrix_sampley_augG = -1 * np.identity((len(H)))value = np.zeros((len(H), 1))Theta3 = solvers.qp(matrix(H), matrix(f), matrix(G), matrix(value))['x']return np.matrix([Theta3[i] - Theta3[i + k+1] for i in range(int(len(Theta3) / 2))]).transpose()

实现预测函数代码

def prediction3(polyx, theta3):return np.dot(fi_matrix(polyx).transpose(), theta3)

4.4 Robust regression(RR)

求解 \theta 代码

def theta4(samplex,sampley):f1 = np.concatenate((np.zeros((9, 1)), np.ones((len(samplex), 1))), axis=0)Al = np.concatenate((-1 * fi_matrix(samplex).transpose(), fi_matrix(samplex).transpose()), axis=0)Ar = np.concatenate((-1 * np.identity(len(samplex)), -1 * np.identity(len(samplex))), axis=0)A = np.concatenate((Al, Ar), axis=1)b = np.concatenate((-1 * sampley, sampley), axis=0)return solvers.lp(matrix(f1), matrix(A), matrix(b))['x'][0:9]

实现预测函数代码

def prediction4(polyx, theta4):return np.dot(fi_matrix(polyx).transpose(), theta4)

4.5 Bayesian regression(BR)

求解 \theta 代码

alpha=1
variance=5
def posterior5(samplex,sampley):covariance = np.matrix((1 / alpha) * np.identity(len(fi_matrix(samplex)))+ (1 / variance) * np.dot(fi_matrix(samplex),fi_matrix(samplex).transpose())).Imean = (1 / variance) * covariance.dot(fi_matrix(samplex)).dot(sampley)return covariance, mean

实现预测函数代码

def prediction5(polyx, covariance, mean):pre_mean = np.dot(fi_matrix(polyx).transpose(), mean)pre_covariance = np.dot(fi_matrix(polyx).transpose(),covariance).dot(fi_matrix(polyx))return pre_mean, pre_covariance

5、工具箱

import numpy as np
from cvxopt import matrix
from cvxopt import solvers

6、总结

这篇博客源于一个编程作业的小问题。在实现第一个和第三个算法时,花的时间最多。查找资料,调试代码,前后遇到了过很多坑,感谢CSDN上的大佬,我总能从他们的博客中找到解决办法。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492240.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

首张人类黑洞照片的背后

摘要:沈海军:今天(2019年4月10日)下午接受广东卫视采访,就晚上21:00即将发布的人类首张黑洞照片发表了评论。提笔撰稿时,尚未到照片官方的发布时间,故不能一睹黑洞照片的芳容,但鉴于…

一场“交通进化”将至: 5G带给车联网与自动驾驶哪些升级?

来源 :腾讯科技作者:李俨 美国高通公司技术标准高级总监5G时代已经来临,走向商用的步伐也在逐渐加快。腾讯科技联合优质科技CP以及行业专家推出“5G局中局”系列文章,为你解读5G在通讯、物联网、车联网、工业联网、边缘计算、云服…

特斯拉发布Q1无人驾驶安全报告:事故增多 但还是比人类少

来源:聚焦AI的近日,电动汽车制造商特斯拉发布了2019年第一季度自动驾驶仪(Autopilot)安全性报告,这是特斯拉发布的第三份类似报告,此前该公司认为媒体对特斯拉车辆事故的报道有失公允,因此他们开…

log4net 小记

突然想到想测试一下log4net,结果折腾了两天,才弄出来.....记录下来以备以后查看 背景:vs2013 mvc项目中想体验下log4net的功能(主要是文件记录) 翻看了log4net的相关资料,才发现其实它是有很多功能的&#…

关于找工作和选专业的思考

个人的成长离不开国家的发展,国家的发展离不开国际的大气候。 国家之间的竞争主要归于经济竞争,经济的核心在于产业,产业的核心则在于科学和技术。 无论是找工作还是选专业,赌的都是对未来趋势的预测,没有人会希望自己…

DARPA 2020财年研发预算 人工智能应用研究投资急剧增长

来源:美国国防部等摘要:2019年3月,特朗普政府公布2020财年预算申请。根据预算法案,2020财年美国国家安全预算总额增加340亿美元,达到7500亿美元,比上年增加5%。美国防部分得的经费为7180亿美元,…

使用Matlab(R2018b)画复杂函数的图形(网格图meshgrid)及等高线contour

1、函数 这里使用2D Michalewicz 函数,其表达式为: 2、画图 2.1 编写2D Michalewicz 函数 f(x,y)(-sin(x).*(sin(x.^2/3.1415926)).^(2*m)...-sin(y).*(sin(2*y.^2/3.1415926)).^(2*m)); 上述代码使用到了Anonymous Functions, 相关变量的数据类型为…

科创板:中国科技产业新引擎

来源:国信研究作者:杨均明,国信证券经济研究所所长万众期待的上海证券交易所科创板即将推出,科创板股票发行审核规则第三条要求,发行人申请股票首次发行上市,应当符合科创板定位,面向世界科技前…

粒子群优化算法(Particle Swarm Optimization)的 Matlab(R2018b)代码实现

这里以 2D Michalewicz function 为对象来演示粒子群算法。 1、Michalewicz function 2、代码详解 2.1 画Michalewicz函数的网格图形 f(x,y)(-sin(x).*(sin(x.^2/3.1415926)).^(2*m)...-sin(y).*(sin(2*y.^2/3.1415926)).^(2*m));range[0 4 0 4]; Ngrid100; dx(range(2)-ran…

中金人工智能报告:AI时代,10 年之后我们还能干什么?|71页完整报告

来源:黑科技智汇中金公司(CICC)发布了一份长达 71 页的人工智能的证券研究报告《人工智能时代,10 年之后我们还能干什么?》。对全球特别是中国企业当下的人工智能态势作了全面的介绍:包括 BAT、华为、科大讯…

UC伯克利新机器人成果:灵活自由地使用工具

来源:AI 科技评论摘要:前几天我们刚刚介绍了加州大学伯克利分校 Pieter Abbeel 教授领导伯克利机器人学习实验室(UC Berkeleys Robot Learning Lab)开发的会叠衣服的家务向机器人 BLUE,今天伯克利人工智能实验室&#…

bzoj 1934 最小割

收获&#xff1a; 1、流量为0的边可以不加入。 2、最小割方案要与决策方案对应。 1 #include <cstdio>2 #include <cmath>3 #include <cstring>4 #include <vector>5 #define min(a,b) ((a)<(b)?(a):(b))6 #define oo 0x3f3f3f3f7 #define N 6108 …

工业4.0:数字化供应链的三个方向

来源&#xff1a;资本实验室席卷全球的工业4.0革命几乎影响着每一个行业&#xff0c;包括各行业的供应链管理。在过去&#xff0c;供应链管理是令各行业都非常头疼的环节&#xff0c;因为传统供应链涉及大量模糊且无法访问的数据&#xff0c;就像”黑洞“一样吞噬着成本、时间与…

有效学习

怎样算有效学习&#xff1f; 记得有位大咖说过&#xff0c;‘当你把受过的教育都忘记了&#xff0c;剩下的就是教育’&#xff08;度娘说是爱因斯坦说的&#xff0c;此处未经考证&#xff09;。 学习可以看成是一个把知识放入潜意识的过程。所谓进入潜意识&#xff0c;是指当…

如果机器能帮我们学习,那么有多少东西能够被遗忘?

来源&#xff1a;原理在我还是个学生时的遥远年代&#xff0c;大多数计算机都还是体型巨大的机器。当时我有一个朋友&#xff0c;他的博士导师坚持让他对一个冗长又困难的原子理论进行手写计算。他用掉了一页又一页的草稿纸&#xff0c;上面充满了错误。于是最终他屈服于自己的…

如何通俗理解计算机视觉、计算机图形、图像处理之间的区别与联系

这三者之间联系和区别可以通过下图表示&#xff0c; 左边的图片表示实际景物&#xff0c;右边图片表示实际景物对应的图片。 1、计算机图形 计算机图形技术常用于计算机生成图形。该技术常用的领域有&#xff1a; a.动漫 b.游戏 c.计算机辅助设计&#xff08;CAD&#xff09;…

日本电信企业5G部署计划 限制了华为中兴设备的使用

来源&#xff1a;OFweek电子工程据外媒报道&#xff0c;日本监管机构日前正式向日本电信企业分配5G频谱&#xff0c;而这也正是日本在来年春季推出高速无线服务(5G)的一个重要里程碑。日本三大运营商NTT Docomo、KDDI和软银&#xff0c;以及新进入者Rakuten Inc&#xff0c;都获…

Python安装工具包踩过的坑

1、背景介绍 重装win10系统&#xff0c;重装Python。在坑出现之前&#xff0c;已经完成了Python的安装&#xff08;D盘&#xff09;&#xff0c;并且在系统中添加了环境变量。由于平时需要用到Python2.7和Python3.6&#xff0c;这里将对应的解释器分别改名为Python2和Python3。…

物联网面临的7大网络安全威胁

来源&#xff1a;51CTO译稿摘要&#xff1a;曾经在物联网世界&#xff0c;一切都变得更加庞大。不仅是设备本身——有些小到只容纳几个芯片&#xff0c;他们通常隐藏其中&#xff0c;眼不见心不烦。但物联网中庞大的数据和设备规模令任何网络安全专业人士都感到头疼。据广泛统计…

从技术分工的角度来看996.ICU

最近&#xff0c;Github上996.ICU话题自诞生以来异常火爆&#xff0c; 很多人在网上吐槽程序员工作时间长&#xff0c;Python之父也为此伸张正义。 有人在网上抱怨资本家黑心&#xff0c;无情的压榨剥削员工。 各国都存在加班的现象&#xff0c;但似乎加班现象在中国最为严重。…