数值和标签的相关性分析

调研报告

基于数值的相关性分析

皮尔逊相关系数

用来衡量两个数据集合是否在一条线上面,主要用于衡量线性关系

实现方法

df.corr(method='pearson')

斯皮尔曼相关系数

主要用于解决名称数据和顺序数据相关的问题。适用于两列变量,而且具有等级变量性质具有线性关系的资料。

实现方法

df.corr(method='spearman')

肯德尔相关系数

它也是⼀种秩相关系数,不过它所计算的对象是分类变量。

实现方法

df.corr(method='kendall')

多元线性回归

包括两个或两个以上自变量的回归称为多元线性回归,利用多元线性回归模型可以根据多个因素来预测。

多元线性回归模型可以表示为如下所示的公式。


y=k_{0}+k_{1} x_{1}+k_{2} x_{2}+k_{3} x_{3}+\cdots

其中,x为特征变量(即标签),k为系数,数学上通过最小二乘法和梯度下降法来求解系数。

将输入输出的数值数据首先进行归一化,通过训练得到的系数k,就可以作为相关性系数。例如训练后得到的方程为y=0.07*x1+0.9 * x2+0.16 * x3, 可以认为y与x1的相关性系数为0.07,y与x2的相关性系数为0.9,y与x3的相关性系数为0.16

实现方法

from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(x,y)
print("系数:",model.coef_)
print("常数:",model.intercept_)

其他机器学习模型

几乎所有的机器学习模型都能够直接对数值数据进行预测,并能够得到不同变量的重要性(即相关系数)

基于标签的相关性分析

决策树

决策树模型是通过对一系列问题进行if/else的推导,最终实现相关决策。决策树是一类常见的机器学习方法,基于树结构来进行决策。

一般的,一棵决策树包含一个根结点、若干个内部结点和若干个叶结点。叶结点对应于决策结果,其他每个结点则对应于一个属性测试,每个结点包含的样本集合根据属性测试的结果被划分到子结点中。

离散属性

决策树的划分中,主要利用信息熵和信息增益

信息熵是度量样本集合纯度最常用的一种指标

假定当前样本集合D中第k类样本所占的比例为pk(k=1,2,...),则D的信息熵定义为


\operatorname{Ent}(D)=-\sum_{k=1}^{|\mathcal{Y}|} p_{k} \log _{2} p_{k}

信息熵值越小,纯度越高

再考虑到不同的分支结点包含的样本数不同,给分支结点赋予权重,样本数越多的分支结点的影响越大,可以由此计算出信息增益


\operatorname{Gain}(D, a)=\operatorname{Ent}(D)-\sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|} \operatorname{Ent}\left(D^{v}\right)

信息增益越大,纯度提升越大

离散属性举例:

对于数据集

 

该数据集包含17个训练样例,用以学习一棵能预测是不是好瓜的决策树。

通过计算属性的信息增益以及分支节点的信息熵,可以得到如下的一棵决策树

 

连续属性

由于连续属性的可取值数目不再有限,因此,不能直接根据连续属性的可取值来对结点进行划分,可采用二分法对连续属性进行处理。


T_{a}=\left\{\frac{a^{i}+a^{i+1}}{2} \mid 1 \leqslant i \leqslant n-1\right\}

对信息增益稍加改造
\begin{aligned} \operatorname{Gain}(D, a) &=\max _{t \in T_{a}} \operatorname{Gain}(D, a, t) \\ &=\max _{t \in T_{a}} \operatorname{Ent}(D)-\sum_{\lambda \in\{-,+\}} \frac{\left|D_{t}^{\lambda}\right|}{|D|} \operatorname{Ent}\left(D_{t}^{\lambda}\right), \end{aligned}

可通过同样的计算方式得到决策树

连续属性举例:

对于数据集

 

通过计算属性的信息增益以及分支节点的信息熵,可以得到如下的一棵简单的决策树

 

实现方法

对于连续型的属性,可以直接利用sklearn库快速实现

from sklearn.tree import DecisionTreeRegressor
model=DecisionTreeRegressor()
model.fit(x,y)
model.predict(xx)
# 特征重要性
model.feature_importances_

对于离散型,可根据下面这段伪代码实现

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Matlab中的相关性分析热图可以通过绘制相关系数矩阵来展示重点研究对象之间的差异情况。相关系数矩阵包含了各个变量之间的相关性指标,可以通过热图来直观地显示这些相关性。在Matlab中,你可以通过以下步骤来创建相关性分析热图: 1. 准备数据:首先需要准备相关性分析所需的数据。可以使用随机生成的数据或者导入自己的数据。例如,使用randn函数随机生成一个数据矩阵X,然后计算相关系数矩阵Data。同时,给出各个变量的名称。 2. 创建坐标区域和图窗:创建一个图窗和坐标区域,设置图窗的大小和位置,以及坐标区域的属性。 3. 热图绘制:使用嵌套循环遍历相关系数矩阵Data,并使用fill函数在坐标区域中绘制矩形图形,矩形的颜色根据相关系数值的大小而变化。可以使用sqX和sqY定义矩形的四个顶点的坐标。 4. 调整坐标轴和图像:设置坐标轴的属性,比如隐藏坐标轴标签和刻度线。使用axis函数调整坐标轴范围,使热图填满整个坐标区域。 以下是一个Matlab相关性分析热图的示例代码: ```matlab % 准备数据 X = randn(20, 20); Data = corr(X); % 变量名列表 NameList = compose('Sl-%d', 1:20); % 创建图窗和坐标区域 treeFig = figure('Position', [100, 300, 1000, 600]); ax = axes(treeFig); ax.NextPlot = 'add'; ax.DataAspectRatio = [1, 1, 1]; ax.XColor = 'none'; ax.YColor = 'none'; % 热图绘制 sqX = [-1, 0, 1, 0]; sqY = [0, 1, 0, -1]; for i = 1:size(Data, 1) for j = i:size(Data, 1) fill(ax, sqX + (i-1), sqY - (j-1), Data(i, j), 'EdgeColor', 'none'); end end % 调整坐标轴和图像 axis(ax, 'tight'); ``` 这样,就可以在Matlab中创建一个相关性分析热图,并展示重点研究对象之间的相关性差异情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值