python数据分析的相关分析和因子分析-第五次笔记

python数据分析的相关分析和因子分析-第五次笔记


*相关分析
*因子分析


相关分析

*相关分析的含义:是研究现象之间是否存在某种依存关系,并对具体有依存关系的现象探讨其相关方向以及相关程度,是研究随机变量之间的相关关系的一种统计方法。
作者主要从信息熵的角度研究其相关性。
信息熵:是衡量信息的指标,更确切的说是衡量信息的不确定性或混乱程度的指标。信息的不确定性越大,熵越大。决定信息的不确定性或者说复杂程度主要因素是概率。决策树中使用的与熵有关的概念有三个:信息熵,条件熵和互信息。
编程实现:
*求熵
*求条件熵
*求互信息(熵增益)
*求熵增益率
*求相关系数

import pandas as pd
import numpy as np
import scipy.stats as ss
import matplotlib.pyplot as plt
import seaborn as sns
#设置图片的字体  font_scale
sns.set_context(font_scale=1.5)
df=pd.read_csv("./data/HR.csv")
#sns.heatmap(df.corr(),vmin=-1,vmax=1,cmap=sns.color_palette("RdBu",n_colors=128))
#plt.show()
#pandas围绕着 Series 和 DataFrame 两个核心数据结构展开的。
# Series 和 DataFrame 分别对应于一维的序列和二维的表结构。
s1 = pd.Series(["X1","X1","X2","X2","X2","X2"])
s2 = pd.Series(["Y1","Y1","Y1","Y2","Y2","Y2"])
#求熵
def getEntropy(s):
    #sinstance() 函数来判断一个对象是否是一个已知的类型
    if not isinstance(s,pd.core.series.Series):
        s=pd.Series(s)
    prt_ary=pd.groupby(s,by=s).count().values/float(len(s))
    return -(np.log2(prt_ary)*prt_ary).sum()
print("Entropy",getEntropy(s2))
#求条件熵
def getCondEntropy(a1, a2):
    assert (len(a1) == len(a2))
    #一个字典
    d = dict()
    for i in list(range(len(a1))):
        d[a1[i]] = d.get(a1[i], []) + [a2[i]]
    return sum([getEntropy(d[k]) * len(d[k]) / float(len(a1)) for k in d])
print("CondEntropy",getCondEntropy(s2,s1))
#求互信息(熵增益)
def getEntropyGain(s1,s2):
    return getEntropy(s2)-getCondEntropy(s1,s2)
print("EntropyGain",getEntropyGain(s2,s1))
#求熵增益率
def getEntropyGainRatio(s1,s2):
    return getEntropyGain(s1,s2)/getEntropy(s2)
print("EntropyGainRatio",getEntropyGainRatio(s2,s1))
#求相关性
import math
def getDiscreteCorr(s1,s2):
    return getEntropyGain(s1,s2)/math.sqrt(getEntropy(s1)*getEntropy(s2))
print("Discretecorr",getDiscreteCorr(s1,s2))

因子分析

*因子分析的含义:是指研究从变量群中提取共性因子的统计技术。
作者主要讲最实用的主成分分析,判断这几个因子的重要性所占之比,同时绘制相关系数图形。
主成分分析(PCA),还可以参考之前我写的笔记:
python的数据分析之假设检验 -第四次笔记
https://blog.csdn.net/weixin_42878758/article/details/81462243
来进一步学习

#pandas 是基于 Numpy 构建的含有更高级数据结构和工具的数据分析包
import pandas as pd
import numpy as np
import scipy.stats as ss
import matplotlib.pyplot as plt
import seaborn as sns
#设置图片的字体  font_scale
sns.set_context(font_scale=1.5)
df=pd.read_csv("./data/HR.csv")
#主成分分析 工具包
from sklearn.decomposition import PCA
#一共有7个因子
my_pca=PCA(n_components=7)
#去除数据data中的“salary”,"department","left"因子,axis=1 按列删除
lower_mat=my_pca.fit_transform(df.drop(labels=["salary","department","left"],axis=1))
#输出他们7个因子的重要性所占的比例
print("Ratio",my_pca.explained_variance_ratio_)
#绘制相关图像。
sns.heatmap(pd.DataFrame(lower_mat).corr(),vmin=-1,vmax=1,cmap=sns.color_palette("RdBu",n_colors=128))
plt.show()

你可能感兴趣的:(python数据分析,python)