# -*- coding: utf-8 -*-
"""
Created on Mon Dec 2 14:49:59 2018 @author: zhen
""" import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from datetime import datetime def normal(a): #最大值最小值归一化
return (a - np.min(a)) / (np.max(a) - np.min(a)+0.000001) def normalization(x): # np.std:计算矩阵的标准差(方差的算术平方根)
return (x - np.mean(x)) / np.std(x) def corrcoef(a,b):
corrc = np.corrcoef(a,b) # 计算皮尔逊相关系数,用于度量两个变量之间的相关性,其值介于-1到1之间
corrc = corrc[0,1]
return (16 * ((1 - corrc) / (1 + corrc)) ** 1) # ** 表示乘方 startTimeStamp = datetime.now() # 获取当前时间
# 加载数据
filename = 'C:/Users/zhen/.spyder-py3/sh000300_2017.csv'
# 获取第一,二列的数据
all_date = pd.read_csv(filename,usecols=[0, 1, 3], dtype = 'str')
all_date = np.array(all_date)
data = all_date[:, 0]
times = all_date[:, 1] data_points = pd.read_csv(filename,usecols=[3])
data_points = np.array(data_points)
data_points = data_points[:,0] #数据 topk = 10 #只显示top-10
baselen = 100
basebegin = 361
basedata = data[basebegin]+' '+times[basebegin]+'~'+data[basebegin+baselen-1]+' '+times[basebegin+baselen-1]
base = data_points[basebegin:basebegin+baselen]#一天的数据是240个点
length = len(data_points) #数据长度 # 分割片段
subseries = []
dateseries = []
for j in range(0,length):
if (j < (basebegin - baselen) or j > (basebegin + baselen - 1)) and j <length - baselen:
subseries.append(data_points[j:j+baselen])
dateseries.append(j) #开始位置 # 片段搜索
listdistance = []
for i in range(0, len(subseries)):
tt = np.array(subseries[i])
distance = corrcoef(base, tt)
listdistance.append(distance) # 排序
index = np.argsort(listdistance,kind='quicksort') #排序,返回排序后的索引序列 # 显示,要匹配的数据
plt.figure(0)
plt.plot((base),label = basedata, linewidth='')
plt.legend(loc='upper left')
plt.title('Base data') # 原始数据
plt.figure(1)
num = index[0]
length = len(subseries[num])
begin = data[dateseries[num]]+' '+times[dateseries[num]]
end = data[dateseries[num]+length-1]+' '+times[dateseries[num]+length-1]
label = begin+'~'+end
plt.plot((subseries[num]), label=label, linewidth='')
plt.legend(loc='upper left')
plt.title('Similarity data') # 结果集对比
plt.figure(2)
plt.plot(normalization(base),label= basedata,linewidth='')
length = len(subseries[num])
begin = data[dateseries[num]] + ' ' + times[dateseries[num]]
end = data[dateseries[num] + length - 1] + ' ' + times[dateseries[num] + length - 1]
label = begin + '~' + end
plt.plot(normalization(subseries[num]), label=label, linewidth='')
plt.legend(loc='lower right')
plt.title('normal similarity search')
plt.show() endTimeStamp=datetime.now()
print('run time', (endTimeStamp-startTimeStamp).seconds, "s")

结果:

Python基于皮尔逊系数实现股票预测的更多相关文章

  1. 从欧几里得距离、向量、皮尔逊系数到http://guessthecorrelation.com/

    一.欧几里得距离就是向量的距离公式 二.皮尔逊相关系数反应的就是线性相关 游戏http://guessthecorrelation.com/ 的秘诀也就是判断一组点的拟合线的斜率y/x ------- ...

  2. 皮尔逊相似度计算的例子(R语言)

    编译最近的协同过滤算法皮尔逊相似度计算.下顺便研究R简单使用的语言.概率统计知识. 一.概率论和统计学概念复习 1)期望值(Expected Value) 由于这里每一个数都是等概率的.所以就当做是数 ...

  3. Pearson(皮尔逊)相关系数及MATLAB实现

    转自:http://blog.csdn.net/wsywl/article/details/5727327 由于使用的统计相关系数比较频繁,所以这里就利用几篇文章简单介绍一下这些系数. 相关系数:考察 ...

  4. pandas通过皮尔逊积矩线性相关系数(Pearson's r)计算数据相关性

    皮尔逊积矩线性相关系数(Pearson's r)用于计算两组数组之间是否有线性关联,举个例子: a = pd.Series([1,2,3,4,5,6,7,8,9,10]) b = pd.Series( ...

  5. Pearson(皮尔逊)相关系数

    Pearson(皮尔逊)相关系数:也叫pearson积差相关系数.衡量两个连续变量之间的线性相关程度. 当两个变量都是正态连续变量,而且两者之间呈线性关系时,表现这两个变量之间相关程度用积差相关系数, ...

  6. 皮尔逊(Pearson)系数矩阵——numpy

    一.原理 注意 专有名词.(例如:极高相关) 二.代码 import numpy as np f = open('../file/Pearson.csv', encoding='utf-8') dat ...

  7. np.corrcoef()方法计算数据皮尔逊积矩相关系数(Pearson's r)

    上一篇通过公式自己写了一个计算两组数据的皮尔逊积矩相关系数(Pearson's r)的方法,但np已经提供了一个用于计算皮尔逊积矩相关系数(Pearson's r)的方法 np.corrcoef()  ...

  8. 皮尔逊残差 | Pearson residual

    参考:Pearson Residuals 这些概念到底是写什么?怎么产生的? 统计学功力太弱了!

  9. Spark Mllib里的如何对两组数据用皮尔逊计算相关系数

    不多说,直接上干货! import org.apache.spark.mllib.stat.Statistics 具体,见 Spark Mllib机器学习实战的第4章 Mllib基本数据类型和Mlli ...

随机推荐

  1. Percona Server 升级 5.7 到 8.0 版本

    今天发现 Percona Server 已经发布了 8.0 的版本,于是把服务端的 MYSQL 的版本升级了下:备份好数据,升级按照官方的文档来 $ percona-release enable re ...

  2. mysql 开发进阶篇系列 18 MySQL Server(innodb_buffer_pool_size)

    从这篇开始,讲innodb存储引擎中,对于几个重要的服务器参数配置.这些参数以innodb_xx 开头. 1. innodb_buffer_pool_size的设置 这个参数定义了innodb存储引擎 ...

  3. 初识MongoBD

    一.安装 我使用的系统是Ubuntu16.04,不同版本系统参照官网安装步骤.安装官网4个步骤安装好MongoDB并启动. sudo apt-key adv --keyserver hkp://key ...

  4. Android View 的事件分发原理解析

    作为一名 Android 开发者,每天接触最多的就是 View 了.Android View 虽然不是四大组件,但其并不比四大组件的地位低.而 View 的核心知识点事件分发机制则是不少刚入门同学的拦 ...

  5. Perl:写POD文档

    官方手册:https://perldoc.perl.org/perlpod.html POD文档是perl的man文档,可以用perldoc输出,也可以直接用man输出.在开始下面的文章之前,请先粗略 ...

  6. python对象属性管理(2):property管理属性

    使用Property管理属性 python提供了一种友好的getter.setter.deleter类方法的属性管理工具:property. property()是一个内置函数,它返回一个Proper ...

  7. 南大算法设计与分析课程复习笔记(3)L3 - Recursion

    一.递归方程 按照分治的思想,可以将一个递归的复杂度写成递归方程 一.解递归方程--猜然后证明 该方法又称为代入法,步骤如下: 1.猜解的形式 2.数学归纳法证明正确 例子: 我们假设有如下递归式: ...

  8. anoconda包管理汇总

    anoconda默认的seaborn版本是0.8.1 seaborn的最新版本是0.9.0  并且已经没有0.8.1的文档了. 升级anoconda的seaborn版本 进入anoconda prom ...

  9. sqlserver 操作数据表语句模板

    从网上搜的,一点一点加吧. -----------设置事务全部回滚----------------- SET XACT_ABORT ON BEGIN BEGIN TRY BEGIN TRANSACTI ...

  10. 腾讯云图片鉴黄集成到C#

    官方文档:https://cloud.tencent.com/document/product/641/12422 请求官方API及签名的生成代码如下: var urlList = new List& ...