《统计学简易速速上手小册》第6章:多变量数据分析(2024 最新版)

news2024/11/25 14:32:40

在这里插入图片描述

文章目录

  • 6.1 主成分分析(PCA)
    • 6.1.1 基础知识
    • 6.1.2 主要案例:客户细分
    • 6.1.3 拓展案例 1:面部识别
    • 6.1.4 拓展案例 2:基因数据分析
  • 6.2 聚类分析
    • 6.2.1 基础知识
    • 6.2.2 主要案例:市场细分
    • 6.2.3 拓展案例 1:文档聚类
    • 6.2.4 拓展案例 2:基因表达数据的聚类
  • 6.3 判别分析
    • 6.3.1 基础知识
    • 6.3.2 主要案例:信用评分模型
    • 6.3.3 拓展案例 1:市场细分与目标客户识别
    • 6.3.4 拓展案例 2:疾病诊断

6.1 主成分分析(PCA)

主成分分析(PCA)是一种强大的统计工具,用于数据降维和模式识别。它能帮助我们在减少数据复杂度的同时,保留最重要的信息。

6.1.1 基础知识

  • PCA的目的和原理:PCA的主要目的是识别数据中的模式,并将数据从原始空间转换到一个新的空间,这个新空间的基是数据的主成分。这可以通过寻找数据最大方差的方向并将其作为第一个主成分,然后寻找与第一个主成分正交且方差最大的方向作为第二个主成分,以此类推。
  • PCA的步骤:PCA的步骤包括标准化原始数据、计算协方差矩阵、提取特征值和特征向量、选择主成分、转换到新的空间。
  • 解释主成分:每个主成分都能够解释数据的一部分变异性,第一个主成分解释最大的变异性,每个后续的主成分都解释剩余变异性中最大的部分。

6.1.2 主要案例:客户细分

场景:一家零售公司希望通过客户购买历史数据进行客户细分,以便更好地理解客户群体和优化营销策略。

Python 示例

from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
import pandas as pd

# 假设 df 是包含客户购买历史数据的DataFrame
# 数据标准化
scaler = StandardScaler()
df_scaled = scaler.fit_transform(df)

# 应用PCA
pca = PCA(n_components=2)  # 选择两个主成分
principalComponents = pca.fit_transform(df_scaled)

# 将主成分转换为DataFrame
principalDf = pd.DataFrame(data=principalComponents, columns=['principal component 1', 'principal component 2'])

# 输出解释的方差比
print(pca.explained_variance_ratio_)

6.1.3 拓展案例 1:面部识别

场景:一个安全系统使用面部识别技术来验证个人身份。由于面部图像数据维度很高,使用PCA来降低数据维度,提高识别算法的效率。

Python 示例

# 假设 face_images 是面部图像数据集的变量
# 此处代码省略数据加载步骤

# 应用PCA进行降维
pca = PCA(n_components=150)  # 选择150个主成分
faces_pca = pca.fit_transform(face_images)

# 使用降维后的数据进行面部识别处理
# 此处代码省略面部识别具体实现

6.1.4 拓展案例 2:基因数据分析

场景:生物学家使用PCA来分析和可视化基因表达数据,以探索不同样本之间的相似性和差异性。

Python 示例

# 假设 gene_expression 是基因表达数据的DataFrame
# 数据标准化
scaler = StandardScaler()
gene_expression_scaled = scaler.fit_transform(gene_expression)

# 应用PCA
pca = PCA(n_components=3)  # 选择三个主成分进行分析
gene_pca = pca.fit_transform(gene_expression_scaled)

# 将主成分转换为DataFrame,用于后续分析和可视化
gene_pca_df = pd.DataFrame(data=gene_pca, columns=['PC1', 'PC2', 'PC3'])

# 可视化代码省略

通过这些案例,我们可以看到PCA如何在不同领域内帮助我们简化数据,揭示数据结构和模式。无论是进行客户细分、面部识别还是基因数据分析,PCA都是一种有效的工具,使我们能够在降低数据复杂度的同时,捕捉到最关键的信息。

在这里插入图片描述


6.2 聚类分析

聚类分析是一种探索性数据分析技术,它试图将数据集中的对象分组,使得组内的对象比组间的对象更为相似。这就像是将一堆不同的水果根据颜色、形状或大小分类,以便更好地管理和使用它们。

6.2.1 基础知识

  • 聚类的目的:聚类的主要目的是发现数据内部的自然分组,以揭示数据的结构,为进一步的分析和决策提供依据。
  • 常见的聚类算法
    • K-均值聚类(K-means Clustering):通过将数据点分配到K个簇中,使得每个点与其所属簇的中心(质心)之间的距离之和最小化。
    • 层次聚类(Hierarchical Clustering):通过连续合并或分割簇来构建簇的层次结构。
    • DBSCAN(Density-Based Spatial Clustering of Applications with Noise):基于密度的聚类方法,能够识别噪声数据,对簇的形状和大小没有假设。
  • 聚类分析的应用:聚类分析广泛应用于市场细分、社交网络分析、图像分割、生物信息学等领域。

6.2.2 主要案例:市场细分

场景:一家电子商务公司希望通过聚类分析对其客户进行市场细分,以便实施针对性的营销策略。

Python 示例

from sklearn.cluster import KMeans
import pandas as pd

# 假设 df 是包含客户购买行为数据的DataFrame
# 使用K-均值算法进行聚类
kmeans = KMeans(n_clusters=5)  # 假设我们想将客户分成5个群体
df['cluster'] = kmeans.fit_predict(df[['feature1', 'feature2', 'feature3']])

# 查看聚类结果
print(df.groupby('cluster').mean())

6.2.3 拓展案例 1:文档聚类

场景:一家新闻机构希望自动对成千上万的新闻文章进行分类,以改进文章的组织和推荐。

Python 示例

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.cluster import KMeans

# 假设 documents 包含了需要聚类的文档集合
vectorizer = TfidfVectorizer(stop_words='english')
X = vectorizer.fit_transform(documents)

# 使用K-均值算法进行文档聚类
kmeans = KMeans(n_clusters=10)  # 分成10个类别
kmeans.fit(X)

# 获取聚类结果
clusters = kmeans.labels_

6.2.4 拓展案例 2:基因表达数据的聚类

场景:生物学家希望通过聚类分析来探索在不同条件下表达的基因,以发现功能相关的基因群体。

Python 示例

from sklearn.cluster import AgglomerativeClustering
import numpy as np

# 假设 gene_expression 是基因表达数据的numpy数组
# 使用层次聚类算法
clustering = AgglomerativeClustering(n_clusters=5)
gene_clusters = clustering.fit_predict(gene_expression)

# 分析聚类结果
# 此处可以进一步分析每个簇的基因和它们的功能

通过这些案例,我们可以看到聚类分析在不同领域的广泛应用,从市场细分到文档分类,再到基因表达数据的分析。聚类分析帮助我们发现数据中的隐藏模式和结构,为决策提供科学依据。使用Python进行聚类分析,我们可以轻松处理大量数据,快速得到有意义的结果。

在这里插入图片描述


6.3 判别分析

判别分析是一种监督学习技术,用于模型构建,以预测或分类观测所属的组别。它基于不同类别之间的差异,确定哪些变量对于区分类别是重要的,并创建一个或多个判别函数来预测类别归属。

6.3.1 基础知识

  • 判别分析的基本概念:判别分析通过分析自变量来预测类别变量。它尝试定义不同类别之间的边界,并利用这些边界来确定新观测所属的类别。
  • 线性判别分析(LDA):LDA是判别分析中最常用的方法之一,它寻找能最大化类别间分散度同时最小化类别内分散度的线性组合。LDA特别适用于当自变量是连续量且符合正态分布,各类具有相同协方差矩阵时。
  • 判别分析的应用:判别分析可以应用于信用评分、客户分类、疾病诊断等多个领域,它帮助我们根据已有数据制定分类规则,并应用这些规则到新数据上。

6.3.2 主要案例:信用评分模型

场景:银行希望开发一个信用评分模型,以预测客户是否有违约的风险。

Python 示例

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import pandas as pd

# 加载数据集
data = pd.read_csv('credit_score_data.csv')
X = data.drop('Default', axis=1)  # 自变量
y = data['Default']  # 因变量,违约与否

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 构建LDA模型
lda = LinearDiscriminantAnalysis()
lda.fit(X_train, y_train)

# 在测试集上评估模型
y_pred = lda.predict(X_test)
print("Accuracy:", accuracy_score(y_test, y_pred))

6.3.3 拓展案例 1:市场细分与目标客户识别

场景:一家营销公司希望通过判别分析识别潜在的目标客户群体,以便更有效地定位其营销策略。

Python 示例

# 假设已有包含客户特征和是否为目标客户的标签的数据集
# 此处代码省略数据准备步骤

lda = LinearDiscriminantAnalysis()
lda.fit(customer_features, target_label)

# 使用模型识别新客户是否为目标客户
# 此处代码省略新客户数据的应用步骤

6.3.4 拓展案例 2:疾病诊断

场景:医疗研究人员希望开发一个模型,用于根据患者的各种生理指标来预测其是否患有特定疾病。

Python 示例

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
import pandas as pd

# 假设 disease_data 是包含生理指标和疾病状态的DataFrame
# 此处代码省略数据准备步骤

lda = LinearDiscriminantAnalysis()
lda.fit(disease_data_features, disease_status)

# 使用模型对患者进行诊断
# 此处代码省略诊断应用步骤

通过这些案例,我们可以看

到判别分析在不同场景下的实际应用,从银行的信用评分到营销的目标客户识别,再到医疗领域的疾病诊断。判别分析为我们提供了一种强大的方法,以数据驱动的方式来预测分类,并帮助我们做出更加精准的决策。使用Python进行判别分析,我们可以利用现有的库和工具,快速构建和评估模型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1444653.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring 入门 一

文章目录 Spring简介Spring的优势Spring的体系结构 Spring快速入门Spring程序开发步骤导入Spring开发的基本包坐标编写Dao接口和实现创建Spring核心配置文件在Spring配置文件中配置UserDaoImpl使用Spring的API获得Bean实例 Spring配置文件Bean标签基本配置Bean标签范围配置Bean…

Spring AI - 使用向量数据库实现检索式AI对话

Spring AI - 使用向量数据库实现检索式AI对话 Spring AI 并不仅限于针对大语言模型对话API进行了统一封装,它还可以通过简单的方式实现LangChain的一些功能。本篇将带领读者实现一个简单的检索式AI对话接口。 一、需求背景 在一些场景下,我们想让AI根据…

97.网游逆向分析与插件开发-网络通信封包解析-项目需求与需求拆解

内容参考于:易道云信息技术研究院VIP课 上一个内容:窗口化助手与游戏窗口同步移动 项目需求: 为游戏的聊天功能做一个增强,能够使用户脱离游戏界面的情况下使用窗口化助手进行聊天,能够设置自动回复,记录…

PE 特征码定位修改程序清单 uiAccess

requestedExecutionLevel level"asInvoker" uiAccess"false" 可以修改这一行来启用禁用原程序的盾牌图标,似乎作用不大。以前没事写的一个小玩意,记录一下。 等同于这里的设置: 截图 代码如下: #include …

c语言游戏实战(4):人生重开模拟器

前言: 人生重开模拟器是前段时间非常火的一个小游戏,接下来我们将一起学习使用c语言写一个简易版的人生重开模拟器。 网页版游戏: 人生重开模拟器 (ytecn.com) 1.实现一个简化版的人生重开模拟器 (1) 游戏开始的时…

力扣[面试题 01.02. 判定是否互为字符重排(哈希表,位图)

Problem: 面试题 01.02. 判定是否互为字符重排 文章目录 题目描述思路复杂度Code 题目描述 思路 思路1:哈希表 1.若两个字符串长度不相等,则一定不符合题意; 2.创建一个map集合,先将字符串s1中的每一个字符与其对应的数量存入集合…

【LeetCode每日一题】二维前缀和基本概念与案例

二维前缀和 根据某个块块 的 左上角坐标,和右下角坐标 求出 块块的累加和。 304. 二维区域和检索 - 矩阵不可变 /*** param {number[][]} matrix*/ var NumMatrix function(matrix) {let row matrix.length;let col matrix[0].length;// 初始化一个二维数组&am…

网络层DoS

网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,其目的 是实现两个终端系统之间数据的透明传送,具体功能包括:寻址和路由选择、连 接的建立、保持和终止等。位于网络层的协议包括ARP 、IP和ICMP等。下面就 ICMP为例&…

linux学习之虚拟地址

在以往的学习中我们经常接触地址,电脑像一个小房间,它的空间是有限不可重叠的,但是可以覆盖。想象一下如果我们要放很多东西进去,如果没有合理的安排,所有东西乱放,那么我们需要寻找某一个东西的时候需要把…

【开源】基于JAVA+Vue+SpringBoot的公司货物订单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供应商管理模块2.4 订单管理模块 三、系统展示四、核心代码4.1 查询供应商信息4.2 新增商品信息4.3 查询客户信息4.4 新增订单信息4.5 添加跟进子订单 五、免责说明 一、摘要 1.1 项目…

stack和queue基本使用

stack和queue基本使用 stackqueuepriority_queuestack和queue容器底层的默认容器:deque stack stack是一种容器适配器(容器适配器可以将一种接口转为用户需要的另一种接口,如将vector、list的接口封装转成用户需要的stack的接口)…

Java实现音乐平台 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示 四、核心代码4.1 查询单首音乐4.2 新增音乐4.3 新增音乐订单4.4 查询音乐订单4.5 新增音乐收藏 五、免责说明 一、摘要 1.1 项目介绍 基于微信小程序JAVAVueSpringBootMySQL的音乐平台,包含了音乐…

【Linux系统学习】6.Linux系统软件安装

实战章节:在Linux上部署各类软件 前言 为什么学习各类软件在Linux上的部署 在前面,我们学习了许多的Linux命令和高级技巧,这些知识点比较零散,进行练习虽然可以基础掌握这些命令和技巧的使用,但是并没有一些具体的实…

DP读书:《openEuler操作系统》(九)从IPC到网卡到卡驱动程序

DP读书:《openEuler操作系统》从IPC到网卡到卡驱动程序) 上章回顾_SPI上节回顾_TCP 网卡驱动程序简介1.设备驱动2.总线与设备3.网卡及其抽象 驱动程序的注册与注销1. 注册2. 注销 设备初始化1. 硬件初始化2. 软件初始化 设备的打开与关闭1. 设备的打开2.…

lv14 中断处理原理:接口及按键驱动 14

一、什么是中断 一种硬件上的通知机制,用来通知CPU发生了某种需要立即处理的事件 分为: 内部中断 CPU执行程序的过程中,发生的一些硬件出错、运算出错事件(如分母为0、溢出等等),不可屏蔽 外部中断 外设…

OpenAI---提示词工程的6大原则

OpenAI在官方的文档里上线了Prompt engineering,也就是提示词工程指南,其中OpenAI有提到写提示词的6条大的原则,它们分别是: (1)Write clear instructions(写出清晰的指令) &#xf…

React18原理: 再聊Fiber架构下的时间分片

时间分片 react的任务可以被打断,其实就是基于时间分片的人眼最高能识别的帧数不超过30帧,电影的帧数差不多是在24浏览器的帧率一般来说是60帧,也就是每秒60个画面, 平均一个画面大概是16.5毫秒左右浏览器正常的工作流程是运算渲染&#xff…

DataEase

一. DataEase (一). 说明 安装文档 DataEase 是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。DataEase 支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表,并可以方便的与他人分…

私有化部署一个自己的网盘

效果 安装 1.创建目录 cd /opt mkdir -p kod/{db,site} cd /opt/kod 2.环境文件 vim db.env 内容如下 MYSQL_PASSWORD123456 MYSQL_DATABASEkodbox MYSQL_USERkodbox 3.编写docker-compose.yml vim docker-compose.yml 内容如下 version: 3.5services:db:image: mar…

C#系列-使用 Minio 做图片服务器实现图片上传 和下载(13)

1、Minio 服务器下载和安装 要在本地安装和运行 MinIO 服务器,你可以按照以下 步骤进行操作: 1. 访问 MinIO 的官方网站:https://min.io/,然后 点击页面上的”Download”按钮。 2. 在下载页面上,选择适合你操作系统的 …