数学建模入门——描述性统计分析

摘要: 本篇博客主要讲解了数学建模入门的描述性统计分析 ,包括基本统计量的计算数据的分布形态数据可视化相关性分析


往期回顾:

数学建模入门------建模流程-CSDN博客

数学建模入门------数据预处理(全)-CSDN博客


一、基本统计量

基本统计量是描述性统计分析的重要组成部分,它们就像数据的 "标签",能快速让我们了解数据的大致特征

下面以Python展示鸢尾花数据集的基本统计量计算方法:

复制代码
from sklearn.datasets import load_iris
import pandas as pd

# 加载鸢尾花数据集
iris = load_iris()
data = iris.data
target = iris.target
feature_names = iris.feature_names

# 将数据转换为DataFrame
df = pd.DataFrame(data, columns=feature_names)

print(df.max())
print(df.min())
print(df.mean())
print(df.median())
print(df.var())
print(df.std())
print(df.skew())    # 偏度
print(df.kurt())    # 峰度
cv = df.std() / df.mean()
print(cv)           # 变异系数

# 计算基本统计量
print(df.describe())    # 也可以用describe()查看基本统计量

二、分布形态

绘制数据集的分布图可以让我们直观的感受到数据分布特点。

复制代码
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_iris

data = load_iris()          # 得到数据特征
iris_target = data.target   # 得到数据对应的标签
iris_features = pd.DataFrame(data=data.data, columns=data.feature_names)    # 利用Pandas转化为DataFrame格式

# 合并标签和特征信息
iris_all = iris_features.copy()
iris_all['target'] = iris_target

# 在2D情况下不同的特征组合对于不同类别的花的散点分布,以及大概的区分能力。
sns.pairplot(data=iris_all, diag_kind='hist', hue='target')
plt.show()

三、数据可视化

数据可视化在描述性统计分析中具有极其重要的地位,它可以帮助我们快速理解数据分布 :通过图表(如直方图、箱线图等),可以直观地展示数据的集中趋势(均值、中位数等)、离散程度(方差、标准差等)以及分布形态(正态分布、偏态分布等)。揭示变量间关系 :像散点图可以直观地展示两个变量之间的关系,是正相关、负相关还是无明显相关,帮助我们快速发现变量之间的潜在联系。发现数据中的模式和趋势:时间序列数据通过折线图展示,能够清晰地呈现出数据随时间的变化趋势,包括上升、下降、周期性波动等,帮助我们发现数据背后隐藏的规律。

以鸢尾花数据集为例,先导入数据集:

复制代码
import pandas as pd
import seaborn as sns
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt

# 加载鸢尾花数据集
iris = load_iris()
data = iris.data
feature_names = iris.feature_names

# 将数据转换为DataFrame
df = pd.DataFrame(data, columns=feature_names)

直方图:

复制代码
# 绘制直方图
plt.figure(figsize=(12, 8))
for i in range(len(feature_names)):
    plt.subplot(2, 2, i + 1)
    sns.histplot(df[feature_names[i]], kde=True)
    plt.title(feature_names[i])
plt.tight_layout()
plt.show()

箱线图:

复制代码
# 绘制箱线图
plt.figure(figsize=(8, 6))
sns.boxplot(data=df)
plt.title('Iris Dataset Boxplot')
plt.xticks(range(len(feature_names)), feature_names)
plt.show()

散点图矩阵:

复制代码
# 绘制散点图矩阵
sns.pairplot(df)
plt.show()

饼图:

复制代码
# 绘制饼图(以sepal length (cm)为例)
sepal_length_values = df['sepal length (cm)']
value_counts = sepal_length_values.value_counts(normalize=True) * 100
plt.figure(figsize=(6, 6))
plt.pie(value_counts, labels=value_counts.index, autopct='%1.1f%%')
plt.title('Distribution of Sepal Length')
plt.show()

根据数据集的特点还可以其他图,许多数据科学家也会使用R语言来绘制绘制各种形态的可视化图形

桑基图:

山脊图:

瀑布图:

棒棒糖图:

气泡图:

圆弦图:

四、相关性分析

**相关系数是反映两个变量之间线性相关程度的指标。**常用的有两种相关系数计算方法 :

皮尔逊相关系数 (Pearson correlation): 用于衡量两个连续性随机变量间的相关系数;斯皮尔曼相关系数(Spearman correlation) :秩相关系数,根据原始数据的等级排序进行求解,也称为等级变量之间的皮尔逊相关系数

以上两种系数是两个变量之间变化趋势的方向以及程度,取值范围为-1, 1。当接近1时,表示两者具有强烈的正相关性;当接近-1时,表示有强烈的的负相关性;而值接近0,则表示相关性很低。

|-------------|------------|--------------|--------------|--------------|------------|
| 相关程度 | 极强相关 | 强相关 | 中等程度相关 | 弱相关 | 极弱相关或无相关 |
| 相关系数绝对值 | 0.8------1 | 0.6------0.8 | 0.4------0.6 | 0.2------0.4 | 0------0.2 |

分别使用皮尔逊和斯皮尔曼绘制鸢尾花数据集特征间的相关性热力图:

复制代码
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
import pandas as pd

# 加载鸢尾花数据集
iris = load_iris()
data = iris.data
feature_names = iris.feature_names

# 将数据转换为DataFrame
df = pd.DataFrame(data, columns=feature_names)

# 基于皮尔逊相关系数绘制热力图
plt.figure(figsize=(8, 6))
pearson_corr = df.corr(method='pearson')
sns.heatmap(pearson_corr, annot=True, cmap='coolwarm', fmt='.2f')
plt.title('Pearson Correlation Heatmap of Iris Dataset')
plt.show()
复制代码
# 基于斯皮尔曼相关系数绘制热力图
plt.figure(figsize=(8, 6))
spearman_corr = df.corr(method='spearman')
sns.heatmap(spearman_corr, annot=True, cmap='coolwarm', fmt='.2f')
plt.title('Spearman Correlation Heatmap of Iris Dataset')
plt.show()

本篇博客的描述性统计分析就介绍到这里,该专栏会持续更新 数学建模的内容,需要的可以订阅收藏一下,如果本博客对您有所帮助,请留下您的赞赞哦!

有什么问题可以在评论区留言!感谢您的阅读!

相关推荐
imbackneverdie1 小时前
告别 Copilot?Codex 本地化部署指南
人工智能·ai·aigc·数据可视化·本地化·codex
computersciencer3 小时前
事件的六种关系之包含关系
程序人生·数学建模·数据分析·概率论
databook5 小时前
Python 常用统计图表实战指南
python·数据分析·数据可视化
躺柒8 小时前
读数据可视化33生命科学(下)
信息可视化·可视化·数据可视化·医学·临床医学·生命科学
Q26433650231 天前
【有源码】基于 Hadoop 的强化学习智能体轨迹数据挖掘与可视化分析系统大数据毕设项目
大数据·hadoop·机器学习·数据挖掘·spark·课程设计·数据可视化
kaixin_啊啊1 天前
中国研究生数学建模竞赛(华为杯)学习笔记——三维瀑布图绘图代码
笔记·学习·数学建模
敲敲敲敲暴你脑袋1 天前
地图瓦片批量改色来啦!
node.js·gis·数据可视化
kyle~1 天前
图像直方图
计算机视觉·数学建模·机器视觉·数学统计
柳杉1 天前
从调研到闭环,我用 GPT-Image-2.5 和 GPT-6 Astra 把智慧厂房 3D 大屏这条链路走完了
前端·ai编程·数据可视化
stolentime2 天前
洛谷P10515 转圈题解
c++·算法·数学建模·贪心算法