ML之MIC:利用有无噪音的正余弦函数理解相关性指标的不同(多图绘制Pearson系数、最大信息系数MIC)

简介: ML之MIC:利用有无噪音的正余弦函数理解相关性指标的不同(多图绘制Pearson系数、最大信息系数MIC)

利用有无噪音的正余弦函数理解相关性指标的不同(多图绘制Pearson系数、最大信息系数MIC)

输出结果

image.png

实现代码

 

#ML之MIC:利用有无噪音的正余弦函数理解相关性指标的不同(多图绘制Pearson系数、最大信息系数MIC)

import numpy as np

import matplotlib.pyplot as plt

from minepy import MINE

def mysubplot(x, y, numRows, numCols, plotNum,

             xlim=(-4, 4), ylim=(-4, 4)):

   r = np.around(np.corrcoef(x, y)[0, 1], 1)

   mine = MINE(alpha=0.6, c=15)

   mine.compute_score(x, y)

   mic = np.around(mine.mic(), 1)

   ax = plt.subplot(numRows, numCols, plotNum,

                    xlim=xlim, ylim=ylim)

   ax.set_title('Pearson r=%.1f\nMIC=%.1f' % (r, mic),fontsize=10)

   ax.set_frame_on(False)

   ax.axes.get_xaxis().set_visible(False)

   ax.axes.get_yaxis().set_visible(False)

   ax.plot(x, y, ',')

   ax.set_xticks([])

   ax.set_yticks([])

   return ax

def rotation(xy, t):

   return np.dot(xy, [[np.cos(t), -np.sin(t)],

                      [np.sin(t), np.cos(t)]])

def mvnormal(n=1000):

   cors = [1.0, 0.8, 0.4, 0.0, -0.4, -0.8, -1.0]

   for i, cor in enumerate(cors):

       cov = [[1, cor],[cor, 1]]

       xy = np.random.multivariate_normal([0, 0], cov, n)

       mysubplot(xy[:, 0], xy[:, 1], 3, 7, i+1)

def rotnormal(n=1000):

   ts = [0, np.pi/12, np.pi/6, np.pi/4, np.pi/2-np.pi/6,

         np.pi/2-np.pi/12, np.pi/2]

   cov = [[1, 1],[1, 1]]

   xy = np.random.multivariate_normal([0, 0], cov, n)

   for i, t in enumerate(ts):

       xy_r = rotation(xy, t)

       mysubplot(xy_r[:, 0], xy_r[:, 1], 3, 7, i+8)

def others(n=1000):

   x = np.random.uniform(-1, 1, n)

   y = 4*(x**2-0.5)**2 + np.random.uniform(-1, 1, n)/3

   mysubplot(x, y, 3, 7, 15, (-1, 1), (-1/3, 1+1/3))

 

   y = np.random.uniform(-1, 1, n)

   xy = np.concatenate((x.reshape(-1, 1), y.reshape(-1, 1)), axis=1)

   xy = rotation(xy, -np.pi/8)

   lim = np.sqrt(2+np.sqrt(2)) / np.sqrt(2)

   mysubplot(xy[:, 0], xy[:, 1], 3, 7, 16, (-lim, lim), (-lim, lim))

   xy = rotation(xy, -np.pi/8)

   lim = np.sqrt(2)

   mysubplot(xy[:, 0], xy[:, 1], 3, 7, 17, (-lim, lim), (-lim, lim))

 

   y = 2*x**2 + np.random.uniform(-1, 1, n)

   mysubplot(x, y, 3, 7, 18, (-1, 1), (-1, 3))

 

   y = (x**2 + np.random.uniform(0, 0.5, n)) * \

       np.array([-1, 1])[np.random.random_integers(0, 1, size=n)]

   mysubplot(x, y, 3, 7, 19, (-1.5, 1.5), (-1.5, 1.5))

   y = np.cos(x * np.pi) + np.random.uniform(0, 1/8, n)

   x = np.sin(x * np.pi) + np.random.uniform(0, 1/8, n)

   mysubplot(x, y, 3, 7, 20, (-1.5, 1.5), (-1.5, 1.5))

   xy1 = np.random.multivariate_normal([3, 3], [[1, 0], [0, 1]], int(n/4))

   xy2 = np.random.multivariate_normal([-3, 3], [[1, 0], [0, 1]], int(n/4))

   xy3 = np.random.multivariate_normal([-3, -3], [[1, 0], [0, 1]], int(n/4))

   xy4 = np.random.multivariate_normal([3, -3], [[1, 0], [0, 1]], int(n/4))

   xy = np.concatenate((xy1, xy2, xy3, xy4), axis=0)

   mysubplot(xy[:, 0], xy[:, 1], 3, 7, 21, (-7, 7), (-7, 7))

plt.figure(facecolor='white')

mvnormal(n=800)

rotnormal(n=200)

others(n=800)

plt.tight_layout()

plt.suptitle('Understand the difference of correlation index (Pearson VS MIC)')

plt.show()


相关文章
|
5月前
|
数据可视化 算法
R语言近似贝叶斯计算MCMC(ABC-MCMC)轨迹图和边缘图可视化
R语言近似贝叶斯计算MCMC(ABC-MCMC)轨迹图和边缘图可视化
|
5月前
|
资源调度 前端开发 数据可视化
R语言GARCH模型对股市sp500收益率bootstrap、滚动估计预测VaR、拟合诊断和蒙特卡罗模拟可视化
R语言GARCH模型对股市sp500收益率bootstrap、滚动估计预测VaR、拟合诊断和蒙特卡罗模拟可视化
|
5月前
|
算法
LabVIEW计算测量路径输出端随机变量的概率分布密度
LabVIEW计算测量路径输出端随机变量的概率分布密度
26 0
|
5月前
|
数据安全/隐私保护 Perl
批量计算地震波PGA/PGV/PGD、PSA/PSV/PSD、特征周期、卓越频率、Arias强度、特征强度、能量密度、Housner强度等30+参数
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
5月前
样条曲线分段线性回归模型piecewise regression估计个股beta值分析收益率数据
样条曲线分段线性回归模型piecewise regression估计个股beta值分析收益率数据
|
5月前
基于R统计软件的三次样条和平滑样条模型数据拟合及预测
基于R统计软件的三次样条和平滑样条模型数据拟合及预测
|
5月前
Stata中的治疗效果:RA:回归调整、 IPW:逆概率加权、 IPWRA、 AIPW
Stata中的治疗效果:RA:回归调整、 IPW:逆概率加权、 IPWRA、 AIPW
|
11月前
|
数据挖掘
19 误差分布曲线的建立 - 高斯导出误差正态分布
19 误差分布曲线的建立 - 高斯导出误差正态分布
48 0
|
机器学习/深度学习 数据可视化 Serverless
RNAseq|Lasso构建预后模型,绘制风险评分的KM 和 ROC曲线
RNAseq|Lasso构建预后模型,绘制风险评分的KM 和 ROC曲线
760 0
|
数据采集 运维 数据可视化
CSI指纹预处理(中值、均值、Hampel、维纳滤波、状态统计滤波器)(一)
CSI指纹预处理(中值、均值、Hampel、维纳滤波、状态统计滤波器)(一)
414 0