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

在这里插入图片描述

文章目录

  • 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.mfbz.cn/a/383449.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux--目录结构

目录 一、Linux的目录结构二、常用的目录介绍 一、Linux的目录结构 Linux的目录结构是一个树型结构。 Windos 系统可以拥有多个盘符,如C盘,D盘,E盘。 Linux 木有盘符这个概念,只有一个根目录 /(相当于文件夹)&#xf…

快速幂的应用

1.非递归的解法 #include <iostream> using namespace std; int main(){int a,b,c,t1;cin>>a>>b>>c;if(a>2&&a<1e3&&b>0&&a<1e7&&c>2&&c<1e5)for(int i0;i<b;i)tt*a%c;cout<<t;r…

Keil : Error-Flash Download failed Cortex-M4错误

1.打开魔术棒 2.点击Debug设置 3.查看是否有你使用的板子型号的flash 4.如果没有的话就添加以下

备份还原实际操作

备份还原实际操作 前言 根据达梦文档整理。 一、工具介绍 工具联机/脱机工具应用场景disql联机1️⃣数据库备份2️⃣归档备份3️⃣表空间备份与还原4️⃣表备份与还原dmrman脱机1️⃣数据库备份、还原和恢复2️⃣脱机还原表空间3️⃣归档的备份、还原和修复manager联机对应…

leetcode(矩阵)74. 搜索二维矩阵(C++详细解释)DAY7

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中…

Hadoop-Yarn-ResourceManagerHA

在这里先给屏幕面前的你送上祝福&#xff0c;祝你在未来一年&#xff1a;技术步步高升、薪资节节攀升&#xff0c;身体健健康康&#xff0c;家庭和和美美。 一、介绍 在Hadoop2.4之前&#xff0c;ResourceManager是YARN集群中的单点故障 ResourceManager HA是通过 Active/St…

python+flask+django农产品供销展销电子商务系统lkw43

供销社农产品展销系统的设计与实现&#xff0c;最主要的是满足使用者的使用需求&#xff0c;并且可以向使用者提供一些与系统配套的服务。本篇论文主要从实际出发&#xff0c;采用以对象为设计重点的设计方法&#xff0c;因此在进行系统总体的需求分时借助用例图可以更好的阐述…

备战蓝桥杯---搜索(进阶4)

话不多说&#xff0c;直接看题&#xff1a; 下面是分析&#xff1a; (ab)%c(a%cb%c)%c; (a*b)%c(a%c*b%c)%c; 因此&#xff0c;如果两个长度不一样的值%m为相同值&#xff0c;那就舍弃长的&#xff08;因为再加1位只不过是原来值*10那位值&#xff0c;因此他们得出的%m还是同…

【Effective Objective - C 2.0】——读书笔记(二)

文章目录 前言六、理解“属性”这一概念七、在对象内部尽量直接访问实例变量八、理解“对象等同性”这一概念九、以“类族模式”隐藏实现细节十、在既有类中使用关联对象存放自定义数据十一、理解objc_msgSend的作用十二、理解消息转发机制动态方法解析备援接受者完整的消息转发…

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

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

mac卸载被锁定的app

sudo chflags -hv noschg /Applications/YunShu.app 参考&#xff1a;卸载云枢&#xff08;MacOS 版&#xff09;

Java 学习和实践笔记(6)

各数据类型所占的空间&#xff1a; byte: 1个字节 short&#xff1a;2个字节 int&#xff1a;4个 long&#xff1a;8个 float&#xff1a;4个 double: 8个 char:1个 boolean:1bit 所有引用数据类型都是4个字节&#xff0c;实际其值是指向该数据类型的地址。 上图中稍特…

【iOS】——使用ZXingObjC库实现条形码识别并请求信息

文章目录 前言一、实现步骤二、扫描界面和扫描框的样式1.扫描界面2.扫描框 三、实现步骤 前言 ZXing库是一个专门用来解析多种二维码和条形码&#xff08;包括包括 QR Code、Aztec Code、UPC、EAN、Code 39、Code 128等&#xff09;的开源性质的处理库&#xff0c;而ZingObjC库…

单片机学习笔记---AT24C02(I2C总线)

目录 有关储存器的介绍 存储器的简介 存储器简化模型 AT24C02介绍 AT24C02引脚及应用电路 I2C总线介绍 I2C电路规范 开漏输出模式和弱上拉模式 其中一个设备的内部结构 I2C通信是怎么实现的 I2C时序结构 起始条件和终止条件 发送一个字节 接收一个字节 发送应答…

Failed to construct ‘RTCIceCandidate‘ sdpMid and sdpMLineIndex are both null

最近在搞webrtc&#xff0c;在编写函数处理远端传递来的candidate时报错了&#xff0c;具体信息如下。国内关于webrtc的资料很少&#xff0c;所以去国外社区转了一圈&#xff0c;回来记录一下报错的解决方案 其实这个bug也好解决&#xff0c;根据报错信息可以判断是RTCIceCand…

【数据库】Unlogged 表使用

【数据库】Unlogged 表使用 前言普通表和Unlogged 表的写性能比较普通表创建和数据插入Unlogged 表创建和数据插入比较结果 Unlogged 表崩溃和正常关闭测试Unlogged 表特点总结 前言 大神偶像在开会上提及了Unlogged 表&#xff0c;它的特点很不错&#xff0c;很适合实时数据保…

图(高阶数据结构)

目录 一、图的基本概念 二、图的存储结构 2.1 邻接矩阵 2.2 邻接表 三、图的遍历 3.1 广度优先遍历 3.2 深度优先遍历 四、最小生成树 4.1 Kruskal算法 4.2 Prim算法 五、最短路径 5.1 单源最短路径-Dijkstra算法 5.2 单源最短路径-Bellman-Ford算法 5.3 多源最…

代码随想录算法训练营第四十九天(动态规划篇之01背包)| 474. 一和零, 完全背包理论基础

474. 一和零 题目链接&#xff1a;https://leetcode.cn/problems/ones-and-zeroes/submissions/501607337/ 思路 之前的背包问题中&#xff0c;我们对背包的限制是容量&#xff0c;即每个背包装的物品的重量和不超过给定容量&#xff0c;这道题的限制是0和1的个数&#xff0…

C语言学习记录

小飞机_牛客题霸_牛客网 (nowcoder.com) 飞机翅膀12个*&#xff0c;第一行按5下空格&#xff0c;再按两下*&#xff0c;再按5下空格&#xff0c;最后一行按4下空格&#xff0c;再按一下*&#xff0c;再按两下空格&#xff0c;再按一下*&#xff0c;再按4下空格 数格子就完了&a…

优秀!护理学者用CLHLS数据库发表二区文章 IF=6.6

编者 近日&#xff0c;我们关注到一篇发表在《Journal of Affective Disorders》&#xff08;二区&#xff0c;IF6.6&#xff09;的精彩文章。研究者们利用潜在剖面分析方法&#xff0c;利用中国老年健康影响因素跟踪调查数据&#xff08;CLHLS&#xff09;&#xff0c;深入研究…