Python之数据分析(numpy线性模型、线性预测、线性拟合)


线性模型分为两种:线性预测和线性拟合,这两种都可以起到预测走势和数据点的作用,当然,预测是存在一定误差的,因此这种预测图像仅供参考。

一、线性预测

1、基本概念
线性预测(a*x=b)

/a b c\        /A\      / d \
|b c d|   X   | B |  =  | e |
\c d e/        \C/      \ f /

2、numpy进行预测的函数

  • numpy.linalg.lstsq(a, b)
    需要预测的就是x

3、价格预测案例

import datetime as dt
import numpy as np
import matplotlib.pylab as mp
import matplotlib.dates as md
import pandas as pd  # 日期计算

def dmy2ymd(dmy):
    dmy = str(dmy, encoding='utf-8')  # 转码dmy日期
    date = dt.datetime.strptime(dmy, '%d-%m-%Y').date()  # 获取时间对象
    ymd = date.strftime('%Y-%m-%d')
    return ymd

dates, closing_prices = np.loadtxt(
    '0=数据源/beer_price.csv', delimiter=',',
    usecols=(0, 4), unpack=True,
    dtype=np.dtype('M8[D], f8'),
    converters={
   
   0: dmy2ymd}
)

'''
收盘价格预测
'''
N = 5  # 最开始是数组是2*N个,
# 初始化预测价格
pred_prices = np.zeros(closing_prices.size - 2*N + 1)  # 2*N是表示无法预测的
# 给预测价格数组填入职
for i in range(pred_prices.size):
    a = np.zeros((N, N))  # 初始化N*N的矩阵
    # a[0, ] = closing_prices[0: 5]  # a的第0行,对应收盘价的0到5个元素
    # a[1, ] = closing_prices[1: 6]
    # a[2, ] = closing_prices[2: 7]
    # 得到a矩阵:用循环表示以上的效果
    for j in range(N):
        a[j, ] = closing_prices[i+j: i+j+N]  # +i表示跟上起点位置

    # 得到b向量
    b = closing_prices[i+N: i+N*2]

    x = np.linalg.lstsq(a, b)[0]  # 第0个值才是解方程的根

    pred_prices[i] = b.dot(x)  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸿蒙Next

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值