Q:有个疑问就是,模型本身不是线性的,为什么一定要先用线性模型做?

A:有核函数和泰勒展开等等,可以无限逼近转化成线性?

小知识:

1.Sigmoid函数,即f(x)=1/(1+e-x)。是神经元的非线性作用函数。广泛应用在神经网络中。又叫Logistic函数。

机器学习中一个重要的预测模型逻辑回归(LR)就是基于Sigmoid函数实现的。LR模型的主要任务是给定一些历史的{X,Y},其中X是样本n个特征值,Y的取值是{0,1}代表正例与负例,通过对这些历史样本的学习,从而得到一个数学模型,给定一个新的X,能够预测出Y。LR模型是一个二分类模型,即对于一个X,预测其发生或不发生。但事实上,对于一个事件发生的情况,往往不能得到100%的预测,因此LR可以得到一个事件发生的可能性,超过50%则认为事件发生,低于50%则认为事件不发生。

可参考:https://blog.csdn.net/su_mo/article/details/79281623

http://www.mamicode.com/info-detail-2315826.html

https://www.cnblogs.com/xitingxie/p/9924523.html

2.RBF– 径向基核函数 (Radial Basis Function)

Radical: adj. 放射状的; 辐射状的

Gaussian函数还有另外一个叫法——径向基函数。

就是某种沿径向对称的标量函数。 通常定义为空间中任一点x到某一中心xc之间欧氏距离的单调函数 , 可记作 k(||x-xc||), 其作用往往是局部的 , 即当x远离xc时函数取值很小。

可以参考:https://www.cnblogs.com/hxsyl/p/5231389.html

一、什么是核函数?

我来举一个核函数把低维空间映射到高维空间的例子。下面这张图位于第一、二象限内。我们关注红色的门,以及“北京四合院”这几个字下面的紫色的字母。我们把红色的门上的点看成是“+”数据,紫色字母上的点看成是“-”数据,它们的横、纵坐标是两个特征。显然,在这个二维空间内,“+”“-”两类数据不是线性可分的。

由于我以应用SVM为主,对它的理论并不很了解,就不阐述什么了。

使用SVM的很多人甚至都不知道这个条件,也不关心它;有些不满足该条件的函数也被拿来当核函数用。

作者:王赟 Maigo

链接:https://www.zhihu.com/question/24627666/answer/28440943

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

可参考:https://blog.csdn.net/robin_xu_shuai/article/details/76946333

二、相关实践

1.使用SVR(支持向量回归机)的RBF(高斯核函数)拟合预测股票

(1)成果

拟合效果

(2)实际走势

(3)代码

import os

import numpy as np

import pandas as pd

from scipy import stats

import matplotlib.pyplot as plt

from datetime import datetime as dt

from sklearn import preprocessing

from sklearn.svm import SVC, SVR

import plotly.offline as of

import plotly.graph_objs as go

import tushare as ts

# pip install ciso8601

# pip install stockai

def get_stock_data(stock_num, start):

"""

下载数据

股票数据的特征

date:日期

open:开盘价

high:最高价

close:收盘价

low:最低价

volume:成交量

price_change:价格变动

p_change:涨跌幅

ma5:5日均价

ma10:10日均价

ma20:20日均价

v_ma5:5日均量

v_ma10:10日均量

v_ma20:20日均量

:param stock_num:

:return:df

"""

df = ts.get_hist_data(stock_num, start=start, ktype='D')

return df

def draw_kchart(df, filename):

"""

画k线图

"""

Min_date = df.index.min()

Max_date = df.index.max()

print("First date is", Min_date)

print("Last date is", Max_date)

interval_date = dt.strptime(Max_date, "%Y-%m-%d") - dt.strptime(Min_date, "%Y-%m-%d")

print(interval_date)

trace = go.Ohlc(x=df.index, open=df['open'], high=df['high'], low=df['low'], close=df['close'])

data = [trace]

of.plot(data, filename=filename)

def stock_etl(df):

df.dropna(axis=0, inplace=True)

# print(df.isna().sum())

df.sort_values(by=['date'], inplace=True, ascending=True)

return df

def get_data(df):

data = df.copy()

# 年,月,天

# data['date'] = data.index.str.split('-').str[2]

# data['date'] = data.index.str.replace('-','')

# print(data.index.tolist())

data['date'] = [(dt.strptime(x, '%Y-%m-%d') - dt.strptime('2019-01-01', '%Y-%m-%d')).days for x in data.index.tolist()]

data['date'] = pd.to_numeric(data['date'])

return [data['date'].tolist(), data['close'].tolist()]

def predict_prices(dates, prices, x):

dates = np.reshape(dates, (len(dates), 1))

x = np.reshape(x, (len(x), 1))

svr_lin = SVR(kernel='linear', C=1e3,gamma=0.1, verbose=True, cache_size=1000)

svr_poly = SVR(kernel='poly', C=1e3, degree=2, gamma=0.1, verbose=True, cache_size=1000)

svr_rbf = SVR(kernel='rbf', C=1e3, gamma=0.1, verbose=True, cache_size=1000)

plt.scatter(dates, prices, c='k', label='Data')

# 训练

# svr_lin.fit(dates, prices)

# print(svr_lin)

# print(svr_lin.predict(x)[0])

# plt.plot(dates, svr_lin.predict(dates), c='g', label='svr_lin')

# svr_poly.fit(dates, prices)

# print(svr_poly)

# print(svr_poly.predict(x)[0])

# plt.plot(dates, svr_lin.predict(dates), c='g', label='svr_lin')

svr_rbf.fit(dates, prices)

print(svr_rbf)

print(svr_rbf.predict(x)[0])

plt.plot(dates, svr_rbf.predict(dates), c='b', label='svr_rbf')

plt.xlabel('date')

plt.ylabel('Price')

plt.grid(True)

plt.legend()

plt.show()

# return svr_lin.predict(x)[0], svr_poly.predict(x)[0], svr_rbf.predict(x)[0]

if __name__ == "__main__":

"""

预测股价和时间之间的关系

"""

# sh 获取上证指数k线数据

# sz 获取深圳成指k线数据

# cyb 获取创业板指数k线数据

df = get_stock_data('sh', '2019-01-01')

# + 张家港行

# df = get_stock_data('002839', '2019-01-01')

df = stock_etl(df)

curPath = os.path.abspath(os.path.dirname(__file__))

draw_kchart(df, curPath + '/simple_ohlc.html')

dates, prices = get_data(df)

print(dates)

print(prices)

# print(predict_prices(dates, prices, [31]))

# print(predict_prices(dates, prices, ['20190731']))

a = dt.strptime('2019-07-31', '%Y-%m-%d')

b = dt.strptime('2019-01-01', '%Y-%m-%d')

c = (a - b).days

predict_prices(dates, prices, )

参考:http://www.pythonheidong.com/blog/article/53122/

2.其他

http://www.sohu.com/a/123306028_505915

matlab rbf核函数,四类核函数(Sigmoid+RBF)相关推荐

  1. matlab求解一元四次函数,excel数据函数参数是四个吗|求一个简单的一元四次函数的最大值...

    求四次函数的最值 先求导,令导数等于0,求出x的值,判断单调性,将x代入原函数 4次幂的一元函数怎么计算 解析: (1) 四次方程,有通用求根公式. A 此公式复杂,实际使用较麻烦 B 其推导过程中可 ...

  2. 径向基RBF(radial basis function)函数、RBF神经网络、 反推(back-stepping)控制

    文章目录 1. 什么是径向基函数 1. 高斯径向基函数 2. 反演S型函数 3. 拟多二次函数 2. 正则化径向基神经网络 3. 基于RBF网络逼近的自适应控制 1. 问题描述 2. RBF 网络原理 ...

  3. 基于径向基函数RBF神经网络的非线性函数拟合研究-含Matlab代码

    目录 一.RBF神经网络基本原理 二.模型建立 三.RBF网络拟合结果分析 四.注意事项 五.参考文献 六.Matlab代码获取 一.RBF神经网络基本原理 1988年Broomhead和Lowe将径 ...

  4. rbf核函数_高斯过程回归础(使用GPy和模拟函数数据集)

    为什么要了解高斯过程呢?因为不了解高斯过程就不能聊贝叶斯优化. 假设有这么一个函数: .现在有训练的数据y和一堆X.然后来了一个新的X让你用既有的数据去预测者个新的X所对应的y. 高斯过程(回归)的思 ...

  5. Matlab/Simulink中的S函数模块嵌入人工智能、神经网络算法设计仿真案例详解(以基于RBF神经网络算法的VSG转动惯量自调节为例)

    参考文献 An improved virtual synchronous generator power control strategy  Deep reinforcement learning b ...

  6. 高斯RBF核函数中Sigma取值和SVM分离面的影响

    1:高斯RBF核函数的定义 k(x) = exp(-x^2/(2×sigma)) 在MATLAB中输入一下代码:ezsurf('exp(-x^2/(2*sigma^2))'); 在GOOGLE中输入& ...

  7. 视觉机器学习20讲-MATLAB源码示例(12)-RBF学习算法

    视觉机器学习20讲-MATLAB源码示例(12)-RBF学习算法 1. RBF学习算法 2. Matlab仿真 3. 仿真结果 4. 小结 1. RBF学习算法 RBF(Radial Basis Fu ...

  8. 回归预测 | MATLAB实现DBN-RBF深度置信网络结合RBF神经网络多输入单输出回归预测

    回归预测 | MATLAB实现DBN-RBF深度置信网络结合RBF神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现DBN-RBF深度置信网络结合RBF神经网络多输入单输出回归预测 预 ...

  9. 人工智能与机器学习课程大作业(四、函数优化)

    本文为人工智能与机器学习课程大作业第四部分(四.函数优化) 本文仅作学习参考使用! 其他章节跳转: 一.知识工程基础 二.函数逼近 三.模糊逻辑 四.函数优化 目 录 四.函数优化 4.1 函数可视化 ...

最新文章

  1. 5G将如何推动未来十年智能城市的发展
  2. 实用精美的导航条制作
  3. keepalive的 nopreempt 非抢占
  4. SQL——字段分组合并
  5. eclipse远程连接Hadoop,用户认证失败
  6. ajax 请求调用问题
  7. 哥尼斯堡的“七桥问题” (25 分)【欧拉回路模板题】
  8. 树莓派使用STEP2:设置网络
  9. Asterisk权威指南/第二章 Asterisk架构
  10. CheckBoxList 赋值问题
  11. chromedriver放在哪个目录下_python | Linux各目录及每个目录的详细介绍 - MR_黄Python之路...
  12. 【转】Java多线程编程(十)-并发编程原理(分布式环境中并发问题)
  13. vue自定义下拉菜单,点击下拉其它空白区域,下拉消失
  14. 无法打开网上邻居计算机,win7网上邻居在哪 无法访问怎么办【图文】
  15. Docker 构建统一的前端开发环境
  16. 生活污水处理设备让污水无处躲藏
  17. 实时车辆行人多目标检测与跟踪系统-上篇(UI界面清新版,Python代码)
  18. 不复制项目,idea中同一个项目同时启动多个端口进行访问
  19. PHP文字间距怎么调,在html中怎么设置文字间距
  20. ubuntu下安装杀毒软件Antivir

热门文章

  1. 最小二乘法拟合正弦函数
  2. 微信支付出现这个问题
  3. 职场如何与同事‘过招’?
  4. SQL Server 官方客户端的三种常用工具 SSMS , SQL Server Profiler , Database Enging Tuning Advisor
  5. HTML文件发到群里,怎么将文件分享到百度云群中?百度云群组分享文件的教程
  6. Vue.js 源码分析—— Slots 是如何实现的
  7. c++制作小游戏2048
  8. 太古封魔录2 C++实现WebSocket功能笔记
  9. 【LOJ#570】Misaka Network 与任务
  10. 学习htc文件的相关中文资料