导航:首页 > 编程语言 > 用python做回归分析

用python做回归分析

发布时间:2023-04-27 02:20:23

‘壹’ 房屋与房屋尺寸多项式回归代码

1.基本概念

多项式回归(Polynomial Regression)是研究一个因变量与一个或多个自变量间多项式的回归分析方法。如果自变量只有一个 时,称为一元多项式回归;如果自变量有多个时,称为多元多项式回归。



1.在一元回归分析中,如果依变量y与自变量x的关系为非线性的,但是又找不到适当的函数曲线来拟合,则可以采用一元多项式回归。

2.多项式回归的最大优点就是可以通过增加x的高次项对实测点进行逼近,直至满意为止。

3.事实上,多项式回归可以处理相当一类非线性问题,它在回归分析 中占有重要的地位,因为任一函数都可以分段用多项式来逼近。



2.实例

我们在前面已经根据已知的房屋成交价和房屋的尺寸进行了线 性回归,继而可以对已知房屋尺寸,而未知房屋成交价格的实例进行了成 交价格的预测,但是在实际的应用中这样的拟合往往不够好,因此我们在 此对该数据集进行多项式回归。

目标:对房屋成交信息建立多项式回归方程,并依据回归方程对房屋价格进行预测



import matplotlib.pyplot as plt
import numpy as np
from sklearn import linear_model
#导入线性模型和多项式特征构造模块
from sklearn.preprocessing import PolynomialFeatures

datasets_X =[]
datasets_Y =[]
fr =open('prices.txt','r')
#一次读取整个文件。
lines =fr.readlines()
#逐行进行操作,循环遍历所有数据
for line in lines:
#去除数据文件中的逗号
items =line.strip().split(',')
#将读取的数据转换为int型,并分别写入datasets_X和datasets_Y。
datasets_X.append(int(items[0]))
datasets_Y.append(int(items[1]))
#求得datasets_X的长度,即为数据的总数。
length =len(datasets_X)
#将datasets_X转化为数组, 并变为二维,以符合线性回 归拟合函数输入参数要求
datasets_X= np.array(datasets_X).reshape([length,1])
#将datasets_Y转化为数组
datasets_Y=np.array(datasets_Y)

minX =min(datasets_X)
maxX =max(datasets_X)
#以数据datasets_X的最大值和最小值为范围,建立等差数列,方便后续画图。
X=np.arange(minX,maxX).reshape([-1,1])
#degree=2表示建立datasets_X的二 次多项式特征X_poly。
poly_reg =PolynomialFeatures(degree=2)
X_ploy =poly_reg.fit_transform(datasets_X)
lin_reg_2=linear_model.LinearRegression()
lin_reg_2.fit(X_ploy,datasets_Y)

#查看回归方程系数
print('Cofficients:',lin_reg_2.coef_)
#查看回归方程截距
print('intercept',lin_reg_2.intercept_)
plt.scatter(datasets_X,datasets_Y,color='red')
plt.plot(X,lin_reg_2.predict(poly_reg.fit_transform(X)),color='blue')
plt.xlabel('Area')
plt.ylabel('Price')
plt.show()
运行结果:
Cofficients: [0.00000000e+00 4.93982848e-02 1.89186822e-05]
intercept 151.8469675050044
通过多项式回归拟合的曲线与 数据点的关系如下图所示。依据该 多项式回归方程即可通过房屋的尺 寸,来预测房屋的成交价格。



文章知识点与官方知识档案匹配
python入门技能树人工智能基于Python的监督学习
194396 人正在系统学习中
打开CSDN,阅读体验更佳

基于Python的多项式拟合方法_飘羽的博客_python 多项式...
基于Python的多项式拟合方法 1. 直接上代码进行介绍 __author__ ='Administrator' # coding=utf8 # 导入相关包 importmatplotlib.pyplotasplt importnumpyasnp frompandasimportread_csv fromsklearn.metricsimportr2_score...
继续访问
python机器学习 | 多项式回归和拟合_Claire_chen_jia的博客...
多项式回归中,加入了特征的更高次方(例如平方项或立方项),也相当于增加了模型的自由度,用来捕获数据中非线性的变化。 多项式拟合lm_sklearn之多项式回归 weixin_34419561的博客 601 '''多项式回归:若希望回归模型更好的拟合训练样本...
继续访问
最新发布 Python回归预测建模实战-多项式回归预测房价(附源码和实现效果)
Python回归预测建模实战-多项式回归预测房价(附源码和实现效果)
继续访问

sklearn实现非线性回归模型
sklearn实现非线性回归模型 前言: sklearn实现非线性回归模型的本质是通过线性模型实现非线性模型,如何实现呢?sklearn就是先将非线性模型转换为线性模型,再利用线性模型的算法进行训练模型。 一、线性模型解决非线性模型的思想 1、样本数据如下 x y 1 45000 2 50000 3 60000 4 80000 5 110000 6 15000...
继续访问

多项式拟合,模型的复杂度以及权重的变化_今晚打佬虎的博客...
sklearn,提供了多项式特征的方法: fromsklearn. X=np.arange(6).reshape(3,2)poly=PolynomialFeatures(2)poly.fit_transform(X)>>>array([[1.,0.,1.,0.,0.,1.],[1.,2.,3.,4.,6.,9...
继续访问
python数据处理三:使用sklearn实现曲线拟合_耐心的小黑的博客-CSDN博 ...
from sklearn.linear_model import LinearRegressionfrom sklearn.preprocessing import PolynomialFeaturesimport numpy as npimport matplotlib.pyplot as plt#获取待拟合数据x = np.linspace(1, 50, 50)f = np.poly1d([2,5,10])y ...
继续访问
机器学习(十)线性&多项式回归之房价与房屋尺寸关系
一.线性回归 (1)线性回归  线性回归(Linear Regression)是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分 析方法。  线性回归利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归 线性回归:使用形如y=w T x+b的线性模型拟合数据输入和输出之间的映射关系的。 线性回归有很多实际的用途,分为以下两类: 1.如果目标是预测或者映射,线性回归可以用来对观测数据集的y和X的值拟合出一个预测模型。
python完成非线性拟合
在之前的博客"使用python来完成数据的线性拟合"当中,介绍了基于python,使用三种方法完成线性拟合的理论和代码实现。同样经常会碰到样本分布呈现非线性关系的情况,那么如何拟合出来呢?本文侧重对数据已经有建模,但是准确的关系需要得以确定的情况。 如果想直接求出拟合系数,而不清楚原本模型的话,直接利用theta = np.polyfit(X, Y_noise, deg=4)得到y=a*x^4+b*x^3+c*x^2+d方程的theta=[a,b,c,d]。这里deg=4表...
继续访问

sklearn实现多项式回归_盛夏未来的博客
sklearn实现多项式回归 多项式回归 一个数据集,用散点图画出来如下图,可以看到此时用一条直线(或者超平面)是不能拟合的,所以需要用一个多项式表示的曲线(或者超曲面)才能得到更好的拟合结果。
继续访问
多项式回归+房价与房屋尺寸的非线性拟合
多项式回归 多项式回归(Polynomial Regression)是研究一个因变量与一个或多个自变量间多项式的回归分析方法。如果自变量只有一个时,称为一元多项式回归;如果自变量有多个时,称为多元多项式回归。 在一元回归分析中,如果依变量y与自变量X的关系为非线性的,但是又找不到适当的函数曲线来拟合,则可以采用一元多项式回归。后续的实例就是这个例子。 多项式回归的最大优点就是可以通过增加X的高次...
继续访问
Python机器学习应用 | 多项式回归
1 多项式回归多项式回归(Polynomial Regression)是研究一个因变量与一个或多个自变量间多项式的回归分析方法。如果自变量只有一个时,称为一元多项式回归;如果自变量有多个时,称为多元多项式回归。 在一元回归分析中,如果依变量y与自变量x的关系为非线性的,但是又找不到适当的函数曲线来拟合,则可以采用一元多项式回归。 多项式回归的最大优点就是可以通过增加x的高次项对实测点进行逼近,直
继续访问
多项式拟合lm_sklearn之多项式回归
'''多项式回归:若希望回归模型更好的拟合训练样本数据,可以使用多项式回归器。一元多项式回归:数学模型:y = w0 + w1 * x^1 + w2 * x^2 + .... + wn * x^n将高次项看做对一次项特征的扩展得到:y = w0 + w1 * x1 + w2 * x2 + .... + wn * xn那么一元多项式回归即可以看做为多元线性回归,可以使用LinearRegressio...
继续访问
sklearn多项式拟合
https://blog.csdn.net/bxg1065283526/article/details/80043049
继续访问
【Scikit-Learn】多项式拟合
%matplotlib inline import matplotlib.pyplot as plt import numpy as np n_dots = 20 x = np.linspace(0, 1, n_dots) # [0, 1] 之间创建 20 个点 y = np.sqrt(x) + 0.2*np.random.rand(n_dots) - 0....
继续访问
python 非线性多项式拟合_浅析多项式回归与sklearn中的Pipeline
0x00 前言 之前我们介绍了简单线性回归,其输入特征只有一维,即:;推广到多维特征,即多元线性回归:。但是在线性回归的背后是有一个很强的假设条件:数据存在线性关系。但是更多的数据之间具有非线性关系。因此对线性回归法进行改进,使用多项式回归法,可以对非线性数据进行处理。0x01 什么是多项式回归 研究一个因变量与一个或多个自变量间多项式的回归分析方法,称为多项式回归(Polynomial...
继续访问

机器学习-sklearn-多项式回归-对函数拟合-看学习曲线(均方误差MSE)-pipeline
python sklearn pipeline做函数拟合,-看学习曲线(均方误差MSE)
继续访问

sklearn实现多项式回归
1)生成数据集 import numpy as np import matplotlib.pyplot as plt n_train, n_test, true_w, true_b = 100, 100, [1.2, -3.4, 5.6], 5 # X = np.linspace(-3,3,n_train+n_test) X = np.random.normal(size=(n_train...
继续访问
多项式回归
线性回归只能拟合简单的 线性问题,当现在数据的复杂程度不能使用线性拟合,这时要考虑非线性拟合。现在考虑一种最简单的非线性拟合--多项式回归。 多项式回归的含义是直接从线性回归过度到非线性,简单的做法可以将原来的特征的幂次方作为一个新的特征,这样随着特征的逐渐复杂,它也能够解决非线性数据的拟合问题,这种从线性特征集上扩展过来的模型,称为多项式回归。 首先创建非线性带噪声的数据集 import...
继续访问

sklearn多项式回归
# -*- coding: utf-8 -*- """ Created on Mon Jan 29 22:57:10 2018 @author: Administrator """ import matplotlib.pyplot as plt import numpy as np from sklearn.linear_model import LinearRegression#导入线性回归
继续访问
【机器学习】多项式回归python实现
使用python实现多项式回归,没有使用sklearn等机器学习框架,目的是帮助理解算法的原理。 使用一个简单的数据集来模拟,只有几条数据。 代码 从数据集中读取X和y。 为X添加二次方项,用Z替换。 给Z添加 1 列,初始化为 1 ,用来求偏置项。 划分训练集和测试集。 将Z和y的训练集转换为矩阵形式。 和线性回归类似,使用正规方程法,先验证矩阵的可逆性。 去掉Z中全为1的列。 使用测试集...
继续访问

sklearn线性回归完成多次项函数和正弦函数拟合
这样两个式子,使用sklearn 线性回归进行拟合 直接上代码 得到结果:score : 0.9902512046606555 mse : 7940.310765934783画图结果:对于正玄曲线原始数据画图 degree定成三阶拟合图 degree定成二阶拟合图degree定成六阶拟合图,效果非常好,但不知道是不是有点过拟合了、? 话不多说,直接上代码:...
继续访问

热门推荐 python运用sklearn进行数据拟合和回归
在上一篇讲了最小二乘法实现线性回归的原理,实现方面用的是python的static.optimize中的leastsq求出拟合函数。本篇通过sklearn库中的模块来进行拟合和线性回归,并计算拟合误差。 对于线性回归来说,无论是用什么工具实现,步骤都是大同小异的: 初始化多项式方程 对多项式方程进行多次迭代,通过最小二乘法求出使平方损失函数最小情况下的拟合方程。 对模型预测结果进行评估 调整参数...
继续访问

sklearn-多项式回归
import numpy as np import matplotlib.pyplot as plt from sklearn.preprocessing import PolynomialFeatures from sklearn.linear_model import LinearRegression #载入数据 data = np.genfromtxt("job.csv",delim...
继续访问
[机器学习与scikit-learn-31]:算法-回归-线性模拟拟合拟合非线性数据-概述
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址: 目录 第1章 什么是线性与非线性关系 1.1 描述对象 1.2 什么是线性与非线性关系 第2章 数据(分布)的线性与非线性 2.1 什么是线性与非线性数据(拟合、模拟回归) 2.2什么是线性与非线性可分数据(分类、逻辑回归) 2.3 分类问题的拟合表达 第3章 模型的线性与非线性 3.1 线性模型 3.2 特定的非线性模型 3.3 通用的非线性模型:多项式非线性模型(Polyn.
继续访问

‘贰’ 如何用Python进行线性回归以及误差分析

数据挖掘中的预测问题通常分为2类:回归与分类。

简单的说回归就是预测数值,而分类是给数据打上标签归类。

本文讲述如何用Python进行基本的数据拟合,以及如何对拟合结果的误差进行分析。

本例中使用一个2次函数加上随机的扰动来生成500个点,然后尝试用1、2、100次方的多项式对该数据进行拟合。

拟合的目的是使得根据训练数据能够拟合出一个多项式函数,这个函数能够很好的拟合现有数据,并且能对未知的数据进行预测。

代码如下:

‘叁’ python多元线性回归怎么计算

1、什么是多元线性回归模型?

当y值的影响因素不唯一时,采用多元线性回归模型。

y =y=β0+β1x1+β2x2+...+βnxn

例如商品的销售额可能不电视广告投入,收音机广告投入,报纸广告投入有关系,可以有 sales =β0+β1*TV+β2* radio+β3*newspaper.

2、使用pandas来读取数据

pandas 是一个用于数据探索、数据分析和数据处理的python库

[python]view plain

‘肆’ 如何用Python进行线性回归以及误差分析

线性回归:
设x,y分别为一组数据,代码如下
import matplotlib.pyplot as plt
import numpy as np
ro=np.polyfit(x,y,deg=1) #deg为拟合的多项式的次数(线性回归就选1)
ry=np.polyval(ro,x) #忘记x和ro哪个在前哪个在后了。。。
print ro #输出的第一个数是斜率k,第二个数是纵截距b
plt.scatter(x,y)
plt.plot(x,ry)

‘伍’ 使用Python的线性回归问题,怎么解决

本文中,我们将进行大量的编程——但在这之前,我们先介绍一下我们今天要解决的实例问题。

1) 预测房子价格

闪电侠是一部由剧作家/制片人Greg Berlanti、Andrew Kreisberg和Geoff Johns创作,由CW电视台播放的美国电视连续剧。它基于DC漫画角色闪电侠(Barry Allen),一个具有超人速度移动能力的装扮奇特的打击犯罪的超级英雄,这个角色是由Robert Kanigher、John Broome和Carmine Infantino创作。它是绿箭侠的衍生作品,存在于同一世界。该剧集的试播篇由Berlanti、Kreisberg和Johns写作,David Nutter执导。该剧集于2014年10月7日在北美首映,成为CW电视台收视率最高的电视节目。

绿箭侠是一部由剧作家/制片人 Greg Berlanti、Marc Guggenheim和Andrew Kreisberg创作的电视连续剧。它基于DC漫画角色绿箭侠,一个由Mort Weisinger和George Papp创作的装扮奇特的犯罪打击战士。它于2012年10月10日在北美首映,与2012年末开始全球播出。主要拍摄于Vancouver、British Columbia、Canada,该系列讲述了亿万花花公子Oliver Queen,由Stephen Amell扮演,被困在敌人的岛屿上五年之后,回到家乡打击犯罪和腐败,成为一名武器是弓箭的神秘义务警员。不像漫画书中,Queen最初没有使用化名”绿箭侠“。

由于这两个节目并列为我最喜爱的电视节目头衔,我一直想知道哪个节目更受其他人欢迎——谁会最终赢得这场收视率之战。 所以让我们写一个程序来预测哪个电视节目会有更多观众。 我们需要一个数据集,给出每一集的观众。幸运地,我从维基网络上得到了这个数据,并整理成一个.csv文件。它如下所示。

闪电侠

闪电侠美国观众数

绿箭侠

绿箭侠美国观众数

1 4.83 1 2.84

2 4.27 2 2.32

3 3.59 3 2.55

4 3.53 4 2.49

5 3.46 5 2.73

6 3.73 6 2.6

7 3.47 7 2.64

8 4.34 8 3.92

9 4.66 9 3.06

观众数以百万为单位。

解决问题的步骤:

首先我们需要把数据转换为X_parameters和Y_parameters,不过这里我们有两个X_parameters和Y_parameters。因此,把他们命名为flash_x_parameter、flash_y_parameter、arrow_x_parameter、arrow_y_parameter吧。然后我们需要把数据拟合为两个不同的线性回归模型——先是闪电侠,然后是绿箭侠。 接着我们需要预测两个电视节目下一集的观众数量。 然后我们可以比较结果,推测哪个节目会有更多观众。

步骤1

导入我们的程序包:

Python

1

2

3

4

5

6

7

# Required Packages

import csv

import sys

import matplotlib.pyplot as plt

import numpy as np

import pandas as pd

from sklearn import datasets, linear_model

步骤2

写一个函数,把我们的数据集作为输入,返回flash_x_parameter、flash_y_parameter、arrow_x_parameter、arrow_y_parameter values。

Python

1

2

3

4

5

6

7

8

9

10

11

12

13

# Function to get data

def get_data(file_name):

data = pd.read_csv(file_name)

flash_x_parameter = []

flash_y_parameter = []

arrow_x_parameter = []

arrow_y_parameter = []

for x1,y1,x2,y2 in zip(data['flash_episode_number'],data['flash_us_viewers'],data['arrow_episode_number'],data['arrow_us_viewers']):

flash_x_parameter.append([float(x1)])

flash_y_parameter.append(float(y1))

arrow_x_parameter.append([float(x2)])

arrow_y_parameter.append(float(y2))

return flash_x_parameter,flash_y_parameter,arrow_x_parameter,arrow_y_parameter

现在我们有了我们的参数,来写一个函数,用上面这些参数作为输入,给出一个输出,预测哪个节目会有更多观众。

Python

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

# Function to know which Tv show will have more viewers

def more_viewers(x1,y1,x2,y2):

regr1 = linear_model.LinearRegression()

regr1.fit(x1, y1)

predicted_value1 = regr1.predict(9)

print predicted_value1

regr2 = linear_model.LinearRegression()

regr2.fit(x2, y2)

predicted_value2 = regr2.predict(9)

#print predicted_value1

#print predicted_value2

if predicted_value1 > predicted_value2:

print "The Flash Tv Show will have more viewers for next week"

else:

print "Arrow Tv Show will have more viewers for next week"

把所有东西写在一个文件中。打开你的编辑器,把它命名为prediction.py,复制下面的代码到prediction.py中。

Python

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

# Required Packages

import csv

import sys

import matplotlib.pyplot as plt

import numpy as np

import pandas as pd

from sklearn import datasets, linear_model

# Function to get data

def get_data(file_name):

data = pd.read_csv(file_name)

flash_x_parameter = []

flash_y_parameter = []

arrow_x_parameter = []

arrow_y_parameter = []

for x1,y1,x2,y2 in zip(data['flash_episode_number'],data['flash_us_viewers'],data['arrow_episode_number'],data['arrow_us_viewers']):

flash_x_parameter.append([float(x1)])

flash_y_parameter.append(float(y1))

arrow_x_parameter.append([float(x2)])

arrow_y_parameter.append(float(y2))

return flash_x_parameter,flash_y_parameter,arrow_x_parameter,arrow_y_parameter

# Function to know which Tv show will have more viewers

def more_viewers(x1,y1,x2,y2):

regr1 = linear_model.LinearRegression()

regr1.fit(x1, y1)

predicted_value1 = regr1.predict(9)

print predicted_value1

regr2 = linear_model.LinearRegression()

regr2.fit(x2, y2)

predicted_value2 = regr2.predict(9)

#print predicted_value1

#print predicted_value2

if predicted_value1 > predicted_value2:

print "The Flash Tv Show will have more viewers for next week"

else:

print "Arrow Tv Show will have more viewers for next week"

x1,y1,x2,y2 = get_data('input_data.csv')

#print x1,y1,x2,y2

more_viewers(x1,y1,x2,y2)

可能你能猜出哪个节目会有更多观众——但运行一下这个程序看看你猜的对不对。

3) 替换数据集中的缺失值

有时候,我们会遇到需要分析包含有缺失值的数据的情况。有些人会把这些缺失值舍去,接着分析;有些人会用最大值、最小值或平均值替换他们。平均值是三者中最好的,但可以用线性回归来有效地替换那些缺失值。

这种方法差不多像这样进行。

首先我们找到我们要替换那一列里的缺失值,并找出缺失值依赖于其他列的哪些数据。把缺失值那一列作为Y_parameters,把缺失值更依赖的那些列作为X_parameters,并把这些数据拟合为线性回归模型。现在就可以用缺失值更依赖的那些列预测缺失的那一列。

一旦这个过程完成了,我们就得到了没有任何缺失值的数据,供我们自由地分析数据。

为了练习,我会把这个问题留给你,所以请从网上获取一些缺失值数据,解决这个问题。一旦你完成了请留下你的评论。我很想看看你的结果。

个人小笔记:

我想分享我个人的数据挖掘经历。记得在我的数据挖掘引论课程上,教师开始很慢,解释了一些数据挖掘可以应用的领域以及一些基本概念。然后突然地,难度迅速上升。这令我的一些同学感到非常沮丧,被这个课程吓到,终于扼杀了他们对数据挖掘的兴趣。所以我想避免在我的博客文章中这样做。我想让事情更轻松随意。因此我尝试用有趣的例子,来使读者更舒服地学习,而不是感到无聊或被吓到。

谢谢读到这里——请在评论框里留下你的问题或建议,我很乐意回复你。

‘陆’ python需要学习什么内容

Python的学习内容还是比较多的,我们将学习的过程划分为4个阶段,每个阶段学习对应的内容,具体的学习顺序如下:

Python学习顺序:

①Python软件开发基础

互联网行业目前还是最热门的行业之一,学习IT技能之后足够优秀是有机会进入腾讯、阿里、网易等互联网大厂高薪就业的,发展前景非常好,普通人也可以学习。

想要系统学习,你可以考察对比一下开设有相关专业的热门学校,好的学校拥有根据当下企业需求自主研发课程的能力,中博软件学院、南京课工场、南京北大青鸟等开设python专业的学校都是不错的,建议实地考察对比一下。

祝你学有所成,望采纳。

阅读全文

与用python做回归分析相关的资料

热点内容
云服务器服务模型架构 浏览:899
删文件夹什么指令 浏览:507
极速抖音已加密怎么办 浏览:601
matlab拉格朗日算法框图 浏览:428
华为公司计算机视觉算法顾问 浏览:252
夏老师讲的单片机 浏览:296
在编程中如何将图片放大 浏览:161
appstore怎么看是否付费 浏览:603
程序员和硕士 浏览:951
gcc编译消耗内存过多 浏览:281
昌邑网站制作源码 浏览:127
单片机的反向编译 浏览:463
subsample算法 浏览:899
苹果免费看书app哪个最好 浏览:885
c语言加密怎么弄 浏览:842
c语言编译的错误提示 浏览:767
验机苹果app哪个最好 浏览:666
光遇国际服安卓如何购买礼包 浏览:55
163app怎么下载 浏览:247
电脑程序员下场 浏览:45