我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python实现线性回归的代码怎么写

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python实现线性回归的代码怎么写

这篇文章主要介绍“python实现线性回归的代码怎么写”,在日常操作中,相信很多人在python实现线性回归的代码怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python实现线性回归的代码怎么写”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1线性回归

1.1简单线性回归

python实现线性回归的代码怎么写

在简单线性回归中,通过调整a和b的参数值,来拟合从x到y的线性关系。下图为进行拟合所需要优化的目标,也即是MES(Mean Squared Error),只不过省略了平均的部分(除以m)。

python实现线性回归的代码怎么写

对于简单线性回归,只有两个参数a和b,通过对MSE优化目标求极值(最小二乘法),即可求得最优a和b如下,所以在训练简单线性回归模型时,也只需要根据数据求解这两个参数值即可。

python实现线性回归的代码怎么写

下面使用波士顿房价数据集中,索引为5的特征RM (average number of rooms per dwelling)来进行简单线性回归。其中使用的评价指标为:

python实现线性回归的代码怎么写

python实现线性回归的代码怎么写

python实现线性回归的代码怎么写

python实现线性回归的代码怎么写

python实现线性回归的代码怎么写

# 以sklearn的形式对simple linear regression 算法进行封装import numpy as npimport sklearn.datasets as datasetsfrom sklearn.model_selection import train_test_splitimport matplotlib.pyplot as pltfrom sklearn.metrics import mean_squared_error,mean_absolute_errornp.random.seed(123)class SimpleLinearRegression():    def __init__(self):        """        initialize model parameters        self.a_=None        self.b_=None    def fit(self,x_train,y_train):        training model parameters        Parameters        ----------            x_train:train x ,shape:data [N,]            y_train:train y ,shape:data [N,]        assert (x_train.ndim==1 and y_train.ndim==1),\            """Simple Linear Regression model can only solve single feature training data"""        assert len(x_train)==len(y_train),\            """the size of x_train must be equal to y_train"""        x_mean=np.mean(x_train)        y_mean=np.mean(y_train)        self.a_=np.vdot((x_train-x_mean),(y_train-y_mean))/np.vdot((x_train-x_mean),(x_train-x_mean))        self.b_=y_mean-self.a_*x_mean    def predict(self,input_x):        make predictions based on a batch of data            input_x:shape->[N,]        assert input_x.ndim==1 ,\            """Simple Linear Regression model can only solve single feature data"""        return np.array([self.pred_(x) for x in input_x])    def pred_(self,x):        give a prediction based on single input x        return self.a_*x+self.b_    def __repr__(self):        return "SimpleLinearRegressionModel"if __name__ == '__main__':    boston_data = datasets.load_boston()    x = boston_data['data'][:, 5]  # total x data (506,)    y = boston_data['target']  # total y data (506,)    # keep data with target value less than 50.    x = x[y < 50]  # total x data (490,)    y = y[y < 50]  # total x data (490,)    plt.scatter(x, y)    plt.show()    # train size:(343,) test size:(147,)    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)    regs = SimpleLinearRegression()    regs.fit(x_train, y_train)    y_hat = regs.predict(x_test)    rmse = np.sqrt(np.sum((y_hat - y_test) ** 2) / len(x_test))    mse = mean_squared_error(y_test, y_hat)    mae = mean_absolute_error(y_test, y_hat)    # notice    R_squared_Error = 1 - mse / np.var(y_test)    print('mean squared error:%.2f' % (mse))    print('root mean squared error:%.2f' % (rmse))    print('mean absolute error:%.2f' % (mae))    print('R squared Error:%.2f' % (R_squared_Error))

输出结果:

mean squared error:26.74
root mean squared error:5.17
mean absolute error:3.85
R squared Error:0.50

数据的可视化:

python实现线性回归的代码怎么写

1.2 多元线性回归

python实现线性回归的代码怎么写

多元线性回归中,单个x的样本拥有了多个特征,也就是上图中带下标的x。
其结构可以用向量乘法表示出来:
为了便于计算,一般会将x增加一个为1的特征,方便与截距bias计算。

python实现线性回归的代码怎么写

python实现线性回归的代码怎么写

而多元线性回归的优化目标与简单线性回归一致。

python实现线性回归的代码怎么写

通过矩阵求导计算,可以得到方程解,但求解的时间复杂度很高。

python实现线性回归的代码怎么写

下面使用正规方程解的形式,来对波士顿房价的所有特征做多元线性回归。

import numpy as npfrom PlayML.metrics import r2_scorefrom sklearn.model_selection import train_test_splitimport sklearn.datasets as datasetsfrom PlayML.metrics import  root_mean_squared_errornp.random.seed(123)class LinearRegression():    def __init__(self):        self.coef_=None # coeffient        self.intercept_=None # interception        self.theta_=None    def fit_normal(self, x_train, y_train):        """        use normal equation solution for multiple linear regresion as model parameters        Parameters        ----------        theta=(X^T * X)^-1 * X^T * y        assert x_train.shape[0] == y_train.shape[0],\            """size of the x_train must be equal to y_train """        X_b=np.hstack([np.ones((len(x_train), 1)), x_train])        self.theta_=np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y_train) # (featere,1)        self.coef_=self.theta_[1:]        self.intercept_=self.theta_[0]    def predict(self,x_pred):        """给定待预测数据集X_predict,返回表示X_predict的结果向量"""        assert self.intercept_ is not None and self.coef_ is not None, \            "must fit before predict!"        assert x_pred.shape[1] == len(self.coef_), \            "the feature number of X_predict must be equal to X_train"        X_b=np.hstack([np.ones((len(x_pred),1)),x_pred])        return X_b.dot(self.theta_)    def score(self,x_test,y_test):        Calculate evaluating indicator socre        ---------            x_test:x test data            y_test:true label y for x test data        y_pred=self.predict(x_test)        return r2_score(y_test,y_pred)    def __repr__(self):        return "LinearRegression"if __name__ == '__main__':    # use boston house price dataset for test    boston_data = datasets.load_boston()    x = boston_data['data']  # total x data (506,)    y = boston_data['target']  # total y data (506,)    # keep data with target value less than 50.    x = x[y < 50]  # total x data (490,)    y = y[y < 50]  # total x data (490,)    # train size:(343,) test size:(147,)    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3,random_state=123)    regs = LinearRegression()    regs.fit_normal(x_train, y_train)    # calc error    score=regs.score(x_test,y_test)    rmse=root_mean_squared_error(y_test,regs.predict(x_test))    print('R squared error:%.2f' % (score))    print('Root mean squared error:%.2f' % (rmse))

输出结果:

R squared error:0.79
Root mean squared error:3.36

1.3 使用sklearn中的线性回归模型

import sklearn.datasets as datasetsfrom sklearn.linear_model import LinearRegressionimport numpy as npfrom sklearn.model_selection import train_test_splitfrom PlayML.metrics import  root_mean_squared_errornp.random.seed(123)if __name__ == '__main__':    # use boston house price dataset    boston_data = datasets.load_boston()    x = boston_data['data']  # total x size (506,)    y = boston_data['target']  # total y size (506,)    # keep data with target value less than 50.    x = x[y < 50]  # total x size (490,)    y = y[y < 50]  # total x size (490,)    # train size:(343,) test size:(147,)    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=123)    regs = LinearRegression()    regs.fit(x_train, y_train)    # calc error    score = regs.score(x_test, y_test)    rmse = root_mean_squared_error(y_test, regs.predict(x_test))    print('R squared error:%.2f' % (score))    print('Root mean squared error:%.2f' % (rmse))    print('coeffient:',regs.coef_.shape)    print('interception:',regs.intercept_.shape)
R squared error:0.79Root mean squared error:3.36coeffient: (13,)interception: ()

到此,关于“python实现线性回归的代码怎么写”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python实现线性回归的代码怎么写

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python实现线性回归的代码怎么写

这篇文章主要介绍“python实现线性回归的代码怎么写”,在日常操作中,相信很多人在python实现线性回归的代码怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python实现线性回归的代码怎么写”的疑
2023-06-29

线性回归与岭回归python代码实现

在线性回归中我们要求的参数为:详细的推导可以参见:http://blog.csdn.net/weiyongle1996/article/details/73727505所以代码实现主要就是实现上式,python代码如下:import num
2023-01-31

Java线性回归基础代码怎么写

这篇文章主要介绍“Java线性回归基础代码怎么写”,在日常操作中,相信很多人在Java线性回归基础代码怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java线性回归基础代码怎么写”的疑惑有所帮助!接下来
2023-06-02

Python怎么实现线性回归

Python怎么实现线性回归,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、概述(1)人工智能学习 (2)机器学习 (3)有监督学习 (4)
2023-06-26

python一元线性回归怎么实现

在Python中,可以使用NumPy和Scikit-learn库来实现一元线性回归。以下是一元线性回归的实现步骤:1. 导入所需的库:```pythonimport numpy as npfrom sklearn.linear_model
2023-08-18

python多元线性回归怎么实现

在Python中,可以使用`scikit-learn`库来实现多元线性回归。首先,需要导入所需的库和模块:```pythonfrom sklearn.linear_model import LinearRegressionfrom skle
2023-08-18

Python scikit-learn 做线性回归的示例代码

一、概述机器学习算法在近几年大数据点燃的热火熏陶下已经变得被人所“熟知”,就算不懂得其中各算法理论,叫你喊上一两个著名算法的名字,你也能昂首挺胸脱口而出。当然了,算法之林虽大,但能者还是有限,能适应某些环境并取得较好效果的算法会脱颖而出,而
2022-06-04

pytorch怎样实现线性回归

这篇文章给大家分享的是有关pytorch怎样实现线性回归的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下# 随机初始化一个二维数据集,使用朋友torch训练一个回归模型import numpy as n
2023-06-14

r语言线性回归怎么实现

在R语言中,可以使用`lm()`函数来实现线性回归。下面是一个简单的示例:```R# 创建一个简单的数据集x y # 执行线性回归model # 查看回归结果summary(model)```在上面的示例中,使用`lm(y ~ x)`进行线
2023-08-18

Python线性回归怎么理解

这篇文章主要讲解了“Python线性回归怎么理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python线性回归怎么理解”吧!前言:线性回归模型属于经典的统计学模型,该模型的应用场景是根据
2023-06-21

pytorch实现线性回归和多元回归的方法

本篇内容介绍了“pytorch实现线性回归和多元回归的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!最近在学习pytorch,现在把学习
2023-06-14

pytorch实现线性回归的方法

这篇文章主要介绍“pytorch实现线性回归的方法”,在日常操作中,相信很多人在pytorch实现线性回归的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”pytorch实现线性回归的方法”的疑惑有所帮助!
2023-06-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录