pythonデータ分析に関する分析と因子分析-5回目のメモ


pythonデータ分析に関する分析と因子分析-5回目のメモ
–*関連分析–*ファクタ分析
そうかんぶんせき
*相関分析の意味:現象間に何らかの依存関係があるかどうかを研究し、具体的な依存関係のある現象についてその相関方向と相関程度を検討することは、ランダム変数間の相関関係を研究する統計方法である.著者らは主に情報エントロピーの観点からその相関を調べた.情報エントロピー:情報を測定する指標であり、より正確には情報の不確実性や混乱の程度を測定する指標である.情報の不確実性が大きいほどエントロピーが大きくなる.情報の不確実性や複雑さを決定する主な要因は確率である.決定ツリーで用いられるエントロピーに関する概念は,情報エントロピー,条件エントロピー,相互情報の3つである.プログラミング実装:-*エントロピーを求める-*条件エントロピーを求める-*相互情報(エントロピー利得を求める)-*エントロピー利得率を求める-*相関係数を求める
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のデータ分析の仮定検査-4回目のメモを参考にすることもできます.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()