人工智能学习5(特征抽取)

编译环境:PyCharm

文章目录

      • 编译环境:PyCharm
  • 特征抽取
    • 无监督特征抽取(之PCA)
      • 代码实现鸢尾花数据集无监督特征抽取
    • 有监督特征抽取(之LDA)
      • 代码实现,生成自己的数据集并进行有监督特征抽取(LDA)
        • 生成自己的数据集
        • PCA降维和LDA降维对比
      • 代码实现LDA降维对鸢尾花数据进行特征抽取

特征抽取

特征选择和特征抽取都减少了数据的维度(降维),但是特征选择是得到原有特征的子集,特征抽取是将原有特征结果函数映射转化为新的特征。
特征抽取分为无监督特征抽取和有监督特征抽取。

无监督特征抽取(之PCA)

无监督没有标签
PCA降维(主成分分析)基本思想:构造一系列原始特征的线性组合形成的线性无关低维特征,以去除数据的相关性,并使降维后的数据最大程度保持原始高维数据的方差信息
去中心化处理:x-x的平均值
去中心化后,样本均值在0
均值:描述样本集合的中心点
标准差:各个样本到均值处的平均距离
标准差可以用来描述数据的散布程度
方差:标准差的平方
标准差和方差只能描述一维数据
协方差是两个变量之间的线性相关程度的度量(协方差为0表示两个变量没有相关性,为正数则正相关)
协方差矩阵可以用来描述多维数据的线性相关性。

在这里插入图片描述
在这里插入图片描述
cov(x,y)=cov(y,x)
var(x)=cov(x,x)
在这里插入图片描述
可以看出协方差矩阵是对称的,对角线为方差。
在这里插入图片描述
同一个向量在不同基底的变换,选择不同的及可以对同样一组数据给出不同的表示。
在这里插入图片描述

要尽可能保留原有信息,要求投影后的值尽可能分散,不重合。

代码实现鸢尾花数据集无监督特征抽取

在sklearn中的datasets中,已经内置了鸢尾花的数据集,直接使用即可

from sklearn import datasets
iris = datasets.load_iris()
print(type(iris))
# 查看属性有哪些
print(dir(iris))
# 打印标签
print(iris.target)
# 获取样本和标签
X=iris.data
print(X.shape)
# 打印前四行
print(X[:4])

对应的打印结果:
在这里插入图片描述

可以看到返回的是一个类。Bunch,用于描述数据集。其属性DESCR是数据描述,target_names是标签名,可自定义默认为文件夹名字,filenames文件夹名,target文件分类可以看成y值,data是数据数组可以看成X。
对数据进行主成分分析

print("------主成分分析PCA-------")
from sklearn.decomposition import PCA
# 实例化
pca=PCA()
X_pca = pca.fit_transform(X)
# 查看X_pca的前四行数据,只看小数点后两位
print(np.round(X_pca[:4], 2))
# 由于没有设置维度,上面只会处理的数据但是没有实现降维
# 通过 explained_variance_ 可以查看各个维度的贡献值
print("explained_variance_查看各个维度的贡献值")
print(pca.explained_variance_)
# 通过 explained_variance_ratio_ 查看各个维度的方差贡献值
print("explained_variance_ratio_查看各个维度的方差贡献值")
print(pca.explained_variance_ratio_)
# 从上面的结果,可以看到保留两个维度,前两个维度较为合理,前两个维度的重要性远高于另外两个
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
print("选择维度后")
print(X_pca[:4])
print("降维后所保留的两个特征的可解释方法比例高达0.98")
print(pca.explained_variance_ratio_.sum())

在这里插入图片描述

有监督特征抽取(之LDA)

LDA(线性判别分析法)
LDA思想:投影后类内方差最小类间方差最大
和PCA一样通过投影的方法达到去除数据间冗余的一种算法。既可以作为降维的方法,也可以作为分类的方法。
PCA会忽略给出的标签,LDA会利用到这些标签。
LDA降维最多可以降到类别数的k-1的维度,PCA没有这个限制
LDA不适合非高斯分布的样本进行降维
LDA有时会产生过拟合的问题

在人脸识别等图像识别领域广泛应用。

线性分类器(速度快):“超平面”将两个样本隔离开
常见线性分类器:LR逻辑回归、贝叶斯分类、线性回归、SVM(线性核)
非线性分类(拟合能力更强):曲面或者多个“超平面”
常见非线性分类器:决策树、GBDT、多层感知机、SVM(高斯核)

代码实现,生成自己的数据集并进行有监督特征抽取(LDA)

生成自己的数据集
# 生成自己的数据集
from sklearn.datasets import make_classification
X,y=make_classification(
    n_samples=1000, # 产生1000个样本
    n_features=4,   # 每个样本有4个列
    n_repeated=0,
    n_classes=3,    # 一共三个标签(3个类别)
    n_clusters_per_class=1,
    class_sep=0.5,
    random_state=10 # 随机值设置为10
)
print(X.shape,y.shape)

在这里插入图片描述

PCA降维和LDA降维对比
# PCA降维
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
pca = PCA(n_components=2) # 设置目标维度为2
X_pca = pca.fit_transform(X)
# 绘制图
plt.scatter(X_pca[:,0],X_pca[:,1],c=y)
plt.show()


# 使用LDA降维
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
# 实例化
lda = LinearDiscriminantAnalysis(n_components=2)
X_lda = lda.fit_transform(X,y)  # LDA是需要数据以及标签的
plt.scatter(X_lda[:,0],X_lda[:,1],c=y)
plt.show()

代码实现LDA降维对鸢尾花数据进行特征抽取

# 使用LDA对鸢尾花数据进行降维
from sklearn import datasets
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
iris = datasets.load_iris()
X_iris,y_iris = iris.data,iris.target
# 实例化LDA
lda = LinearDiscriminantAnalysis(n_components=2)
X_iris_lda = lda.fit_transform(X_iris,y_iris)
print(X_iris_lda[:4])
print(X_iris_lda.shape)
plt.scatter(X_iris_lda[:,0],X_iris_lda[:,1],c=y_iris)
plt.show()

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

UiPath学习笔记

文章目录 前言RPA介绍UiPath下载安装组件内容 前言 最近有一个项目的采集调研涉及到了客户端的采集,就取了解了一下RPA和UIPATH,记录一下 RPA介绍 RPA(Robotic Process Automation:机器人处理自动化),是…

工业机器视觉megauging(向光有光)使用说明书(十三,资源发现bug,已经更新)

megauging(向光有光)旧资源有bug,已经更新,如下: 第一工具,combox默认0,选择后,鼠标点击“获取结果”,相机就取一帧图像处理后显示出来: 第一工具&#xff0…

使用dirmap命令行时报错,提示缺少gevent模块

记得以前是可以的,可能是时间长了重装了系统,引起的。 修复方法。升级pip,然后重新下载安装gevent模块。 具体: python -m pip install --upgrade pip 使用下面命令解决下载慢的问题。 pip config set global.index-url http…

已知数组A[1..n]中元素类型为非负整数,设计算法将其调整为左右两部分,左边所有为奇数,右边所有为偶数,并要求算法的时间复杂度为O(n)

//左边奇数右边偶数 void Swap(int* a, int* b) {int tmp *b;*b *a;*a tmp; } void LeftRight(int arr[],int n) {int i 0;int j n - 1;while(i<j){if (arr[i] % 2 0 && arr[j] % 2 1) {Swap(&arr[i], &arr[j]);i;j--;}else if (arr[i] % 2 1 &…

SmartSoftHelp8,数据库字段详细文档自动生成工具

数据库开发文档自动生成 包括数据库设计详细信息&#xff1a; 数据库字段名称&#xff0c;数据类型&#xff0c;大小&#xff0c;是否主键&#xff0c;说明等 一键自动生成开发需求文档 导出html 格式方便查询 下载地址 https://pan.baidu.com/s/1zBgeYsqWnSlNgiKPR2lUYg…

号称要做人民货币的Spacemesh,有何新兴叙事?

​打开Spacemesh的官网&#xff0c;率先映入眼帘的是一个响亮的口号——On a quest to become the people’s coin&#xff08;致力于成为人民的货币&#xff09;&#xff01;Spacemesh 联合创始人 Tomer Afek 曾表示“Spacemesh 的低准入门槛和激励兼容性&#xff0c;激发了从…

css所有属性介绍

文章目录 1️⃣ CSS属性介绍1.1 CSS3 动画属性&#xff08;Animation&#xff09;1.2 CSS 背景属性&#xff08;Background&#xff09;1.3 CSS 边框属性&#xff08;Border 和 Outline&#xff09;1.4 Box 属性1.5 Color 属性1.6 Content for Paged Media 属性1.7 CSS 尺寸属性…

C语言——深入理解指针(4)

目录 1.回调函数 2. qsort 函数的使用 2.1 排序整型数据 2.2 排序结构体数据 3. qsort 函数的模拟实现 1.回调函数 回调函数就是通过一个函数指针调用的函数。 你把函数的地址作为参数传递给另一个函数&#xff0c;当这个指针被用来调用其所指向的函数时&#xff0c;被调…

服务器基础知识

服务器被誉为互联网之魂。我第一次见到服务器是在学校图书馆&#xff0c;是一种机架式服务器&#xff0c;第二次见到服务器是在公司机房。本期文章是对服务器进行大盘点和梳理&#xff0c;会介绍我拆装服务器过程&#xff0c;从中的学习感悟。 图片来自 Pexels 01 服务器 服务…

7.4 Windows驱动开发:内核运用LoadImage屏蔽驱动

在笔者上一篇文章《内核监视LoadImage映像回调》中LyShark简单介绍了如何通过PsSetLoadImageNotifyRoutine函数注册回调来监视驱动模块的加载&#xff0c;注意我这里用的是监视而不是监控之所以是监视而不是监控那是因为PsSetLoadImageNotifyRoutine无法实现参数控制&#xff0…

[IIS服务]搭建unityWebGl项目服务器(用idea失败了,这次用IIS)

1、确认安装服务 没有安装的&#xff0c;点击安装&#xff0c;安装完成后下一步。 2、配置IIS服务&#xff08;很多小伙伴更新了windows找不到&#xff0c;可以使用cmd运行control admintools打开下图页面&#xff09; 打开管理器之后添加一个网站。 路径选择网站路径&#xf…

【JVM】一篇通关JVM类加载与字节码技术

目录 1. 类文件结构1-1. 魔数 版本 常量池 2. 字节码指令3. 编译期处理4. 类加载阶段5. 类加载器6. 运行期优化 类加载与字节码技术 1. 类文件结构 案例 // HelloWorld 示例 public class HelloWorld {public static void main(String[] args) {System.out.println("h…

策略模式与简单工厂模式:终结if-else混乱,让代码更清爽

阅读建议 嗨&#xff0c;伙计&#xff01;刷到这篇文章咱们就是有缘人&#xff0c;在阅读这篇文章前我有一些建议&#xff1a; 本篇文章大概4500多字&#xff0c;预计阅读时间长需要5分钟。本篇文章的实战性、理论性较强&#xff0c;是一篇质量分数较高的技术干货文章&#x…

探索 Web API:SpeechSynthesis 与文本语言转换技术

一、引言 随着科技的不断发展&#xff0c;人机交互的方式也在不断演变。语音识别和合成技术在人工智能领域中具有重要地位&#xff0c;它们为残障人士和日常生活中的各种场景提供了便利。Web API 是 Web 应用程序接口的一种&#xff0c;允许开发者构建与浏览器和操作系统集成的…

记录 | photoshop移动选区

期望达到的效果&#xff1a; 选择一块区域&#xff0c;并移动它 操作&#xff1a; (1) 选择矩形选框工具&#xff0c; (2) 对区域进行选取&#xff0c; (3) 选择移动工具&#xff0c; (4) 移动选区&#xff0c;效果如下&#xff0c;

哪些AI软件有消除笔?这四款AI软件轻松消除水印

日常生活或工作中&#xff0c;离不开对图片的处理&#xff0c;AI已经对图片视频下手了&#xff0c;处理软件我们不必在用传统的PS来一点点扣了&#xff0c;AI能瞬间消除图片中多余的杂物&#xff0c;大大提高了打工人的工作效率&#xff0c;那么哪些AI软件有消除笔的功能呢&…

System.out.println隐藏字符串

昨天开发的时候遇到一个坑&#xff0c;这个坑几乎浪费了我一整天时间&#xff0c;我甚至现在都不知道其原因。 开发环境 macOS Ventura 13.4 IntelliJ IDEA 2023.1.2 现象 我用java的各种httpclient获取网络上的一个文本文件&#xff0c;获取的文本文件的内容使用System.ou…

软著项目推荐 深度学习手势识别算法实现 - opencv python

文章目录 1 前言2 项目背景3 任务描述4 环境搭配5 项目实现5.1 准备数据5.2 构建网络5.3 开始训练5.4 模型评估 6 识别效果7 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习手势识别算法实现 - opencv python 该项目较为新颖…

分享83个节日PPT,总有一款适合您

分享83个节日PPT&#xff0c;总有一款适合您 83个节日PPT下载链接&#xff1a;https://pan.baidu.com/s/1xX4tVpl3sSW-d2nlFzN-mg?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不易…

《数字图像处理-OpenCV/Python》连载(50)非线性灰度变换

《数字图像处理-OpenCV/Python》连载&#xff08;50&#xff09;非线性灰度变换 本书京东优惠购书链接&#xff1a;https://item.jd.com/14098452.html 本书CSDN独家连载专栏&#xff1a;https://blog.csdn.net/youcans/category_12418787.html 第 7 章 图像的灰度变换 灰度变…
最新文章