Python中使用sklearn进行特征降维的方法
作者:疯狂的小强呀 发布时间:2021-09-20 06:23:50
特征降维
0维 标量
1维 向量
2维 矩阵
概念
降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程
注:正是因为在进行训练的时候,我们都是使用特征进行学习,如果特征本身存在问题或者特征之间相关性较强,对于算法学习预测会影响较大
降维的两种方式:
特征选择主成分分析(可以理解为一种特征提取的方式)
特征选择
①定义
数据中包含冗余或相关变量(或称特征、属性、指标等),旨在从原有特征中找出主要特征。
②方法
Filter(过滤式):主要探究特征本身特点、特征与特征和目标值之间关联
方差选择法:低方差特征过滤
相关系数
Embedded(嵌入式):算法自动选择特征(特征与目标值之间的关联)
决策树:信息熵、信息增益
正则化:L1、L2
深度学习:卷积等
③模块
sklearn.feature_selection
过滤式
①低方差特征过滤
删除低方差的一些特征
特征方差小:某个特征很多样本的值比较相近
特征方差大:某个特征很多样本的值都有差别
API
sklearn.feature_selection.VarianceThreshold(threshold=0.0)
-删除所有低方差特征
-Variance.fit_transform(X)
X:numpy array格式的数据[n_samples,n_features]
返回值:训练集差异低于threshold的特征将被删除。默认值是保留所有非零方差特征,即删除所有样本中具有相同值的特征
代码演示
from sklearn.feature_selection import VarianceThreshold
import pandas as pd
def variance_demo():
#1.获取数据
data=pd.read_csv("data.TXT")
print("data:\n", data)
#2.实例化一个转换器类
transfer=VarianceThreshold(threshold=7)
#3.调用fit_transform
result=transfer.fit_transform(data)
print("result:\n", result,result.shape)
return None
②相关系数
皮尔逊相关系数(Pearson Correlation Coefficient)
反映变量之间相关关系密切程度的统计指标
公式
特点
相关系数的值介于-1与+1之间,即-1<=r<=+1,其性质如下:
当r>0时,表示两变量正相关,r<0时,两变量为负相关
当|r|=1时,表示两变量为完全相关,当r=0时,表示两变量间无相关关系
当0<|r|<1时,表示两变量存在一定程度的相关。且|r|越接近1,两变量间线性关系越密切;|r|越接近于0,表示两变量的线性相关越弱
一般可按 * 划分:|r|<0.4为低度相关;0.4<=|r|<0.7为显著性相关;0.7<=|r|<1为高度线性相关
API
from scipy.stats import pearsonr
-x:array
-y:array
-Returns:(Pearson`s correlation coefficient,p-value)
代码演示
from scipy.stats import pearsonr
def p_demo():
# 1.获取数据
data = pd.read_csv("data.TXT")
print("data:\n", data)
# 2.计算两个变量之间的相关系数
r=pearsonr(data["one"],data["two"])
print("相关系数:\n", r)
return None
如果特征与特征之间相关性很高,通过以下方法处理:
①选取其中一个
②加权求和
③主成分分析
③主成分分析
定义
高维数据转化为低维数据的过程,在此过程中可能会舍弃原有数据、创造新的变量
作用
是数据维数压缩,尽可能降低原数据维数(复杂度),损失少量信息
应用
回归分析或者聚类分析当中
API
sklearn.decomposition.PCA(n_components=None)
-将数据分解为较低维数空间
-n_components:
·小数:表示保留百分之多少的信息
·整数:减少到多少特征
-PCA.fit_transform(X)
X:numpy array格式的数据[n_samples,n_features]
-返回值:转换后指定维度的array
使用
from sklearn.decomposition import PCA
def pca_demo():
data=[[2,8,4,5],[6,3,0,8],[5,4,9,1]]
#1.实例化一个转换器类
transfer=PCA(n_components=2)
#2.调用fit_transform
result=transfer.fit_transform(data)
print("result:\n",result)
return None
来源:https://blog.csdn.net/David_house/article/details/128974524


猜你喜欢
- 我们今天就来看一下PHP 7正式版的算法和 wordpress 应用在其上的性能表现。PHP7 的安装,真是非常地向下兼容,下载,解压,把之
- 大家可能有这样的体验,好比在程序里面我明明写了app.run(port=8001),结果程序还是在5000端口输出,我们右键点击py程序,直
- 当我们进行数据分析时,有时候需要对数值型数据进行离散化,将其划分为不同的标签或类别。这样做可以方便我们进行统计和分析,并帮助我们更好地理解数
- 不少同学一提到泰勒公式,脑海里立马浮现高大上的定义和长长的公式,令人望而生畏。实际上,泰勒公式没有那么可怕,它是用简单的多项式来逼近一个光滑
- 一、innodb行锁分类 record lock:记录锁,也就是仅仅锁着单独的一行 gap lock:区间锁,仅仅锁住一个区间(注意这里的区
- 首先祝贺Echarts顺利的从Apache毕业,多了个响亮的名字:Apache ECharts,现在的官网地址在这里:传送门,首页相当的国际
- 浏览器缓存浏览器缓存是浏览器在本地磁盘对用户最近请求过的文档进行存储,当访问者再次访问同一页面时,浏览器就可以直接从本地磁盘加载文档。所以根
- 1.pickle 写: 以写方式打开一个文件描述符,调用pickle.dump把对象写进去 &
- 一、MySQL Workbench的下载Workbench是MySql图形化的管理工具,可以在Workbench里输入MySql的语句,这可
- 一、背景交通大数据是由交通运行管理直接产生的数据(包括各类道路交通、公共交通、对外交通的刷卡、线圈、卡口、GPS、视频、图片等数据)、交通相
- 前言快要过年了,现在是工作的事情也不想干,学习也完全学不进去,关于xlsx的操作原本昨天已经写好了,不过悲催的是,忘记发布了直接关浏览器关闭
- Unittest1.环境Unittest为Python内嵌的测试框架,不需要特殊配置,仅需要在File---settings---Tools
- 安全等于运算符(<=>)这个操作符和=操作符执行相同的比较操作,不过<=>可以用来判断NULL值。在两个操作数均为N
- 背景:在需求开发过程中,有的接口返回的结果中有很多字段需要展示到页面上。通常可以将这些字段在.vue文件中封装为计算属性,或者重新将对应字段
- 前言接着上一篇:AI识别照片是谁,人脸识别face_recognition开源项目安装使用根据项目提供的demo代码,调整了一下功能,自己写
- 浏览器的简单操作# 导入webdriver模块# 创建driver对象,指定Chrome浏览器driver = webdrive
- Case:需要给一个现有的shp数据创建一个字段,并将属性表中原有的一个文本类型的属性转换为整型后填入新创建的字段。Problem:新字段创
- 含义切片是一个种特殊的数组。是对数组的一个连续片段的引用,所以切片是一个引用类型。切片可以是数组中的一部分,也可以是由起始和终止索引标识的一
- 今天来聊一下 Go 如何使用 set,本文将会涉及 set 和 bitset 两种数据结构。Go 的数据结构Go 内置的数据结构并不多。工作
- 這兩天﹐對xml作為數據庫產生了興趣﹐找了一些資料﹐也搞出了一點眉目﹐在這里記錄一下。算是對自己學習x