首页 > 其他分享 >数学建模入门——描述性统计分析

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

时间:2025-01-06 12:59:32浏览次数:7  
标签:iris 统计分析 plt df 建模 描述性 names import data

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


往期回顾:

数学建模入门——建模流程-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——10.6——0.80.4——0.60.2——0.40——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()

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

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

标签:iris,统计分析,plt,df,建模,描述性,names,import,data
From: https://blog.csdn.net/n04j04h06/article/details/144958817

相关文章

  • 特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
    我们在工作中经常会遇到一个问题,数据基础设施的设计往往没有充分考虑数据科学的需求。数据仓库或数据湖仓中的大量表格(主要是事实表和维度表)缺乏构建高性能机器学习模型所需的关键字段或结构。其中最显著的局限性在于,大多数表格仅记录观测值的当前状态,而未保留历史记录。本文将通......
  • 基于四象限比例积分控制器的直流电机控制系统simulink建模与仿真
    1.课题概述基于四象限比例积分控制器的直流电机控制系统simulink建模与仿真。 2.系统仿真结果  3.核心程序与模型版本:MATLAB2022a    4.系统原理简介      直流电机由于其较好的调速性能和较高的控制精度,被广泛应用于各种工业控制场合。为了实现对......
  • 基于龙格库塔算法的锅炉单相受热管建模与matlab数值仿真
    1.程序功能描述基于龙格库塔算法的锅炉单相受热管建模与matlab数值仿真.于过热气温控制系统过于复杂,涉及多个过热器及减温过程,在本次设计中将模型简化成喷水减温器和末级过热器的组合,对喷水减温器部分和蒸汽受热管部分进行数学建模,在建模过程中按均匀传热考虑,并且将烟气按......
  • 基于爬山法MPPT最大功率跟踪算法的光伏发电系统simulink建模与仿真
    1.课题概述基于爬山法MPPT最大功率跟踪算法的光伏发电系统simulink建模与仿真。 2.系统仿真结果   3.核心程序与模型版本:MATLAB2022a  4.系统原理简介      最大功率点跟踪(MaximumPowerPointTracking,MPPT)是光伏发电系统中至关重要的技术,用于确......
  • 基于EKF扩展卡尔曼滤波的一阶环形倒立摆控制系统simulink建模与仿真
    1.课题概述       基于EKF扩展卡尔曼滤波的一阶环形倒立摆控制系统simulink建模与仿真。基于扩展卡尔曼滤波(ExtendedKalmanFilter,EKF)的一阶环形倒立摆控制系统,是结合了现代控制理论与估计理论的经典应用案例,旨在提高对倒立摆系统状态的实时估计精度,从而实现更稳健的......
  • PaddleTS :一个易用的深度时序建模的Python库
    GitHub-PaddlePaddle/PaddleTS:AwesomeEasy-to-UseDeepTimeSeriesModelingbasedonPaddlePaddle,includingcomprehensivefunctionalitymoduleslikeTSDataset,Analysis,Transform,Models,AutoTS,andEnsemble,etc.,supportingversatiletasksliketim......
  • 基于双PI控制器和三电平SVPWM交流同步直线电机矢量控制系统的simulink建模与仿真
    1.课题概述      基于PSO粒子群优化的PV光伏发电系统simulink建模与仿真。通过PSO粒子群优化进行最大功率跟踪。 2.系统仿真结果 3.核心程序与模型版本:MATLAB2022a  4.系统原理简介      光伏(Photovoltaic,PV)发电系统利用太阳能直接转换成电能,......
  • 基于控制工程的牛鞭效应simulink建模与仿真
    1.程序功能描述牛鞭效应”对供应链性能和绩效产生了严重的影响。基于控制理论建立了多级线性供应链的模型,分别利用噪声带宽和Matlab/Simulink对一个可扩展多主体线性供应链系统的牛鞭效应进行了建模与仿真研究.2.测试软件版本以及运行结果展示MATLAB2022A版本运行 3......
  • 手把手教你学simulink(42.5)--储能系统场景示例:基于simulink仿真建模,搭建一个储能系统:通
    目录基于Simulink的储能系统在电网调峰场景下的具体模型仿真搭建1.项目背景与目标2.模型搭建步骤2.1打开Simulink并创建新模型2.2添加储能单元(BatteryPack)2.3添加功率转换系统(PCS,PowerConversionSystem)2.4添加控制系统(ControlSystem)2.5添加电网模型2.6......
  • CRC卡片分拣法,CRC建模,CRC模型
    crc卡片分拣法,是一种对类之间关系进行建模的简单方法,使设计易于理解。通过从文档里提取类定义的常用方法。卡片分拣的过程可以识别类和了解类定义的内容。我们可以在建立概念模型和详细设计,头脑风暴阶段使用。CRC是类Class,责任responsible,协作collaboration的简称。根据类所要......