首页 > 其他分享 >主成分分析

主成分分析

时间:2024-10-26 21:47:01浏览次数:3  
标签:分析 plt 特征 图表 特征选择 成分 相关性 import

1 特征选择原理

特征选择是机器学习中的一项重要任务,它涉及从原始特征集中选择最相关特征的过程。特征选择的目的是提高模型的性能,减少计算复杂度,并提供更好的可解释性。

2 公式

特征选择有多种方法,包括:

  1. 方差阈值:选择方差大于某个阈值的特征。

  2. 相关系数:选择与目标变量高度相关的特征。

  3. 基于模型的特征选择:使用模型(如随机森林)的特征重要性来选择特征。

3 案例实现

3.1 模块分析

以下是使用Python生成随机森林数据集,进行特征选择,并绘制相关图表的示例:

  1. 生成虚拟数据集:使用 make_classification 函数生成一个包含100个样本和8个特征的分类数据集。

  2. 可视化数据:使用 seaborn 的 pairplot 函数绘制特征对之间的散点图,以可视化数据分布。

  3. 原始特征的相关性热力图:计算特征之间的相关性矩阵,并使用 seaborn 的 heatmap 函数绘制热力图。

  4. 方差过滤:选择方差大于0.15的特征,并使用 seaborn 的 boxplot 函数绘制过滤后数据的箱线图。

  5. 训练随机森林分类器并提取重要特征:使用随机森林模型训练数据,并提取每个特征的重要性。然后,根据重要性对特征进行排序,并使用 matplotlib 绘制条形图。

3.2 完整代码

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_selection import SelectKBest, f_classif
import pandas as pd

# 1. 生成虚拟数据集
X, y = make_classification(n_samples=100, n_features=8, n_informative=3, n_redundant=0, random_state=42)

# 2. 可视化数据
plt.figure(figsize=(10, 6))
sns.pairplot(pd.DataFrame(X, columns=[f'Feature {i+1}' for i in range(8)]))
plt.suptitle('Pairplot of Features')
plt.show()

# 3. 原始特征的相关性热力图
plt.figure(figsize=(10, 8))
correlation_matrix = pd.DataFrame(X, columns=[f'Feature {i+1}' for i in range(8)]).corr()
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm')
plt.title('Correlation Heatmap of Original Features')
plt.show()

# 4. 方差过滤
variance_threshold = 0.15
X_filtered = X[:, np.var(X, axis=0) > variance_threshold]

# 绘制过滤后的数据的箱线图
plt.figure(figsize=(10, 6))
sns.boxplot(data=pd.DataFrame(X_filtered, columns=[f'Feature {i+1}' for i in range(X_filtered.shape[1])]))
plt.title('Boxplot of Filtered Features')
plt.show()

# 5. 训练随机森林分类器并提取重要特征
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X, y)
importances = model.feature_importances_

# 根据重要性对特征排序
indices = np.argsort(importances)[::-1]
plt.figure(figsize=(10, 6))
plt.title('Feature Importances')
plt.bar(range(X.shape[1]), importances[indices], color="r", align="center")
plt.xticks(range(X.shape[1]), [f'Feature {i+1}' for i in indices], rotation=90)
plt.xlim([-1, X.shape[1]])
plt.show()

通过生成随机森林数据集,执行特征选择,并绘制相关图表,使得我们可以直观地观察到特征选择的效果和特征的重要性。

3.3 生成图形分析

  1. 图一:特征对的散点图(Pairplot)

    • 这个图表展示了数据集中所有特征对之间的二维散点图。

    • 通过这个图表,我们可以观察特征之间的相互关系,比如是否存在线性关系或非线性关系。

    • 高度相关的特征将显示出较强的线性趋势,而不相关的特征将显示出随机分布的点。

    • 这个图表有助于我们初步判断特征之间的独立性。

    9359ad49-7bbf-4803-9407-895f3916dd1d.png

  2. 图二:原始特征的相关性热力图

    • 相关性热力图显示了所有特征之间的相关系数,颜色越暖表示相关性越强,颜色越冷表示相关性越弱。

    • 这个图表帮助我们识别哪些特征之间存在强烈的线性关系,从而可能考虑去除冗余特征或进一步探索特征组合。

    • 高相关性可能指示特征冗余,特别是当两个特征高度相关但对模型的贡献有限时。

    6e9e8e81-356e-458a-905d-f45b0d24d334.png

  3. 图三:过滤后特征的箱线图

    • 方差过滤后,这个图表展示了剩余特征的分布情况。

    • 箱线图可以揭示数据的分布、中位数、四分位数和异常值。

    • 通过这个图表,我们可以检查每个特征的数据分布是否稳定,以及是否存在异常值。

    • 过滤掉方差较小的特征有助于去除噪声较大的特征,这些特征可能对模型的训练和预测贡献不大。

    9e43242a-b912-4701-a439-1d047943e0b9.png

  4. 图四:特征重要性条形图

    • 这个图表展示了随机森林模型中每个特征的重要性。

    • 特征重要性是通过模型学习过程中每个特征对预测的贡献度来确定的。

    • 条形图的长度表示特征的重要性,更长的条表示更重要的特征。

    • 这个图表帮助我们理解哪些特征对模型的预测能力贡献最大,哪些特征可以被忽略或进一步研究。

    0190431b-8039-45d3-b175-977f4afa4f8a.png

通过这些图表,我们可以对数据集的特征有一个全面的了解,包括它们之间的关系、分布情况以及对模型预测能力的贡献。这些信息对于特征工程、模型选择和模型优化都是极其宝贵的。

标签:分析,plt,特征,图表,特征选择,成分,相关性,import
From: https://blog.csdn.net/qq_51749909/article/details/143260317

相关文章

  • 题目集1~3总结与分析
    一.前言知识点考查和难度:题目集一第一题设计风扇Fan类考查了Java类的组成部分和具体的组成内容。题目集一第二题巩固了类和对象的使用,和其中的构造方法。题目集一第三题在第二题考查基础上添加了具体的方法。题目集一第四题进一步学习类的使用,做了简单的关联类体现数据的......
  • (2024最新毕设合集)基于Django的房价分析平台-65434|可做计算机毕业设计JAVA、PHP、爬虫
    摘要本论文主要论述了如何基于Django框架开发一个房价分析平台,本系统将严格按照软件开发流程进行各个阶段的工作,通过爬虫技术对贵州省的房价数据进行爬取,面向对象编程思想进行项目开发。在引言中,作者将论述房价分析平台的当前背景以及系统开发的目的,后续章节将严格按照软件......
  • (30-2)基于NLP用户舆情的交易策略:数据分析
    30.3 数据分析在本项目中,数据分析工作通过结合股票市场数据和新闻标题,构建了一个基于情感分析的交易策略。首先,从YahooFinance获取了多只股票的历史收盘价,然后提取了相关的新闻标题和股票代码。接着,通过计算事件收益,分析新闻发布对股票价格的影响,最终将所有数据合并,以便后......
  • 基于ESP32的桌面小屏幕实战[1]:需求分析与方案选型
    项目来源:B站小智学长1.需求分析看时间:可联网同步时间;有屏幕看天气:可联网同步天气;有屏幕记单词:可联网同步单词;有屏幕番茄工作时钟:可以手机设置工作、休息时间;有屏幕获取B站粉丝数:看室内温湿度:有温湿度传感器;有屏幕可放入口袋:1-2寸屏幕;带电池;带外壳;带TP或按键输入2.外......
  • CPU 计算时延分析
     CPU计算时延CPU(中央处理器)是计算机的核心组件,其性能对计算机系统的整体性能有着重要影响。CPU计算时延是指从指令发出到完成整个指令操作所需的时间。理解CPU的计算时延对于优化计算性能和设计高效的计算系统至关重要。1.CPU计算时延的组成CPU计算时延主要由以下几个......
  • 【SQL 性能分析的4种详细贯通方法】Com______;慢查询日志slow_query_log;profile;explain
    SQL性能分析是一个多维度的过程,涉及到对数据库操作的监控、诊断和优化。以下是使用四种方法详细且连贯地描述SQL性能分析的过程:1.Com_xxx计数器分析MySQL提供了Com_xxx状态变量,用于跟踪不同类型的SQL语句被执行的次数。这些计数器可以帮助我们了解数据库的使用模式和负......
  • Prometheus源码专题精讲——监控系统 Prometheus 2.x/3.x 源码阅读和分析
    监控系统Prometheus2.x/3.x源码阅读和分析  自2014年3月左右Prometheus的首个公开版本0.1.0发布以来https://github.com/prometheus/prometheus/tree/0.1.0,距离当前已经11yearsago。 在这期间,Prometheus及其生态系统,如Thanos等,已经在分布式监控领域占据了举足轻重......
  • GESP一级真题分析-202303-选择题1-输入输出设备、存储单位、默认数据类型、标识符命名
    GESP一级真题分析-202303-选择题1-输入输出设备、存储单位、默认数据类型、标识符命名PDF文档公众号回复关键字:202410261相关知识点1)输入输出设备输入设备是外界向计算机传送信息的装置。在微型计算机系统中,最常用的输入设备是键盘和鼠标。此外还有电子光笔、数字化......
  • 基于Vue+NodeJS+express的预约上门维修服务运营与数据分析系统(源码+node+vue+部署文
    收藏关注不迷路!!......
  • java+vue计算机毕设电商平台日志分析系统的设计与实现【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和电子商务行业的蓬勃兴起,电商平台已成为现代商业活动的重要组成部分。这些平台每天产生大量的用户行为数据、交易记录以及......