python-3.x - 如何绘制分类特征的 Cramer’s V 热图?

标签 python-3.x data-visualization bokeh heatmap categorical-data

分类变量之间的关联应该使用 Crammer's V 来计算。因此,我发现了以下 code来绘制它,但我不知道他为什么将它绘制为“贡献”,这是一个数字变量?

def cramers_corrected_stat(confusion_matrix):
    """ calculate Cramers V statistic for categorical-categorical association.
        uses correction from Bergsma and Wicher, 
        Journal of the Korean Statistical Society 42 (2013): 323-328
    """
    chi2 = ss.chi2_contingency(confusion_matrix)[0]
    n = confusion_matrix.sum().sum()
    phi2 = chi2/n
    r,k = confusion_matrix.shape
    phi2corr = max(0, phi2 - ((k-1)*(r-1))/(n-1))    
    rcorr = r - ((r-1)**2)/(n-1)
    kcorr = k - ((k-1)**2)/(n-1)
    return np.sqrt(phi2corr / min( (kcorr-1), (rcorr-1)))


cols = ["Party", "Vote", "contrib"]
corrM = np.zeros((len(cols),len(cols)))
# there's probably a nice pandas way to do this
for col1, col2 in itertools.combinations(cols, 2):
    idx1, idx2 = cols.index(col1), cols.index(col2)
    corrM[idx1, idx2] = cramers_corrected_stat(pd.crosstab(df[col1], df[col2]))
    corrM[idx2, idx1] = corrM[idx1, idx2]

corr = pd.DataFrame(corrM, index=cols, columns=cols)
fig, ax = plt.subplots(figsize=(7, 6))
ax = sns.heatmap(corr, annot=True, ax=ax); ax.set_title("Cramer V Correlation between Variables");

我还发现了Bokeh 。但是,我不确定它是否使用 Crammer 的 V 来绘制热图?

确实,我有两个分类特征:第一个有 2 个类别,第二个有 37 个类别。您能告诉我如何绘制 Crammer 的 V 热图吗?

我的数据集的某些部分是 here .

提前致谢。

最佳答案

有什么问题吗?代码是绝对正确的。

ax 在这种情况下是变量之间的相关矩阵。 使用“贡献”是不正确的,但您可以在 the article 中看到吼叫 报价

*

"This isn't right to do on the Contribution variable, but we'll do more with a model later."

* 作者仅作为示例展示此变量。 在你的例子中,制作 Crammer's V 情节的原因是什么?你只有两个变量(正如我所见),你只会得到一个相关系数 Crammer's V

但是当然,您可以在数据上重复代码并绘制 Crammer 的 V 热图

关于python-3.x - 如何绘制分类特征的 Cramer’s V 热图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51859894/

相关文章:

binary - 如何在python中对字符串进行二进制编码?

python-3.x - 如何让QWebView显示桌面通知?

Python导入模块导入另一个模块

javascript - d3js : Add quantitative dimension to Hierarchical Edge Bundling

python - 在 map 上放置更多的 folium/leaflet 元素

python-2.7 - 如何在 Bokeh 中的 HoverTool 工具提示中显示与系列关联的图例名称?

python - Bokeh 自定义布局

python - 有没有办法循环索引

flash - 寻找类似 Thinkmap 的引擎

html - Bokeh 服务器加载静态 CSS 样式表