python统计分析--3.线性回归四种算法
文章目录
- 1. 最小二乘法
- 1.1 最小二乘法
- 1.2 正则化回归
- 1.3 SGD随机梯度下降法
- 2. 相关分析
几种加速方法
statsmodel–>sklearn
ols最小二乘法,运算时间长,处理速度慢,占用内存大
sgd梯度下降法–需要内存小,可以处理大型数据—可以处理过拟合和稀疏数据(0和1)
正则化–占用内存小,可以处理过拟合和稀疏数据
n_jobs=-1 加速处理数据,所有内存来处理数据
批次/在线/mini bactgh加速
Gpu、cpu加速,sklearn不擅长Gpu、cpu加速,深层神经网络可以进行加速
1. 最小二乘法
1.1 最小二乘法
最小二乘法是最佳估计的常见使用方法
1.2 正则化回归
在最小二乘法后面加上一个参数,解决出现数据中有稀疏数据和共线性场景(缺点:内存需要大)
1.3 SGD随机梯度下降法
不需要太多内存,效果会比上面两种好
实现梯度下降Python代码
#导入包
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
from sklearn import linear_model
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False#---------随机梯度下降(Stochastic Gradient Descent)---------------
x=np.array([1,2,3,4,5,6])
y=np.array([3,6,5,9,8,8])
plt.scatter(x,y)#1.sgd最小化模型误差
"""
w=w-alpha*delta
注:w为回归系数,alpha学习率,在[0 1]之间,通常设为0.3方程式:y=b0+b1*x
"""
#2.sgd算法"""
迭代#1
令:b0=0, b1=0,则y=0+0*x
因为error(i)=p(i)-y(i),所以error(1)=0-3=-3,其中p是预测值因为b0(t+1)=b0(t)-alpha*error,所以b0(t+1)=0-0.3*(-3)=0.9
因为b1(t+1)=b1(t)-alpha*error*x,所以b1(t+1)=0-0.3*(-3)*1=0.9迭代#2
令:b0=0.9, b1=0.9,则y=0.9+0.9*x
因为error(i)=p(i)-y(i),所以error(1)=2.7-6=-3.3因为b0(t+1)=b0(t)-alpha*error,所以b0(t+1)=0.9-0.3*(-3.3)=1.89
因为b1(t+1)=b1(t)-alpha*error*x,所以b1(t+1)=0.9-0.3*(-3.3)*2=2.88迭代#3......注:一共6行数据,迭代后重新从第一行开始,则6次迭代为一个epoch(全部样本训练一次)
"""
print()
2. 相关分析
导入需要的安装包,和读取文件
#导入包
import numpy as np
import pandas as pd
import statsmodels.formula.api as smf
from sklearn import linear_model
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams["font.sans-serif"]=["SimHei"]
plt.rcParams["axes.unicode_minus"]=False#使用pandas读取数据支持xls和xlsx
data=pd.read_excel("运动.xlsx")
data1=pd.read_excel("运动1.xlsx")
data.head(2)
- 各种图形的程序
#相关分析corr
plt.scatter(x="运动时间",y="体重",s=100,data=data,alpha=0.3)#alpha=气泡透明度,22为尺寸
data.corr(method="spearman")#显示所有变量,method=pearson、kendall、spearman
data.corr()["体重"]#显示绩效总分与其他变量的相关系数
sns.heatmap(data.corr(method="spearman"),cmap='tab10_r')
sns.pairplot(data=data.iloc[:,[0,1,2,3,4,5]],vars=["运动时间", "骑行时间","体重"],hue='亲缘')
plt.show()
from scipy import stats
r,p=stats.pearsonr(data["体重"],data["运动时间"])#显示p值
print(r,p)
- 散点图
#相关分析corr
plt.scatter(x="运动时间",y="体重",s=100,data=data,alpha=0.3) #alpha=气泡透明度,22为尺寸
数据大多数集中在0.5-1之间
- 热力图
#相关分析corr
sns.heatmap(data.corr(method="spearman"),cmap='tab10_r')
看各变量之间的相关性
- 配对散点图
#相关分析corr
sns.pairplot(data=data.iloc[:,[0,1,2,3,4,5]],vars=["运动时间", "骑行时间","体重"],hue='亲缘')
sns.pairplot(data=data1.iloc[:,[0,1,2,3,4,5]],vars=["运动时间", "骑行时间","体重"],hue='亲缘')#hue表示以什么为分组
线性回归只适合于中间部分线性,两端不太实用,需要插入一些函数去修正这个参数
#---------老样本和新样本预测----------------
x=data1.iloc[:,1:6]
x_new=pd.DataFrame([{'饮食':2,'性别':2,'亲缘':1,'运动时间':3.22,'骑行时间':1.36}])
result.predict(x_new)
线性预测的结果不是很好,预测出人的体重为36.627公斤,与实际值相差很大,需要去修正,插入一些函数
- 笔记
python统计分析--3.线性回归四种算法相关推荐
- Python 数据降噪处理的四种方法——均值滤波、小波变换、奇异值分解、改变binSize
Python 数据降噪处理的四种方法--均值滤波.小波变换.奇异值分解.改变binSize github主页:https://github.com/Taot-chen 一.均值滤波 1)算法思想 给定 ...
- python安装第三方库-python第三方库的四种安装方法
讲解一下python第三方库的四种安装方法 问题场景 (我的操作系统windows): 我使用pip install selenium 发现先爆出一大段黄色警告日志,最后是两段红色的错误日志,无法成功 ...
- ML之DTRFRExtraTRGBR:基于四种算法(DT、RFR、ExtraTR、GBR)对Boston(波士顿房价)数据集(506,13+1)进行价格回归预测并对比各自性能
ML之DT&RFR&ExtraTR&GBR:基于四种算法(DT.RFR.ExtraTR.GBR)对Boston(波士顿房价)数据集(506,13+1)进行价格回归预测并对比各自 ...
- python数据对比找不同_利用Python读取文件的四种不同方法比对
利用Python读取文件的四种不同方法比对 大家都知道Python 读文件的方式多种多样,但是当需要读取一个大文件的时候,不同的读取方式会有不一样的效果.下面就来看看详细的介绍吧. 场景 逐行读取一个 ...
- 大数据可视化python_大数据分析之Python数据可视化的四种简易方法
本篇文章探讨了大数据分析之Python数据可视化的四种简易方法,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. < 数据可视化是任何数据科学或机器学习项目的一个重要组成部分 ...
- 查看python的版本号有 四种方案
查看python的版本号 查看python的版本号有 四种方案 命令行查看 sys模块 查看python的版本号有 四种方案 命令行查看 命令行下查看,在配置好了开发运行环境的前提下: 输入 pyth ...
- python,时间的四种格式
from time import *a=time() b=(a-timezone)/86400 c=localtime(a) d=strftime('%Y-%m-%d %H:%M:%S',c)prin ...
- 3.1.5 操作系统之动态分区分配的四种算法(首次适应算法、最佳适应算法、最坏适应算法、临近适应算法)
文章目录 0.思维导图 1.首次适应算法 2.最佳适应算法 3.最坏(大)适应算法 4.临近适应算法 5.四种算法归纳比较 0.思维导图 本篇文章是对上一篇文章内存的分配与回收提到的动态分区分配算法的 ...
- Python创建进程的四种方式
Python创建进程的四种方式 百度百科 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构 ...
最新文章
- JAVA String之contains方法使用
- 腾讯推出高性能 RPC 开发框架
- pandas基于条件判断更新dataframe中特定数据列数值内容的值(Conditionally updating values in specific pandas Dataframe )
- 记录一下python手动安装第三方库
- Chipscope使用
- CDQ 分治与整体二分
- 《C++ Primer 5th》笔记(7 / 19):类
- leetcode 112 --- 二叉树根节点到叶子节点和为指定值的路径
- GP学习(二)—Executing tools and Accesubg licensing0
- mysql 无符号 负数_mysql – BETWEEN使用负值和无符号整数
- 写给数据小白:怎么让你的分析结论超出预期,不再是废纸一堆
- vim编辑器初级(一)
- anaconda + tensorflow +ubuntu 超级菜鸟,大家多指正【转】
- PHP学习笔记 第六讲 PHP数组的创建修改应用
- 前端数据可视化echarts.js使用指南
- Qt5_自定义处理Windows消息函数
- ENSP教程---OSPF单区域配置实验
- 易居(个人中心资料修改+实名认证)
- 阿里巴巴的微服务开源之路 1
- 我是怎样通过软考网络工程师考试的
热门文章
- dbinfo.properties mysql_java 8.0Mysql 助手类
- linux内核grub的作用与用途,linux中grub是干嘛的
- 用软件测试管理效率,软件测试攻略(一):效率工具分享
- FloatingActionButton完美显示
- QT 动态创建对象(第一种方法)
- java处理图像库函数_图象处理详解-Java架构师必看
- eclipse 关闭时progress information弹框_如何关闭 iPhone 中的评分和好评弹窗?
- 安卓调用系统相机三步走
- 垃圾回收机制与引用类型
- 区块链的那些事,你知道和不知道的都在这里!