高维二分类数据集探索咨询:13特征千余样本的可视化难题
针对13维二分类数据集的探索性可视化方案
嘿,针对你这个1000+样本、13维特征的二分类数据集探索需求,我来分享几个亲测有效的可视化思路,不用一下子盯着所有维度发愁——咱们拆开来、降维来,慢慢挖规律:
1. 单特征-目标变量的关联分析
先逐个摸透每个特征和分类的关系,单维度的图最直观,一眼就能看出两类样本的差异:
- 数值型特征:用箱线图或小提琴图,把每个特征按目标值0/1分组展示。比如你能快速发现“是不是类别1的样本在某特征上的中位数明显高于类别0”。
用Python的seaborn快速实现:import seaborn as sns import matplotlib.pyplot as plt # 假设df是你的数据集,最后一列是目标列'target' for feature in df.columns[:-1]: plt.figure(figsize=(8, 4)) sns.boxplot(x='target', y=feature, data=df) plt.title(f'{feature} 分布与目标类别的关联') plt.show() - 类别型特征(如果有的话):用堆叠柱状图展示每个类别下0/1的占比,直接看类别和分类的对应关系。
2. 双特征组合的可视化
你最初想的“每次选不同特征组合画图表”完全可行!13个特征总共78对组合,1000+样本的话画图速度很快,重点看两类样本在二维空间的聚类趋势:
- 散点图:两个特征作为x/y轴,用颜色区分目标值,能直观看到“是不是某块区域集中了大量类别1的样本”。
- 二维密度图:如果散点太拥挤,用密度图展示两类样本的分布重叠度,更清晰看特征组合的区分度。
示例代码:# 可以手动选重点特征对,或者遍历所有组合 feature_pairs = [('feature_0', 'feature_1'), ('feature_5', 'feature_10')] for feat1, feat2 in feature_pairs: plt.figure(figsize=(8, 6)) sns.scatterplot(x=feat1, y=feat2, hue='target', data=df, alpha=0.7) plt.title(f'{feat1} vs {feat2} 按目标类别分布') plt.show()
3. 降维后全局可视化
既然13维没法直接看,用降维算法把维度降到2/3维,就能全局观察样本的聚类情况:
- PCA(主成分分析):线性降维的首选,能保留数据最大方差的信息,适合看全局分布。
- t-SNE/UMAP:非线性降维,对局部聚类结构捕捉更好,1000+样本计算完全无压力。
PCA实现示例:from sklearn.decomposition import PCA import pandas as pd # 分离特征和目标 X = df.drop('target', axis=1) y = df['target'] # 降维到2维 pca = PCA(n_components=2) X_pca = pca.fit_transform(X) pca_df = pd.DataFrame(X_pca, columns=['主成分1', '主成分2']) pca_df['target'] = y # 可视化 plt.figure(figsize=(8, 6)) sns.scatterplot(x='主成分1', y='主成分2', hue='target', data=pca_df, alpha=0.7) plt.title('PCA二维投影下的数据集分布') plt.show()
4. 特征相关性热力图
用热力图展示所有特征之间、以及特征与目标变量的相关性,快速找出:
- 高度相关的特征(后续可以考虑合并或剔除,避免冗余)
- 和目标变量相关性高的特征(重点关注这些特征的建模潜力)
代码示例:corr_matrix = df.corr() plt.figure(figsize=(12, 10)) sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', fmt='.2f') plt.title('特征相关性热力图') plt.show()
内容的提问来源于stack exchange,提问作者Pierre P.
相关产品推荐
相关产品推荐

