Python特征降维知识点总结

说明

1、PCA是最经典、最实用的降维技术,尤其在辅助图形识别中表现突出。

2、用来减少数据集的维度,同时保持数据集中对方差贡献最大的特征。

保持低阶主成分,而忽略高阶成分,低阶成分往往能保留数据的最重要部分。

实例

from sklearn.feature_selection import VarianceThreshold

# 特征选择  VarianceThreshold删除低方差的特征(删除差别不大的特征)
var = VarianceThreshold(threshold=1.0)   # 将方差小于等于1.0的特征删除。 默认threshold=0.0
data = var.fit_transform([[0, 2, 0, 3], [0, 1, 4, 3], [0, 1, 1, 3]])

print(data)
'''
[[0]
 [4]
 [1]]
'''

内容扩展:

python实现拉普拉斯降维

def laplaEigen(dataMat,k,t):
 m,n=shape(dataMat)
 W=mat(zeros([m,m]))
 D=mat(zeros([m,m]))
 for i in range(m):
 k_index=knn(dataMat[i,:],dataMat,k)
 for j in range(k):
  sqDiffVector = dataMat[i,:]-dataMat[k_index[j],:]
  sqDiffVector=array(sqDiffVector)**2
  sqDistances = sqDiffVector.sum()
  W[i,k_index[j]]=math.exp(-sqDistances/t)
  D[i,i]+=W[i,k_index[j]]
 L=D-W
 Dinv=np.linalg.inv(D)
 X=np.dot(D.I,L)
 lamda,f=np.linalg.eig(X)
return lamda,f
def knn(inX, dataSet, k):
 dataSetSize = dataSet.shape[0]
 diffMat = tile(inX, (dataSetSize,1)) - dataSet
 sqDiffMat = array(diffMat)**2
 sqDistances = sqDiffMat.sum(axis=1)
 distances = sqDistances**0.5
 sortedDistIndicies = distances.argsort()
return sortedDistIndicies[0:k]
dataMat, color = make_swiss_roll(n_samples=2000)
lamda,f=laplaEigen(dataMat,11,5.0)
fm,fn =shape(f)
print 'fm,fn:',fm,fn
lamdaIndicies = argsort(lamda)
first=0
second=0
print lamdaIndicies[0], lamdaIndicies[1]
for i in range(fm):
 if lamda[lamdaIndicies[i]].real>1e-5:
 print lamda[lamdaIndicies[i]]
 first=lamdaIndicies[i]
 second=lamdaIndicies[i+1]
 break
print first, second
redEigVects = f[:,lamdaIndicies]
fig=plt.figure('origin')
ax1 = fig.add_subplot(111, projection='3d')
ax1.scatter(dataMat[:, 0], dataMat[:, 1], dataMat[:, 2], c=color,cmap=plt.cm.Spectral)
fig=plt.figure('lowdata')
ax2 = fig.add_subplot(111)
ax2.scatter(f[:,first], f[:,second], c=color, cmap=plt.cm.Spectral)
plt.show() 

到此这篇关于Python特征降维知识点总结的文章就介绍到这了,更多相关Python特征降维如何理解内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python特征降维知识点总结

    说明 1.PCA是最经典.最实用的降维技术,尤其在辅助图形识别中表现突出. 2.用来减少数据集的维度,同时保持数据集中对方差贡献最大的特征. 保持低阶主成分,而忽略高阶成分,低阶成分往往能保留数据的最重要部分. 实例 from sklearn.feature_selection import VarianceThreshold # 特征选择 VarianceThreshold删除低方差的特征(删除差别不大的特征) var = VarianceThreshold(threshold=1.0) #

  • Python PCA降维的两种实现方法

    目录 前言 PCA降维的一般步骤为: 实现PCA降维,一般有两种方法: 总结 前言 PCA降维,一般是用于数据分析和机器学习.它的作用是把一个高维的数据在保留最大信息量的前提下降低到一个低维的空间,从而使我们能够提取数据的主要特征分量,从而得到对数据影响最大的主成分,便于我们对数据进行分析等后续操作. 例如,在机器学习中,当你想跟据一个数据集来进行预测工作时,往往要采用特征构建.不同特征相乘.相加等操作,来扩建特征,所以,当数据处理完毕后,每个样本往往会有很多个特征,但是,如果把所有数据全部喂入

  • python 列表降维的实例讲解

    列表降维(python:3.x) 之前遇到需要使用列表降维的情况, 如: 原列表 : [[12,34],[57,86,1],[43,22,7],[1,[2,3]],6] 转化为 : [12, 34, 57, 86, 1, 43, 22, 7, 1, 2, 3, 6] 思路: 把列表转化为字符串,直接去掉 "[" 和 "]" 最后由字符串转化为列表 a = [[12,34],[57,86,1],[43,22,7],[1,[2,3]],6] #把列表转为字符串 b =

  • 详解Python数据分析--Pandas知识点

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘 1. 重复值的处理 利用drop_duplicates()函数删除数据表中重复多余的记录, 比如删除重复多余的ID. import pandas as pd df = pd.DataFrame({"ID": ["A1000","A1001","A1002", "A1002"], "departmentId":

  • Python模块相关知识点小结

    本文实例讲述了Python模块相关知识点.分享给大家供大家参考,具体如下: 1.模块: 定义:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是以.py结尾的python文件(文件名:test.py,对应的模块名:test). 包:用来从逻辑上组织模块的,本质就是文件夹(目录),必须带有一个__init__.py文件. 导入包的本质就是解释这个包下面的__init__.py文件. 在某个模块下需要导入某一个包下面的内容,需要在包下面的__init__.py文件中修改

  • Python 面向对象部分知识点小结

    本文实例讲述了Python 面向对象部分知识点.分享给大家供大家参考,具体如下: 面向对象: 世间万物,皆可分类.--------------------手机<--------------某一个分类 世间万物,皆为对象.--------------------我的手机<---------有具体指向 只要是对象,就肯定属于某种品类. 只要是对象,就肯定有属性. 类的相同点一起写,不同点分开写. 1.Python类中self的来源: 通常函数的执行方式为: 调用函数-->执行函数----&g

  • 关于Python解包知识点总结

    解包 在英文里叫做 Unpacking,就是将容器里面的元素逐个取出来放在其它地方,好比你父母去菜市场买了一袋苹果回来分别发给家里的每个成员,这个过程就是解包.Python 中的解包是自动完成的,例如: student = ['xiaoqiang','man','22'] name,sex,age = student print(name,sex,age) 结果:xiaoqiang man 22 如果列表中有3个元素,那么刚好可以分配给3个变量.除了列表对象可以解包之外,任何可迭代对象都支持解包

  • python爬虫基础知识点整理

    首先爬虫是什么? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本. 根据我的经验,要学习Python爬虫,我们要学习的共有以下几点: Python基础知识 Python中urllib和urllib2库的用法 Python正则表达式 Python爬虫框架Scrapy Python爬虫更高级的功能 1.Python基础学习 首先,我们要用Python写爬虫,肯定要了解Python的基础吧,万丈高楼平地起,

  • Python爬虫教程知识点总结

    一.为什么使用Python进行网络爬虫? 由于Python语言十分简洁,使用起来又非常简单.易学,通过Python 进行编写就像使用英语进行写作一样.另外Python 在使用中十分方便,并不需要IDE,而仅仅通过sublime text 就能够对大部分的中小应用进行开发:除此之外Python 爬虫的框架功能十分强大,它的框架能够对网络数据进行爬取,还能对结构性的数据进行提取,经常用在数据的挖掘.历史数据的存储和信息的处理等程序内:Python网络的支持库和html的解析器功能十分强大,借助网络的

  • cookies应对python反爬虫知识点详解

    在保持合理的数据采集上,使用python爬虫也并不是一件坏事情,因为在信息的交流上加快了流通的频率.今天小编为大家带来了一个稍微复杂一点的应对反爬虫的方法,那就是我们自己构造cookies.在开始正式的构造之前,我们先进行简单的分析如果不构造cookies爬虫时会出现的一些情况,相信这样更能体会出cookies的作用. 网站需要cookies才能正常返回,但是该网站的cookies过期很快,我总不能用浏览器开发者工具获取cookies,然后让程序跑一会儿,每隔几分钟再手动获取cookies,再让

随机推荐