【编码】【特征选择】【降维】

简要介绍

编码(Encoding)

编码是将原始数据转换为模型能够理解和处理的格式的过程。常见的编码方法包括:

  1. 标签编码(Label Encoding)
    • 适用于类别较少的分类数据。
    • 将每个类别映射到一个唯一的整数。
  2. 独热编码(One-Hot Encoding)
    • 适用于类别较多的分类数据。
    • 将每个类别转换为一个二进制向量,其中一个位置为1,其余位置为0。
  3. 目标编码(Target Encoding)
    • 适用于分类特征,将类别映射到目标变量的平均值(或其他统计量)。
    • 可以处理类别不平衡的问题,但需要防止过拟合。
  4. 文本编码
    • 将文本数据转换为数值数据,如词袋模型(Bag of Words)、TF-IDF(词频-逆文档频率)等。
    • 还可以使用词嵌入(如Word2Vec、BERT)进行更复杂的文本表示。

维度处理(Dimensionality Reduction)

维度处理是为了减少数据的特征数量,以便简化模型并提高计算效率。常见的维度处理方法包括:

  1. 特征选择(Feature Selection)
    • 从原始特征集中选择最有用的特征子集。
    • 可以使用统计方法(如卡方检验、相关系数)、模型方法(如基于树的特征重要性)或启发式方法(如递归特征消除)。
  2. 特征提取(Feature Extraction)
    • 通过组合或转换原始特征来创建新的特征。
    • 例如,PCA(主成分分析)和LDA(线性判别分析)等线性代数方法可以用于提取新的特征。
  3. 降维算法
    • 如PCA(主成分分析)和SVD(奇异值分解)等,用于将高维数据投影到低维空间中,同时尽可能保留数据的结构信息。

使用Python的pandas库和scikit-learn库来演示这些过程。

编码示例

标签编码
import pandas as pd
from sklearn.preprocessing import LabelEncoder# 示例数据
data = {'category': ['dog', 'cat', 'bird', 'dog', 'cat']}
df = pd.DataFrame(data)# 标签编码
label_encoder = LabelEncoder()
df['category_encoded'] = label_encoder.fit_transform(df['category'])print(df)

 

独热编码
from sklearn.preprocessing import OneHotEncoder# 独热编码通常用于数值型数据,但这里我们为了演示而直接使用类别标签
# 在实际应用中,你可能需要先对类别标签进行标签编码,然后再进行独热编码
# 或者直接使用pandas的get_dummies方法# 使用pandas的get_dummies进行独热编码
df_one_hot = pd.get_dummies(df, columns=['category'])print(df_one_hot)

 

目标编码

目标编码通常涉及目标变量的信息,因此这里我们需要一个额外的目标变量列。由于目标编码可能导致过拟合,通常只在训练集上进行编码,并在验证集和测试集上使用训练集得到的编码映射。

import numpy as np
import pandas as pd
from category_encoders import TargetEncoder# 示例数据,添加目标变量
data = {'category': ['dog', 'cat', 'bird', 'dog', 'cat'],'target': [1, 0, 1, 1, 0]}
df = pd.DataFrame(data)# 目标编码
target_encoder = TargetEncoder(cols=['category'])
df_target_encoded = target_encoder.fit_transform(df, df['target'])print(df_target_encoded)

注意: category_encoders库是一个第三方库,你需要先安装它(pip install category_encoders)。

 

维度处理示例

特征选择

这里我们使用基于树的特征重要性来选择特征。

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
import numpy as np# 加载数据集
iris = load_iris()
X, y = iris.data, iris.target
feature_names = iris.feature_names# 训练随机森林模型
rf = RandomForestClassifier(n_estimators=100, random_state=42)
rf.fit(X, y)# 获取特征重要性
importances = rf.feature_importances_# 获取特征的重要性排序索引
indices = np.argsort(importances)[::-1]# 打印每个特征的重要性
for i in range(len(feature_names)):print(f'{feature_names[i]}: {importances[i]}')# 选择前两个最重要的特征
top_k = 2  # 选择前两个特征
top_k_indices = indices[:top_k]
selected_features = [feature_names[i] for i in top_k_indices]# 筛选数据
X_selected = X[:, top_k_indices]print(f"选择的特征: {selected_features}")
print(f"X_selected 的形状: {X_selected.shape}")

 

降维算法(PCA)
from sklearn.decomposition import PCA
import pandas as pd
# 使用PCA降维到2维(示例)
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)# 打印降维后的数据形状
print("降维后的数据形状:", X_pca.shape)# 将降维后的结果转换为DataFrame,以便可以使用列名
X_pca_df = pd.DataFrame(X_pca, columns=['PC1', 'PC2'])# 打印降维后的数据及其列名
print(X_pca_df)

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

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

相关文章

大数据之多级缓存方案

多级缓存介绍?多级缓存优缺点,应用场景?多级缓存架构? 多级缓存介绍 多级缓存方案是一种优化手段,通过在多个级别上存储数据来提高应用程序的性能和响应速度。以下是对多级缓存方案的详细解析: 一、多级缓…

HBuilderX运行微信小程序,编译的文件在哪,怎么运行

1. 点击HBuilderX顶部的运行-运行到小程序模拟器-微信开发者工具,就会开始编译 2. 编译完成后的文件在根目录找到 unpackage -- dist -- dev -- mp-weixin, 这里面就是编译后的文件,如果未跳转到开发者工具,那可能是没设置启动路径&#xff0…

Git超详细笔记包含IDEA整合操作

git超详细笔记 文章目录 git超详细笔记第1章Git概述1.1、何为版本控制1.2、为什么需要版本控制1.3、版本控制工具1.4 、Git简史1.5、Git工作机制1.6 、Git和代码托管中心 第2章Git安装第3章Git常用命令3.1、设置用户签名3.2、初始化本地库本地库(Local Repository&a…

人工智能理论之opencv图像预处理、数据库、GUI布局的综合应用(图像预处理版块)

文章目录 前言图像预处理卷积核概念图像平滑处理高斯滤波 双边滤波中值滤波Canny边缘检测图像形态学操作形态学梯度顶帽小结 图片预处理1.引入库 图像预处理错误尝试成功运行 总结 前言 对前面学习综合应用的总结,不单是一个版块,而是三个版块综合到一起…

Nginx(编译)+Lua脚本+Redis 实现自动封禁访问频率过高IP

1.安装lua 1.1安装LuaJIT yum install readline-devel mkdir -p lua-file cd lua-file/ wget https://github.com/LuaJIT/LuaJIT/archive/refs/tags/v2.0.5.tar.gz tar -zxvf LuaJIT-2.0.5.tar.gz cd LuaJIT-2.0.5 make && make install PREFIX/usr/local/luajit 1.2…

【python程序】恢复曾经删除的QQ说说

是否还能想起曾经的QQ说说,是否还想知道自己以前删除了什么 今天就给大家介绍下这个可以恢复以前删除的QQ说说的 小工具 这个工具是由python编写的,也已经打包好了小程序,一键运行 具体下载地址:https://pan.quark.cn/s/b3f41e3…

【统计子矩阵——部分前缀和+双指针】

题目 代码 #include <bits/stdc.h> using namespace std; typedef long long ll; const int N 510; int s[N][N]; int main() {ios::sync_with_stdio(0);cin.tie(0);int n, m, k;cin >> n >> m >> k;for(int i 1; i < n; i)for(int j 1; j <…

Java版——设计模式笔记

Java版——设计模式笔记 设计模式的分类 创建型模式&#xff08;Creational&#xff09;&#xff1a;关注对象的实例化过程&#xff0c;包括了如何实例化对象、隐藏对象的创建细节等。常见的创建型模式有单例模式、工厂模式、抽象工厂模式等。结构型模式&#xff08;Structur…

多语言电商系统的多语言设计机制

在全球化电商市场中&#xff0c;跨语言沟通是提升用户体验和扩大市场份额的关键。为了满足不同语言用户的需求&#xff0c;构建一个支持多语言的电商系统已成为企业扩展国际市场的重要步骤。多语言电商系统需要能够根据用户的语言偏好自动显示内容&#xff0c;同时保证翻译的准…

【Steam登录】protobuf协议逆向 | 续

登录接口&#xff1a; ‘https://api.steampowered.com/IAuthenticationService/BeginAuthSessionViaCredentials/v1’ 精准定位&#xff0c;打上条件断点 this.CreateWebAPIURL(t) ‘https://api.steampowered.com/IAuthenticationService/BeginAuthSessionViaCredentials/v1…

Python | Leetcode Python题解之第556题下一个更大元素III

题目&#xff1a; 题解&#xff1a; class Solution:def nextGreaterElement(self, n: int) -> int:x, cnt n, 1while x > 10 and x // 10 % 10 > x % 10:cnt 1x // 10x // 10if x 0:return -1targetDigit x % 10x2, cnt2 n, 0while x2 % 10 < targetDigit:c…

Python——数列1/2,2/3,3/4,···,n/(n+1)···的一般项为Xn=n/(n+1),当n—>∞时,判断数列{Xn}是否收敛

没注释的源代码 from sympy import * n symbols(n) s n/(n1) print(数列的极限为&#xff1a;,limit(s,n,oo))

Java基础——类和对象的定义链表的创建,输出

目录 什么是类&#xff1f; 什么是对象? 如何创建链表&#xff1f; 尾插法&#xff1a; 头插法&#xff1a; 输出链表的长度 输出链表的值 什么是类&#xff1f; 创建Java程序必须创建一个类class. .java程序需要经过javac指令将文件翻译为.class字节码文件&#xff0c…

python代码打包exe文件(可执行文件)

一、exe打包 1、构建虚拟环境 conda create -n env_name python3.8 #env_name,python根据自己需求修改2、保存和安装项目所需的所有库 pip freeze > requirements.txt3、虚拟环境安装项目包、库 pip install -r requirements.txt4、安装pyinstaller pip install pyinst…

【Linux】冯诺依曼体系结构

目录 一、冯诺依曼体系结构二、冯诺依曼体系结构的基本组成三、关于冯诺依曼体系结构的一些问题结尾 一、冯诺依曼体系结构 冯诺依曼体系结构&#xff0c;也称为普林斯顿结构&#xff0c;是现代计算机设计的基础框架。这一体系结构由数学家冯诺依曼在20世纪40年代提出&#xf…

图像信号处理器(ISP,Image Signal Processor)详解

简介&#xff1a;个人学习分享&#xff0c;如有错误&#xff0c;欢迎批评指正。 图像信号处理器&#xff08;ISP&#xff0c;Image Signal Processor&#xff09; 是专门用于处理图像信号的硬件或处理单元&#xff0c;广泛应用于图像传感器&#xff08;如 CMOS 或 CCD 传感器&a…

英飞凌Aurix2G TC3XX GPT12模块详解

英飞凌Aurix2G TC3XX GPT12模块详解 本文主要介绍英飞凌 Aurix2G TC3XX系列芯片GPT12模块硬件原理、MCAL相关配置和部分代码实现。 文章目录 英飞凌Aurix2G TC3XX GPT12模块详解1 模块介绍2 功能介绍2.1 结构2.2 独立运行模式2.2.1 定时器模式2.2.2 门控定时器模式2.2.3 计数…

Python小白学习教程从入门到入坑------第二十九课 访问模式(语法进阶)

目录 一、访问模式 1.1 r 1.2 w 1.3 1.3.1 r 1.3.2 w 1.3.3 a 1.4 a 一、访问模式 模式可做操作若文件不存在是否覆盖r只能读报错-r可读可写报错是w只能写创建是w可读可写创建是a只能写创建否&#xff0c;追加写a可读可写创建否&#xff0c;追加写 1.1 r r&…

【Linux】Linux入门实操——vim、目录结构、远程登录、重启注销

一、Linux 概述 1. 应用领域 服务器领域 linux在服务器领域是最强的&#xff0c;因为它免费、开源、稳定。 嵌入式领域 它的内核最小可以达到几百KB, 可根据需求对软件剪裁&#xff0c;近些年在嵌入式领域得到了很大的应用。 主要应用&#xff1a;机顶盒、数字电视、网络…

十三:java web(5)-- Spring数据持久层

目录 Spring 数据持久层 1. Spring 与 JDBC 1.1 使用 Spring 管理数据库连接 1.1.2 Apache Commons DBCP 基于配置文件xml 使用 1.1.3 Apache Commons DBCP 基于配置类使用 1.1.4 HikariCP 基于配置文件xml 使用 推荐使用 Spring Boot 默认连接池 1.1.5 HikariCP 基于配置…