-
高维数据处理
2017-03-13 10:12:51PCA LDA SOM - 取差异性对周围范围的邻居进行更新 MDS LLE 一些总结 ...利用协方差矩阵寻找投射函数ω使得投射到低维空间后的最大离散(方差)\omega...对于N远大于D的数据,使用SVD(奇异值)进行求解 先进行一次自乘PCA
- 非监督
- 利用协方差矩阵寻找投射函数ω使得投射到低维空间后的最大离散(方差)
- 使用拉格朗日解不等式
- 根据求得的特征值进行特征向量的选择
- 一般求信息率90%以上的特征向量集
- 对于N远大于D的数据,使用SVD(奇异值)进行求解
- 先进行一次自乘降维再进行训练
LDA
- 监督性
- 寻求使得类内方差最小并且类间差异性最大的投射空间
SOM
- 聚类方法
- 取差异性对周围范围的邻居进行更新
MDS
- 非监督降维
- 注重数据的相对距离(关系),有利于流型数据的降维和可视化
- 但对原数据整体结构破坏严重
- 三个基本步骤:
- 计算stress
- 更新投射函数
- 检查disparity
ReliefF
- ReliefF处理多分类的情况,Relief只能处理两分类
- 用于对特征进行赋权,通过权值进行过滤
- 算法输入: 数据集D, 包含c类样本,子集采样数m,权值阈值δ, kNN系数k
- 算法步骤:
- initial W(Ai)=0;
- for 1 to m, sample x from D:
- label of x is y
- form dataset H and M, k near-hit (Hj,j=0,1,2...k) and k near-miss(Mj(c),c=0,1,2...C)
- for feature Ai in all features: W(Ai)=W(Ai)−∑Jdiff(A,R,Hj)mk+∑C≠class(R)p(C)1−P(class(R))∑Jdiff(A,R,HJ(c))mkdiff(A,R1,R2)=⎧⎩⎨⎪⎪⎪⎪|R1(A)−R2(A)|max(A)−min(A); if A is continues0; if R1=R2 and A is discrete1; if R1≠R2 and A is discrete
- end for
- end for
- if W(A)≥δ, add to feature set, otherwise filterout
LLE和ISOMAP
一些总结
- 高纬度数据建模的基本思想是寻找函数f(x):
- f(x)将数据投射到一个低维的空间
- 在低维空间中数据的某些特征可以保持
- 方法的选择:
- 注重降低维度并提高数据的可分析性则使用PCA,对于大量数据使用SVD
- 注重类间区分和类内区分,则使用LDA
- 注重数据的相互关联,并且数据复杂不可分,则使用MDS
- 对于流形,使用LLE和IOSMAP
-
高维数据处理论文
2018-05-10 19:15:08高维数据的特征处理,降维方法,聚类研究等方面的文献 -
大数据环境下高维数据处理若干问题
2015-03-17 15:29:09大数据环境下的高维数据处理,博士论文,主要研究高维数据聚类方法等内容 -
Tensor张量:高维数据处理方法
2019-03-29 23:47:34Tensor张量,在数学中实际上是高维数组, 0阶张量:标量 是一个独立的数字; 1阶张量:向量, 2阶张量:矩阵, 3阶张量:数组, n阶张量的定义如下表格: 张量张量案例 2 张量应用 时间序列:3阶向量 尽管...微信公众号:R语言数据分析与实践
1 n阶张量
Tensor张量,在数学中实际上是高维数组,
0阶张量:标量 是一个独立的数字;
1阶张量:向量,
2阶张量:矩阵,
3阶张量:数组,
n阶张量的定义如下表格:
张量 张量案例 2 张量应用
时间序列:3阶向量
尽管有时候时间序列数据看起来像是2阶张量,当你将这些数据的特征以时间为横截面观测时,它们就是3阶张量(包括特征、样本)。
3阶张量 图片数据:4阶张量
单张图片可以看作3阶张量(RGB、高度、宽度),加上样本数,则为4阶张量。
4阶张量 -
异常检测-高维数据的处理
2021-01-19 19:36:26异常检测-高维数据的处理1高维问题的困难2Feature bagging方法2.1feature bagging 原理2.2pyod feature bagging示例孤立森林3.1原理3.2示例: 1高维问题的困难 由于数据维度的上升,数据的样本空间会呈指数级别增长...github地址:链接
异常检测专栏地址:[链接]1.异常检测-pyod包入门
2.异常检测-高维数据处理
3.异常检测-线性检测模型
4.异常检测-基于相似度的方法
5.异常检测-基于统计学的方法1高维问题的困难
- 由于数据维度的上升,数据的样本空间会呈指数级别增长,使得数据变得稀疏
- 维度越高,计算距离的计算量越大,并且由于空间的稀疏性,很多点之间的距离相差都不大
2Feature bagging方法
2.1feature bagging 原理
- 参考:链接
- bagging流程
如图所示,bagging方法通过使用bootstrap抽样方法(随机有放回抽样),随机地从原始数据集中抽取一定比例的样本用来训练基模型,并将基础模型的预测结果,通过一定方法进行汇总,得到最终结果 - feature bagging中抽取的不是样本,而是抽取不同的特征来训练模型,抽取的特征数量在(d/2——d-1)之间,d是特征维度
- **bagging方法可以降低方差 **
1 C为常数, 则
2. 独立随机变量之和的方差等于各变量的方差之和:
3. 如果各模型独立, 根据 (1)
(2) 可知, 整体方差2.2pyod feature bagging示例
import numpy as np from scipy import stats import matplotlib.pyplot as plt import matplotlib.font_manager from sklearn.neighbors import LocalOutlierFactor import seaborn as sns plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus']=False from pyod.utils.data import generate_data,get_outliers_inliers # 生成二维随机数据 X_train, Y_train = generate_data(n_train=200,train_only=True, n_features=15) # 拆分出异常数据和正常数据 x_outliers, x_inliers = get_outliers_inliers(X_train,Y_train) # 绘制生成的数据图 F1 = X_train[:,[0]].reshape(-1,1) F2 = X_train[:,[1]].reshape(-1,1) sns.scatterplot(F1.reshape(-1),F2.reshape(-1),hue=Y_train) plt.xlabel('F1') plt.ylabel('F2') plt.show()
pyod.models.feature_bagging.FeatureBagging( base_estimator=None, n_estimators=10, contamination=0.1, max_features=1.0, bootstrap_features=False, check_detector=True, check_estimator=False, n_jobs=1, random_state=None, combination='average', verbose=0, estimator_params=None)
- 参数
- base_estimator 训练的模型,默认为LOF
- n_estimators 训练模型的数量
- max_features 每次抽取的最大特征数或特征比例
- bootstrap_features 是否又放回
- combination ‘average’ or ‘max’
from pyod.models.feature_bagging import FeatureBagging from pyod.models.lof import LOF from pyod.models.knn import KNN from sklearn.metrics import accuracy_score model1 = LOF() model2 = KNN() dic = {'bagging_LOF':model1,'bagging_KNN':model2} for i,(name,model) in enumerate(dic.items()): clf = FeatureBagging(base_estimator=model,max_features=12,n_estimators = 10) clf.fit(X_train) y_pred = clf.predict(X_train) print(name,'准确率:',accuracy_score(Y_train,y_pred)) ax1 = plt.subplot(1,2,i+1) sns.scatterplot(F1.reshape(-1),F2.reshape(-1),hue=Y_train,ax=ax1) ax1.set_title(name)
bagging_LOF 准确率: 0.945 bagging_KNN 准确率: 1.0
孤立森林
3.1原理
参考:链接
- 原理:
- 孤立森林方法中,异常数据被定义为“ 容易被孤立的离群点”
- 通过随机地对数据集进行划分,最终每个子区域将只包含一个样本点
- 如上图a,b所示,xi点需要划分多次才能独立出来,而x0只需要少次就可以孤立出来,因此x0更有可能是异常点
- 如上图c所示,当设置不同的tree数量时,通过平均路径长度,来判断一个点是异常点的可能性大小
- 特点
- 适用于连续数据的无监督异常检测
- 样本数较多会降低孤立森林孤立异常点的能力
- 计算量较小,适宜于高维数据
3.2示例:
pyod.models.iforest.IForest( n_estimators=100, max_samples='auto', contamination=0.1, max_features=1.0, bootstrap=False, n_jobs=1, behaviour='old', random_state=None, verbose=0)
- 参数
- n_estimators 训练器数量
- max_samples 每个子训练器提取的样本数量
- max_features 每个子训练器提取的特征数量
from pyod.models.iforest import IForest clf = IForest(n_estimators = 50,bootstrap = True) clf.fit(X_train) y_pred = clf.predict(X_train) print('异常检测的准确率:',accuracy_score(Y_train,y_pred))
异常检测的准确率: 1.0
-
python 高维数据_Python数据分析入门|利用NumPy高效处理高维数据
2021-01-26 14:28:52矢量化NumPy数组可以将许多数据处理任务表述为简洁的数组表达式,否则需要编写循环。用数组表达式代替循环的做法,通常被称为矢量化。通常矢量化数组运算要比等价的纯Python方式快上一两个数量级,尤其是各种数值...矢量化
NumPy数组可以将许多数据处理任务表述为简洁的数组表达式,否则需要编写循环。用数组表达式代替循环的做法,通常被称为矢量化。通常矢量化数组运算要比等价的纯Python方式快上一两个数量级,尤其是各种数值计算。
假设我们想要在一组值(网格型)上计算函数sqrt(x^2 + y^2)。np.meshgrid()函数接受两个一维数组,并产生两个二维矩阵,对应于两个数组中所有的(x, y)对。
points = np.arange(-5, 5, 0.01) #1000个间隔相等的点。xs, ys = np.meshgrid(points, points)z = np.sqrt(xs ** 2 + ys ** 2)
将条件逻辑表述为数组运算
- np.where()函数是三元表达式 x if condition else y的矢量化版本。假设我们有一个布尔数组和两个值数组:
- 这有一些问题。第一,它对大数组的处理速度不是很快;第二,无法用于多维数组。若使用np.where(),则可以将该功能写得非常简洁。
- np.where()的第二个和第三个参数不必是数组,也可以是标量值。where()通常用于根据另一个数组产生一个新的数组。
- np.where()可以表述更加复杂的逻辑。
#Pythonresult = []for i in range(n): if cond1[i] and cond2[i]: result.append(0) elif cond1[i]: result.append(1) elif cond2[i]: result.append(2) else: result.append(3)#NumPynp.where(cond1 & cond2, 0, np.where(cond1, 1, np.where(cond2, 2, 3)))#利用布尔值在计算过程中可以被当做0或1处理result = 1 * (con1 - cond2) + 2 * (con2 & -cond1) + 3 * -(cond1 | cond2)
数学和统计方法
用于布尔型数组的方法
- 在使用基本统计方法时,布尔值会被强制转换为1和0,因此sum经常被用来对布尔型数据中的True值计数。
- 另外还有两个方法any()和all(),它们对布尔型数组非常有用。any()用于测试数组中是否存在一个或多个True,而all()则检查数组中所有制是否都是True,两个方法均返回布尔值结果。这两个方法也可用于非布尔型数组,所有非0元素均会被当作True。
排序
- 与Python内置的列表类型一样,NumPy数组也可以通过sort方法就地排序(会对原数组进行操作)。
- 多维数组可以在任何一个轴向上进行排序,只需将轴编号传给sort即可。
- 顶级方法np.sort()返回的是数组的已排序副本,而就地排序则会修改数组本身。计算数组分位数最简单的方法是对其进行排序,然后取特定位置的值:
唯一化以及其他的集合逻辑。
- NumPy提供了一些针对一维ndarray()的基本集合运算,最常用的可能要数np.unique()了,它用于找出数组中的唯一值并返回已排序的结果。
- 拿跟np.unique()等价的纯Python代码对比一下:
- 另一个函数np.in1d()用于测试一个数组中的值在另一个数组中的成员资格,返回一个布尔型数组:
-
python高维数据可视化_用pandas中的parallel_coordinates可视化高维数据
2020-12-09 10:17:22引言在处理数据时常常需要对数据进行可视化以便观察,但是,在笛卡尔坐标系下,超过3维的数据我们就无法可视化了,所以,我们就需要一种有效的方法来可视化高维数据.常用的方法有Parallel Coordinates,关于这个方法的介绍... -
用于高维数据的检索或最临近索搜索
2010-06-01 10:51:25用于高维数据的检索或最临近索搜索 高维数据处理一直是计算机数据挖掘, 图像检索方向的难点, 该算法是一种近似最临近方法, 效率提高比较多的 -
高维数据的一些概念
2020-05-11 18:23:04高维数据可视化 数据的维度:数据包含的属性的数量。 多维度数据:拥有多个属性的数据。 三维数据局限性: 1、屏幕是二维的、三维散点图的点与点之间会遮挡; 2、从不同三维视角观察数据点会得到不同的分布。 高维... -
高维数据的降维理论及应用
2018-03-22 20:30:38高维数据,如航天遥感数据、生物数据、网络数据以及金融市场交易数据等, 其处理面临两个问题:一是维数灾难(curses of dimensionality)问题,维数膨胀 给高维数据中模式识别和规则发现带来极大挑战;二是维数的增长又... -
高维数据的分析
2016-02-22 20:30:07随着科学技术的发展,人们在实际应用过程中经常会碰到各种类型的海量数据,如证券市场交易数据、多媒体图形图像视频数据、航天航空采集数据、生物特征数据等,这些数据在统计处理中通常称为高维数据。 在分析高维... -
工业现场高维数据采集系统设计
2020-05-11 05:59:57针对工业现场高维光谱数据的高速采集和传输问题,提出了一种高维数据采集系统设计方案。该系统选用TMS320C6713BDSP芯片作为核心处理芯片,选用RTL8019AS作为以太网控制器;采用C语言编程,实现了数据预处理、前端仪器... -
高维数据降维的DCT变换
2018-06-16 22:33:00基于它的“能量聚集特性”和变换的保距特性,把它用作高维数据降维的预处理手段,主要作用有两个:(1)大幅度降低后续降维的处理维数,减少运算量;(2)降低噪声对数据结构的影响。文中的试验结果表明,对高维数据,尤其是... -
Numpy高维数据的理解
2021-01-27 14:39:00当实际处理多维变量时,尤其需要使用到Tensorflow这样深度学习库,比如,图片数据批次其形状为:N×H×W×CN×H×W×C, 高维序列格式存在难以理解的问题。因此如何读懂这些高维序列是一个很基础的问题。列表和1-... -
高维数据流的聚类离群点检测算法研究
2021-03-03 06:34:28针对基于聚类的离群点检测算法在处理高维数据流时效率和精确度低的问题,提出一种高维数据流的聚类离群点检测(CODHD-Stream)算法.该算法首先采用滑动窗口技术对数据流划分,然后通过属性约简算法对高维数据集降维;其次... -
vizuka:探索高维数据集以及您的算法如何处理特定区域-源码
2021-02-05 06:14:56这是表示和浏览高维数据集的工具的集合。 t-SNE算法默认设置为构造2D空间。 该模块应与所提供的数据无关。 它随MNIST一起提供,用于快速测试。 对于商业用途和用户支持,请联系Sofian Medbouhi( ),后者提出... -
聚类分析中的高维数据降维方法研究
2018-06-16 22:34:01高维数据能充分表达复杂事物的信息,但高维数据自身表达和处理复杂,妨碍了它的实际应用。阐述了用降维算法和构建索引结构来解决高维数据降维问题。以数据对象变异最大方向的投影作为特定数据对象集的主成份,将聚类... -
高维数据的可视化
2019-02-26 16:59:06遇到高维数据的时候,就比较麻烦,没有办法可视化。 印象中,貌似t-sne、pca是可以在二维平面上可视化的,但这些技术貌似是降维的,不太明白,后面进行学习。 文章[1]虽然说是为了进行高维数据可视化的文章,其实看... -
论文研究-基于稀疏指数排序的高维数据并行聚类算法.pdf
2019-09-20 16:45:40针对高效的CABOSFV高维数据聚类算法,采用并行计算模式提高其大规模数据的处理能力,提出基于稀疏指数排序的高维数据并行聚类算法P_CABOSFV.该算法根据高维数据稀疏指数排序进行分割点选择实现数据划分,将数据分配到多... -
python中unique_Python数据分析入门|利用NumPy高效处理高维数据
2020-11-22 10:24:24矢量化NumPy数组可以将许多数据处理任务表述为简洁的数组表达式,否则需要编写循环。用数组表达式代替循环的做法,通常被称为矢量化。通常矢量化数组运算要比等价的纯Python方式快上一两个数量级,尤其是各种数值... -
高维数据降维技术及研究进展
2018-06-14 22:49:44降维技术旨在将高维数据映射到更低维的数据空间上以寻求数据紧凑表示,该技术有利于对数据做进一步处理。随着多媒体技术和计算机技术的高速发展,数据维度呈爆炸性增长,使得机器学习、图像处理等研究领域的数据分析变...
收藏数
1,304
精华内容
521