数据分析基础理论与实践(二)

多因子与复合分析

假设检验

用于验证某个假设是否成立,核心就是假设和检验两个部分,可以理解成一种反证法

  1. 建立原假设H0,H0的反命题为H1,也叫做备择假设
  2. 选择检验统计量
  3. 根据显著水平(一般为0.05),确定拒绝域
  4. 计算p值或样本统计值,作出判断

根据选取检验统计量的不同,又分为卡方统计、方差统计等等

相关系数

是衡量两组数据或两组样本一致性程度的因子

  1. 正相关
  2. 负相关
  3. 趋近于0,不相关

线性回归

回归是确定两种或两种以上变量间相互依赖的定量关系的一种统计方法。依赖关系为线性的就是线性回归

主成分分析

PCA,分析出所有维度里主要的成分,及区分度较大的维度,是一种降维的手法

奇异值分解

用于降维算法中的特征分解

复合分析

交叉分析

是在纵向分析法和横向分析法的基础上,从交叉、立体的角度出发,由浅入深、由低级到高级的一种分析方法。常用来分析两个变量之间的关系

例子

  1. 以一个或几个属性为行,另一个或几个属性为列,做成透视表
  2. 用假设检验去检验列与列的差异
import pandas as pd
import numpy as np
import scipy.stats as ss
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_context(font_scale=2)
df = pd.read_csv("newHR.csv")
dp_indices = df.groupby(by="department").indices
# sales_values = df["left"].iloc[dp_indices["sales"]].values
# technical_values = df["left"].iloc[dp_indices["technical"]].values

# t检测 假设检验法 检验各个部门之间离职率的差异 并画出热力图
# dp_keys = list(dp_indices.keys())
# dp_t_mat = np.zeros([len(dp_keys), len(dp_keys)])
# for i in range(len(dp_keys)):
#     for j in range(len(dp_keys)):
#         p_value = ss.ttest_ind(df["left"].iloc[dp_indices[dp_keys[i]]].values, df["left"].iloc[dp_indices[dp_keys[j]]].values)[1]
#         if p_value <= 0.05: # 认为是有显著差异的
#             dp_t_mat[i][j] = -1
#         else:   # 认为没有显著差异
#             dp_t_mat[i][j] = p_value
#
# ax = sns.heatmap(dp_t_mat, xticklabels=dp_keys, yticklabels=dp_keys)
# ax.set_xticklabels(ax.get_xticklabels(), rotation=0)
# ax.figure.set_size_inches(16,6) # 设置图表宽度
# plt.show()

# 透视表
piv_tb = pd.pivot_table(df, values="left", index=["promotion_last_5years", "salary"], columns=["Work_accident"], aggfunc=np.mean)
sns.heatmap(piv_tb, vmin=0, vmax=1, cmap=sns.color_palette("Reds", n_colors=256))
plt.show()

对比分析

常用方法:钻取

钻取是改变维的层次,变换分析的粒度

  1. 向上钻取
    • 已知每个人的分数,再汇总成每个班的平均分,就是向上钻取的过程
  2. 向下钻取
    • 已知每个班的平均分,再详细到每个人的分数,就是向下钻取的过程

连续值的分组

离散值的分组是比较容易的,而连续值分组常常要先离散化

  1. 分隔、拐点
  2. 聚类
  3. 不纯度(Gini)
import pandas as pd
import numpy as np
import scipy.stats as ss
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_context(font_scale=2)
df = pd.read_csv("newHR.csv")

# # 横轴为salary 纵轴为left 以department向下钻取分析
# sns.barplot(x="salary", y="left", hue="department", data=df)
# plt.show()


sl_s = df["satisfaction_level"]
sns.barplot(x=list(range(len(sl_s))), y=sl_s.sort_values())
plt.show()

相关分析

相关分析是研究两个或两个以上处于同等地位的随机变量间的相关关系的统计分析方法

连续值分析

  1. 相关系数计算

离散值分析

  1. 有序离散值、二类离散值可以编码成0 1 2来进行皮尔逊相关系数计算,或者用不纯度计算,但又失真
  2. 用熵来进行相关度计算

在这里插入图片描述

在这里插入图片描述

import pandas as pd
import numpy as np
import scipy.stats as ss
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_context(font_scale=2)
# df = pd.read_csv("newHR.csv")
#
# ax = sns.heatmap(df.corr(), vmin=-1, vmax=1)
# ax.figure.set_size_inches(16,6)
# ax.set_xticklabels(ax.get_xticklabels(), rotation=0)
# plt.show()

s1 = pd.Series(["X1", "X1", "X2", "X2", "X2", "X2"])
s2 = pd.Series(["Y1", "Y1", "Y1", "Y2", "Y2", "Y2"])


def getEntropy(s):
    prt_ary = pd.Series(s).groupby(by=s).count().values / float(len(s))
    return -(np.log2(prt_ary) * prt_ary).sum()

def getCondEntropy(s1, s2):
    '''
    H(s2|s1)
    :param s1:
    :param s2:
    :return:
    '''
    d = dict()
    for i in range(len(s1)):
        d[s1[i]] = d.get(s1[i], []) + [s2[i]]
    return sum([getEntropy(d[k]) * len(d[k]) / float(len(s1)) for k in d])

def getEntropyGain(s1, s2):
    return getEntropy(s1) - getCondEntropy(s2, s1)

def getEntropyGainRatio(s1, s2):
    return getEntropyGain(s1, s2) / getEntropy(s2)

import math
def getDiscreteCorr(s1, s2):
    return getEntropyGain(s1, s2) / math.sqrt(getEntropy(s1) * getEntropy(s2))

print(getEntropy(s1))
print(getEntropy(s2))
print(getCondEntropy(s1, s2))
print(getCondEntropy(s2, s1))
print(getEntropyGain(s1, s2))
print(getDiscreteCorr(s1, s2))

因子分析

探索性因子分析

为了得到影响目标的主要因子

  • 主成分分析

验证性因子分析

是验证一个因子与我们关注的属性之间是否有关联,有什么关联,是否符合预期

  1. 相关分析
  2. 卡方检验
  3. F值
  4. 等等其他方法

例子

用户对产品是否满意?

编号年龄性别学历生活习惯行为习惯
  1. 探索性分析
    1. 进行主成分分析,将全部的因子进行降维
    2. 降维后与满意度进行对比分析
  2. 验证性分析
    1. 验证某个属性与满意度是否有关,得到如相关性、一致性等指标
    2. 主观判断出某个属性可能和满意度有关系,用回归方法去拟合属性与满意度的关联,去应验自己的假设
import pandas as pd
import numpy as np
import scipy.stats as ss
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_context(font_scale=2)
df = pd.read_csv("newHR.csv")
from sklearn.decomposition import PCA

my_pca = PCA(n_components=7)
lower_mat = my_pca.fit_transform(df.drop(labels=["salary", "department", "left"], axis=1))
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=256))
plt.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 《PDF城市交通网络平衡分析——理论实践》是一本介绍城市交通网络平衡分析的书籍。本书主要涵盖了理论实践方面的内容,旨在帮助读者理解城市交通网络的运行原理以及如何利用平衡分析方法进行分析。 首先,本书对城市交通网络的概念和特点进行了详细的介绍。城市交通网络是指由道路、公共交通、步行和自行车等组成的城市交通系统,其中各个元素之间相互关联,共同构成了城市的交通网络。 其次,本书介绍了城市交通网络平衡分析的理论基础。平衡分析是指在特定的交通需求下,交通网络中各个交通模式之间的流量达到一种平衡状态,即供需匹配的状态。通过理论的介绍,读者可以了解到平衡分析的基本原理、假设条件以及求解方法。 接着,本书从实践的角度出发,介绍了城市交通网络平衡分析的应用。通过实例分析,读者可以了解到平衡分析方法在解决城市交通问题上的实际应用,并且可以学习到如何采集交通需求数据、构建交通模型以及如何使用计算机软件进行模拟仿真。 最后,本书还对城市交通网络的未来发展进行了展望。随着城市化进程的不断推进,城市交通网络的规模和复杂度将会继续增加,因此,进一步深入研究交通网络平衡分析的方法和技术将成为未来的研究方向。 总体而言,《PDF城市交通网络平衡分析——理论实践》通过理论实践相结合的方式,全面介绍了城市交通网络平衡分析的内容。这本书对于城市交通规划、交通工程师和相关研究人员来说,将是一本十分有价值的参考书。 ### 回答2: PDF城市交通网络平衡分析——理论实践是一本关于城市交通网络平衡分析的书籍。这本书通过理论实践相结合的方式,系统地介绍了城市交通网络平衡分析的方法和应用。 首先,这本书从理论层面介绍了城市交通网络。它详细讲解了交通网络的基本概念、结构和特征,以及交通流的形成和演化规律。同时,书中还介绍了交通需求预测、交通网络建模等理论基础,这些理论知识对于后续的分析和应用是非常重要的。 其次,这本书还介绍了城市交通网络平衡分析的实践方法。它系统地介绍了城市交通数据的采集和处理方法,包括交通调查、交通流量测量和交通数据分析等。同时,书中还介绍了交通模型的建立和求解技术,以及模拟仿真和评价方法,这些方法对于更准确地分析和评估城市交通网络的平衡性具有重要意义。 此外,这本书还介绍了城市交通网络平衡分析的应用领域和实践案例。它涵盖了城市交通规划、交通管理和交通优化等方面的应用,以及不同城市的实际案例研究。通过这些案例,读者可以更好地理解理论实践的结合,以及交通网络平衡分析在解决实际问题中的作用。 综上所述,PDF城市交通网络平衡分析——理论实践是一本全面介绍城市交通网络平衡分析的书籍。它既讲解了基本的理论知识,又介绍了实践方法和应用案例,对于研究者和从事城市交通规划和管理工作的人员来说,具有很高的参考价值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

b1ackc4t

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值