python回归分析代码_python代码实现回归分析--线性回归
#概念篇:
#一下是我自己结合课件理解的,如果理解的有问题,期望看到的人能够好心告诉我一下,我将感激不尽~
#1.什么数据建模? 通过原有数据找到其中的规律,并总结成模型.
#2.什么是模型概念? 通过规律总结的模型,来预测自变量的结果(因变量).
#3.什么是回归分析? 是用来解释自变量和因变量之间关系的一种方法.
#4.什么是线性回归? 回归分析的一种,评估自变量和因变量是一种线性关系的的一种方法.
#5. 什么是一元线性回归? 就是自变量只有一个的线性回归(影响元素只有一种).
#6. 什么是多元线性回归? 就是自变量是多个的线性回归(影响元素不止一种).
#7. 什么是拟合? 回归分析的具体实现方式(构建出最能串联现实实际情况的算法公式)
#8. 什么是模型参数? 就是能够解释自变量和因变量关系的参数.
#代码表示篇:
#一元线性回归程序:
#1.基本工具导入.
import numpy as np
#调科学计算包中线性模块里的线性回归函数
from sklearn.linear_model import LinearRegression
#条用科学计算包中的方法选择模块里的用于切分测试集和训练集的函数.
from sklearn.model_selection import train_test_split
#2.建造数据
#随机数种子,事先设置之后,就能固定值随机数.
#PS:0可以理解成这组随机数的编号,只要在下边填写同样编号得到的数值是同一组随机数数值.
np.random.seed(0)
#从-10到10之间的100个等差数列(属于连续性数组)
x = np.linspace(-10,10,100)
#设置一个线性回归公式
y = 0.85*x - 0.72
#创建一组数量为100,均值为0,标准差为0.5的随机数组.
e = np.random.normal(loc = 0,scale = 0.5,size = x.shape)
#将变量y加上这个变量e
y += e
#将x转换为二维数组,因为fit方法要求x为二维结构.
x= x.reshape(-1,1)
lr = LinearRegression()
#x:被划分的特征集,y:被划分的标签,test_size:样本的占比(如果是整数表示样本的数量),random_state:随机数种子编号
X_train,X_test,y_train,y_test = train_test_split(x,y,test_size = 0.25,random_state=0)
#拟合数据函数:
lr.fit(X_train,y_train)
#拟合后可利用lr.coef和lr.intercept取出(w))权重和(b))截距.
print('权重',lr.coef_)
print('截距',lr.intercept_)
#从训练集学习到了模型的参数(w与b),确定方程,就可以进行预测了.
#定义一个预测函数
y_hat = lr.predict(X_test)
#比对一下预测的y值与实际y值
print("实际值:",y_test.ravel()[:10])
print("预测值:",y_hat[:10])
import matplotlib as mpl
import matplotlib.pyplot as plt
#画布初始设定:
mpl.rcParams["font.family"] = "SimHei"
mpl.rcParams["axes.unicode_minus"] =False
#将训练集和测试集用散点形式表现
plt.scatter(X_train,y_train,s = 15,label = '训练集')
plt.scatter(X_test,y_test,s = 15,label = '测试集')
#将预测结果用直线画出
plt.plot(x,lr.predict(x),"r-")
#显示说明
plt.legend()
#用图标表示出真实值与预测值
plt.figure(figsize = (15,5))
plt.plot(y_test,label = "真实值",color = "r",marker = "o")
plt.plot(y_hat,label = "预测值",color = "g",marker = "o")
plt.xlabel("测试集数据序号")
plt.ylabel("数据值")
plt.legend()
#线性回归模型评估
from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_score
print("平均方误差(MSE):",mean_squared_error(y_test,y_hat))
print("根均方误差( RMSE):",mean_absolute_error(y_test,y_hat))
print("平均绝对值误差(MAE):",r2_score(y_test,y_hat))
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error
from sklearn.model_selection import train_test_split
#make_regression 用来生成样本数据,用于回归模型
from sklearn.datasets import make_regression
# n_sampless:生成样本个体的数量
#n_features: 特征数量(x的数量)
#bias:偏置值.
#random_state :随机种子
#noise:噪音
#生成线性回归的样本数据
# n_sampless:生成样本个体的数量
#n_features: 特征数量(x的数量)
#coef: 是否返回权重.ture 返回,false不返回
#bias:偏置值.
#random_state :随机种子
X,y,coef = make_regression(n_samples=1000,n_features=2,coef=True,bias=5.5,random_state=0)
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.25,random_state=0)
print("实际权重:",coef)
lr = LinearRegression()
lr.fit(X_train,y_train)
print("模型权重:",lr.coef_)
print("截距:",lr.intercept_)
y_hat = lr.predict(X_test)
print("均方误差:",mean_absolute_error(y_test,y_hat))
print("训练集R~2:",lr.score(X_train,y_train))
print("训练集R~2:",lr.score(X_test,y_test))
python回归分析代码_python代码实现回归分析--线性回归相关推荐
- python重构函数_Python代码重构
代码重构是一件非常辛苦却非常有意义的事情,代码重构的原因在于: 1.代码过于冗余.沉余 2.代码过于耦合 3.代码过于复杂 4.接口调用超出三层 这次重构主要在于架构问题,自己没有画出实现整个项目的功 ...
- python北京时间代码_python代码定时同步本机的北京时间详解
这段python代码首先从www.beijing-time.org上获取标准的北京时间,然后同步获取的北京时间到本地 # -*- coding: utf-8 -*- import time,httpl ...
- knn的python代码_Python代码实现KNN算法
kNN算法是k-近邻算法的简称,主要用来进行分类实践,主要思路如下: 1.存在一个训练数据集,每个数据都有对应的标签,也就是说,我们知道样本集中每一数据和他对应的类别. 2.当输入一个新数据进行类别或 ...
- python解决实际问题的代码_Python代码规范问题及解决
为了养成使用Python编程好习惯,尽量保证自己写的代码符合PEP8代码规范,下面是过程中报出的警告及解决方法,英文有些翻译不太准确见谅,会不断更新: PEP 8 只是检测风格错误,而非编码错误! P ...
- 打包python程序发布_Python代码的打包与发布详解
在python程序中,一个.py文件被当作一个模块,在各个模块中定义了不同的函数.当我们要使用某一个模块中的某一个函数时,首先须将这个模块导入,否则就会出现函数未定义的情况. 下面记录的是打包及安装包 ...
- python居中填充_Python代码中 如何将字符串填充为指定长度并保持原字符串居中呢?...
摘要: 下文讲述Python代码中字符串填充的方法分享,如下所示: 字符串填充有很多方法, 如for循环填充,while循环填充 那么Python语言中,到底有没有快捷方式对字符串进行填充呢? 下文将 ...
- python linux 优化_Python 代码性能优化技巧
Python 性能优化除了改进算法,选用合适的数据结构之外,还有几种关键的技术,比如将关键 python 代码部分重写成 C 扩展模块,或者选用在性能上更为优化的解释器等,这些在本文中统称为优化工具. ...
- python顺序结构代码_Python代码结构——顺序、分支、循环
## 顺序结构 - 按照从上到下的顺序,一条语句一条语句的执行,是最基本的结构 ## 分支结构 if condition: statement statement ... elif condition ...
- python实现模糊搜索_Python 代码实现模糊查询
1.导语: 模糊匹配可以算是现代编辑器(如 Eclipse 等各种 IDE)的一个必备特性了,它所做的就是根据用户输入的部分内容,猜测用户想要的文件名,并提供一个推荐列表供用户选择. 样例如下: Vi ...
最新文章
- python计算csv文件内的数据_Python利用pandas计算多个CSV文件数据值的实例
- matlab创建图形用户界面,Matlab 用户图形界面 基础 (一)
- linux下不同程序如何协同,Linux程序员怎么和Exchange协同工作
- C#和nodejs的互操作
- C#virtual和abstract的区别
- css布局,让侧边栏高度撑满,并且不会随着屏幕内容滚动
- koa router ajax,ajax 请求 koa2 router.post 404
- BZOJ2958 序列染色(动态规划)
- 0宽字符加密_一文看懂异或加密,有动画演示呦
- ModuleNotFoundError: No module named ‘keras.api‘
- 使用shell脚本 控制 python挂掉后自动重启
- list -- set方法——替换列表中指定位置的元素
- 依图做语音了!识别精度创中文语音识别新高点
- 问题:jquery中的change()事件,以及jquery中的prop()事件与attr()事件的区别
- 商业银行vh是哪个银行的简称_各个银行缩写是什么
- JumpServer登录提示连接WebSocket失败
- 19寸宽屏液晶显示器的设置 有效保护视力
- 协同软件市场一盘散沙 春种能否秋收心中没底
- ERROR 2002 (HY000): Cant connect to local MySQL server through socket的解决方法
- 为什么要使用ELK-----EKL的原理 ---以及ELK的配置 详细! 小白都能懂
热门文章
- STM32的FSMC
- 基础博弈论(巴什博奕、斐波那契博弈、威佐夫博奕、尼姆博奕)
- 为什么要做接口测试?好处是什么?什么是接口?不同接口类型的差异是什么?
- 3D轮播切换特效 源码+注释
- Javah提示未找到 ..的类文件
- ubuntu 20.04 休眠_联想小新Pro13 2020锐龙版R7 4800U安装ubuntu-20.04
- Android studio创建Launcher Activity时没有Backwards Compatibility(AppCompat)的原因
- Linux-dhclient命令
- 七种必看的个股盘口语言
- mysql5.7语句建库_MySQL5.7.14下载安装图文教程及MySQL数据库语句入门大全