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
猜你喜欢
- 字符串中字符大小写的变换1. str.lower() //小写>>> 'SkatE'
- php屏蔽电话号码中间四位:Method 1:function hidtel($phone){  
- 在写论文时,如果是菜鸟级别,可能不会花太多时间去学latex,直接用word去写,但是这有一个问题,当我们用其他工具画完实验彩 * 时,放到w
- 函数:string.join()Python中有join()和os.path.join()两个函数,具体作用如下:join(): 连接字符串
- 元组的特点:是一种不可变序列,一旦创建就不能修改1、拆包将元组的元素取出赋值给不同变量>>> a = ('hell
- Crawler全名是DomCrawler,是Symfony框架的组件。令人发指的是DomCrawler的没有中文文档,Symfony也没有翻
- ASP使用xmlhttp获取远程网页内容,解决乱码问题方法一:<%function getHTTPPage(url)on error
- 建议用pycharm,使用比较方便,并且可以直接编辑html文件import timelocatime = time.strftime(&q
- python虚拟环境迁移:注意事项:直接将虚拟环境复制到另一台机器,直接执行是会有问题的。那么可以采用以下办法:思路:将机器1虚拟环境下的包
- 1、问题描述某厂生产甲乙两种饮料,每百箱甲饮料需用原料6千克、工人10名,获利10万元;每百箱乙饮料需用原料5千克、工人20名,获利9万元。
- 在操作矩阵的时候,不同的接口对于矩阵的输入维度要求不同,输入可能为1-D,2-D,3-D等等。下面介绍一下使用Numpy进行矩阵维度变更的相
- 注意:由于博文已经很多这方面的内容,这里不介绍安装vscode和anaconda的步骤,只讨论如下情况:已经安装了anaconda,也从官网
- 安装librtmp包需要依赖环境较多,机器上已经安装了python2.7版本,安装librtmp包之前需要先安装依赖环境。1、安装gcc和依
- 首先,FSO是FileSystemObject的简称。当然也就是我们的俗称FSO组件了,该组件可以用来处理驱动器、文件夹以及文件。它可以检测
- 关键路径计算是项目管理中关于进度管理的基本计算。 但是对于绝大多数同学来说, 关键路径计算都只是对一些简单情形的计算。今天,田老师根据以往的
- 普通滑动验证以http://admin.emaotai.cn/login.aspx为例这类验证码只需要我们将滑块拖动指定位置,处理起来比较简
- golang并没有像C语言一样提供三元表达式。三元表达式的好处是可以用一行代码解决原本需要多行代码才能完成的功能,让冗长的代码瞬间变得简洁。
- 本文实例为大家分享了python实现五子棋游戏的具体代码,供大家参考,具体内容如下一、运行截图:二、代码# 用数组定义一个棋盘,棋盘大小为
- 返回页面的类容,weburl为页面urlFunction GetBytes(weburl) '创建
- 功能描述目标完成多账号微信小程序每天自动签到输出签到成功则向微信群发送签到成功的信息否则提示用户签到失败,需手动签到包管理requestsi