loess局部加权回归

conda install -c conda-forge statsmodels -y
pip install statsmodels

该函数返回的是一个两列的 numpy 数组, 第一列是原始数据, 第二列是平滑后的。

import statsmodels.api as sm
lowess = sm.nonparametric.lowess
lowess( endog = y值(一维numpy数组)exog = x值(一维numpy数组)frac = 使用多少比例的数据来拟合曲线(0~1, 值越大平滑的力度越大)is_sorted = 告诉程序数据是否按 x值 排序(True, False默认), 默认会把数据排序missing =  (‘none’, ‘drop’, and ‘raise’) 'none'不进行缺失值检查,'drop'丢弃含有缺失值的样本(默认), 'raise'有缺失值会报错return_sorted = (True(默认), False) 返回的数据按 x值 排序
)


实现

import math
import numpy as np
import statsmodels.api as sm
lowess = sm.nonparametric.lowess
import pylab as pln = 100
x = np.linspace(0, 2 * math.pi, n)
y = np.sin(x) + 0.3 * np.random.randn(n)
# yest = lowess(y, x)
yest = lowess(y, x, frac=1./3.)[:,1]pl.clf()
pl.plot(x, y, label='y noisy')
pl.plot(x, yest, label='y pred')
pl.legend()
pl.show()

二、自己实现

from math import ceil
import numpy as np
from scipy import linalg
import mathdef lowess(x, y, f=2./3., iter=1):"""lowess(x, y, f=2./3., iter=3) -> yestLowess smoother: Robust locally weighted regression.The lowess function fits a nonparametric regression curve to a scatterplot.The arrays x and y contain an equal number of elements; each pair(x[i], y[i]) defines a data point in the scatterplot. The function returnsthe estimated (smooth) values of y.The smoothing span is given by f. A larger value for f will result in asmoother curve. The number of robustifying iterations is given by iter. Thefunction will run faster with a smaller number of iterations."""n = len(x)r = int(ceil(f * n))h = [np.sort(np.abs(x - x[i]))[r] for i in range(n)]w = np.clip(np.abs((x[:, None] - x[None, :]) / h), 0.0, 1.0)w = (1 - w ** 3) ** 3yest = np.zeros(n)delta = np.ones(n)for iteration in range(iter):for i in range(n):weights = delta * w[:, i]b = np.array([np.sum(weights * y), np.sum(weights * y * x)])A = np.array([[np.sum(weights), np.sum(weights * x)],[np.sum(weights * x), np.sum(weights * x * x)]])beta = linalg.solve(A, b)yest[i] = beta[0] + beta[1] * x[i]residuals = y - yests = np.median(np.abs(residuals))delta = np.clip(residuals / (6.0 * s), -1, 1)delta = (1 - delta ** 2) ** 2return yestn = 100
x = np.linspace(0, 2 * math.pi, n)
y = np.sin(x) + 0.3 * np.random.randn(n)f = 0.25
yest = lowess(x, y, f=f, iter=3)import pylab as pl
pl.clf()
pl.plot(x, y, label='y noisy')
pl.plot(x, yest, label='y pred')
pl.legend()
pl.show()

参考
statsmodels.nonparametric.smoothers_lowess.lowess

w = (1 - w ** 3) ** 3 是加权函数?
LOESS局部加权非参数回归

【LOESS局部加权非参数回归】相关推荐

  1. LOESS局部加权非参数回归

    ·  非参数回归  · 1. 采用非参数回归的必要性: 一般来讲两个变量之间的关系有时候是非常微妙的,仅仅用简单的直线.曲线参数方程模型是远远不够的,所以有必要采用非参数回归. 2. 非参数回归的特点 ...

  2. 拓端tecdat|R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测

    最近我们被客户要求撰写关于LOESS(局部加权回归)的研究报告,包括一些图形和统计输出. 这篇文章描述了一种对涉及季节性和趋势成分的时间序列的中点进行建模的方法.我们将对一种叫做STL的算法进行研究, ...

  3. R语言用LOESS(局部加权回归)季节趋势分解(STL)进行时间序列异常检测

    全文下载链接:http://tecdat.cn/?p=22632 这篇文章描述了一种对涉及季节性和趋势成分的时间序列的异常点进行建模的方法. 相关视频 我们将对一种叫做STL的算法进行研究,STL是 ...

  4. R语言平滑算法LOESS局部加权回归、三次样条、变化点检测拟合电视节目《白宫风云》在线收视率

    最近我们被客户要求撰写关于LOESS的研究报告,包括一些图形和统计输出. 此示例基于电视节目的在线收视率.我们将从抓取数据开始. # 加载软件包. packages <- c("gpl ...

  5. LOESS 局部加权回归介绍

    一般来说,两个变量之间的关系是十分微妙的,仅仅采用简单的直线.曲线参数方程去描述是不够的,所以这时候就需要非参数回归.关于非参数和参数方法的区别,就是在分析之前有没有对预测做一些限制,比如认为特征和响 ...

  6. 局部加权线性回归(Local Weighted Linear Regression)+局部加权回归+局部线性回归

    局部加权线性回归(Local Weighted Linear Regression)+局部加权回归+局部线性回归 locally weighted scatterplot smoothing,LOWE ...

  7. 局部加权回归Loess对比MFCC三角滤波(吴恩达机器学习中说,Loess算法用到了aircraft的自动驾驶中)

    局部加权回归(Loess): Loess的目标是最小化, 其中 的作用是使预测点的临近点在最小化目标函数中贡献大: Loess更加注重临近点的精确拟合. 这个算法中最神奇的就是这个w,局部相关性w很像 ...

  8. R语言ggpubr包的ggscatter函数可视化散点图(scatter plot)、设置add参数为loess为散点图添加局部加权回归曲线、配置conf.int参数为回归线添加置信区

    R语言ggplot2可视化:使用ggpubr包的ggscatter函数可视化散点图(scatter plot).设置add参数为loess为散点图添加局部加权回归曲线.配置conf.int参数为回归线 ...

  9. 吴恩达——机器学习 局部加权回归(Loess)

    先介绍参数学习方法和非参数学习方法: 参数学习方法:有固定数目的参数, 比如线性回归和逻辑回归中的 非参数学习方法:参数的数目会随着训练集的大小呈线性增长,比如局部加权回归 局部加权回归(Locall ...

最新文章

  1. android studio 如何让包名展开
  2. 条件、循环、函数定义、字符串操作练习
  3. Android服务之AIDL
  4. Request和Response-学习笔记05【ServletContext对象、文件下载】
  5. Pandas0.25来了,别错过这10大好用的新功能
  6. 获取IP地址和MAC地址
  7. spark中的ALS
  8. tf/idf_Neo4j:带密码的TF / IDF(和变体)
  9. Keras中LSTM的return_sequences和return_state
  10. Objective C的那点小语法
  11. 配置使用VCSA自带的备份恢复工具
  12. 二叉树的创建及各种遍历
  13. ncm转换mp3文件时遇到问题:未找到文件
  14. 做一个微信欢乐斗地主之残局解答器!
  15. 2018年12计算机应用基础统考,2018年12月统考通知
  16. Android 校正系统时间的三种解决方案
  17. Eclipse添加代码自动补全+对齐功能
  18. 打开Beyond Compare报This license key has been revoked:
  19. AutoESL与Xilinx那些人和事
  20. Android仿京东收货地址

热门文章

  1. 傅里叶级数、傅里叶变换、短时傅里叶变换 公式
  2. 小白期货CTP程序化交易开发入门(一)--CTP开发基础
  3. Pinyin4j 详解及使用
  4. 100行python代码实现五子棋-教程
  5. vmstat 命令的用法说明
  6. QGIS噱头笔记--(1)QGIS概要了解
  7. Tensorflow③ Keras的LSTM和TF的LSTM实现的源码剖析
  8. python datetime日期时间去掉 时分秒
  9. Sandy Bridge架构首款赛扬悄然发布
  10. 微巨科技:公众号迁移公证流程及注意事项