精华内容
下载资源
问答
  • 降低维度算法

    千次阅读 2020-03-05 13:14:51
    降维则是为了缓解维数灾难的一个重要方法,就是通过某种数学变换将原始高维属性空间转变为一个低维“子空间”...降低维度的算法可以解决过拟合的问题。 降低维度的算法主要有: 主成分分析法PCA 线性判别法L...

    降维则是为了缓解维数灾难的一个重要方法,就是通过某种数学变换将原始高维属性空间转变为一个低维“子空间”。其基于的假设就是,虽然人们平时观测到的数据样本虽然是高维的,但是实际上真正与学习任务相关的是个低维度的分布。从而通过最主要的几个特征维度就可以实现对数据的描述,对于后续的分类很有帮助。降低维度的算法可以解决过拟合的问题。

     

    降低维度的算法主要有:

     

    • 主成分分析法PCA
    • 线性判别法LDA
    • 奇异值分解简化数据
    • 拉普拉斯特征映射
    • Lassio缩减系数法
    • 小波分析法
    展开全文
  • 增加一个维度 out.unsqueeze(-1) 降低一个维度 out.squeeze(dim=1)

    增加一个维度 out.unsqueeze(-1)

    降低一个维度 out.squeeze(dim=1)

     

    展开全文
  • 降低维度的方法 选择特征 从原有的特征中挑选出对结果影响最大的特征 抽取特征 将数据从高维度空间投影到低维度空间 一、选择特征 移除低变异数的特征 假设某特征的特征值只有0和1,并且在所有输入样本中,95%的...

    降低维度的方法

    • 选择特征
      从原有的特征中挑选出对结果影响最大的特征
    • 抽取特征
      将数据从高维度空间投影到低维度空间

    一、选择特征

    移除低变异数的特征

    假设某特征的特征值只有0和1,并且在所有输入样本中,95%的实例的该特征取值都是1,那就可以认为这个特征作用不大。如果100%都是1,那这个特征就没意义了。当特征值都是离散型变量的时候这种方法才能用,如果是连续型变量,就需要将连续变量离散化之后才能用。而且实际当中,一般不太会有95%以上都取某个值的特征存在,所以这种方法虽然简单但是不太好用。可以把它作为特征选择的预处理,先去掉那些取值变化小的特征,然后再从接下来提到的的特征选择方法中选择合适的进行进一步的特征选择。

    import pandas
    from sklearn.feature_selection import VarianceThreshold # 
    df = pandas.read_csv('Data/customer_behavior.csv')
    X = df[['bachelor','gender','age','salary']]
    sel = VarianceThreshold(threshold=0) # 方差小于threshold的值的特征变量将被删除,默认为0
    X_val = sel.fit_transform(X)
    names = X.columns[sel.get_support()]
    print(names)
    # 以上设置threshold的值为0,即表示某一特征变量在数据集中没有变化,这个特征对结果没有任何影响,会被删除

    单变量特征筛选

    from sklearn.feature_selection import SelectKBest
    from sklearn.feature_selection import chi2
    X = df[['bachelor','gender','age','salary']]
    y = df['purchased'].values
    clf = SelectKBest(chi2,k=2) # k=2与结果最相关的2个变量
    clf.fit(X,y)
    print(clf.scores_) # 各个特征变量与结果的相关程度
    X_new = clf.fit_transform(X,y)
    print(X_new)  # 最相关的2个变量的dataframe

    逐步剔除特征(Recursive feature elimination)

    from sklearn.feature_selection import RFE
    from sklearn.svm import SVC
    clf = SVC(kernel='linear') # RFE中只能使用线性分类模型
    rfe = RFE(clf,n_features_to_select=1) # 逐步剔除到只剩1个特征变量
    rfe.fit(X_val,y)
    for x in rfe.ranking_:
        print(names[x-1],rfe.ranking_[x-1])

    使用随机森林筛选特征

    from sklearn.ensemble import RandomForestClassifier
    clf = RandomForestClassifier(n_estimators=10,random_state=123)
    clf.fit(X_val,y)
    for feature in zip(names,clf.feature_importances_): #clf.feature_importances_ 给出每个特征对结果的重要性
        print(feature)

    特征重要性可视化

    import matplotlib.pyplot as plt
    plt.title('Feature Importance')
    plt.bar(range(0,len(names)),clf.feature_importances_)
    plt.xticks(range(0,len(names)),names)
    plt.show()

    二、抽取特征

    主成分分析 PCA

    from sklearn.datasets import load_iris
    iris= load_iris()
    X = iris.data
    y = iris.target
    from sklearn.decomposition import PCA
    pca = PCA(n_components = 2) # n_components 定义压缩成2个主成分
    pca.fit(X)
    X_reduced = pca.transform(X)
    print(X_reduced.shape)
    from matplotlib import pyplot as plt
    plt.scatter(X_reduced[:,0],X_reduced[:,1],c=y)
    plt.show()
    for component in pca.components_:
        print('+'.join("%.3f * %s"%(value,name) for value,name in 
    zip(component,iris.feature_names)))
    # 0.362 * sepal length (cm)+-0.082 * sepal width (cm)+0.857 * petal length (cm)+0.359 * petal width (cm)
    # 0.657 * sepal length (cm)+0.730 * sepal width (cm)+-0.176 * petal length (cm)+-0.075 * petal width (cm)
    # 显示主成分是怎么构成的
    print(pca.explained_variance_)
    print(pca.explained_variance_ratio_)
    # 结果[ 0.92461621  0.05301557],主成分1比主成分2解释的比例高很多

    奇异值分解 SVD

    from scipy.linalg import svd
    U,S,V = svd(X,full_matrices=False)  #将矩阵X分解成3个相乘的矩阵
    import numpy as np
    S = np.diag(S) # 分解完后的S是一个1维矩阵,恢复成对角矩阵
    print(U.dot(S).dot(V)) # 3个矩阵点乘后与X相同
    from sklearn.decomposition import TruncatedSVD
    svd = TruncatedSVD(n_components=2) # 使用sklearn的truncatedsvd将矩阵降到2维数据
    X_new = svd.fit_transform(X)
    plt.scatter(X_new[:,0],X_new[:,1],c=y)
    plt.show()

    转载于:https://www.cnblogs.com/zhuimengzhe/p/10229764.html

    展开全文
  • 3.PCA PCA是一种在保留参考数据基本信息的前提下,减少样本测量次数的方法。我们将着重介绍图像的3个主要组成部分 from sklearn.decomposition import PCA pca = PCA(n_components=3) pca_result = pca.fit_...

     

    1.导入相关模块

    import numpy as np
    from sklearn.datasets import fetch_openml

    2.MNIST Dataset

    mnist = fetch_openml("mnist_784")
    X = mnist.data / 255.0
    y = mnist.target
    X.shape, y.shape

    数据转换为Pandas数据框架

    import pandas as pd
    
    feat_cols = ['pixel' + str(i) for i in range(X.shape[1])]
    
    df = pd.DataFrame(X, columns=feat_cols)
    df['label'] = y
    df['label'] = df['label'].apply(lambda i: str(i))
    
    X, y = None, None
    
    print('Size of the dataframe: {}'.format(df.shape))
    

    由于数据框中的教程是按类排序的,所以我们需要一个随机顺序的索引向量来混合例子。

    rndperm = np.random.permutation(df.shape[0])

    将随机图像可视化

    matshow允许将一个二维矩阵或数组可视化为一个彩色图像。

    %matplotlib inline
    import matplotlib.pyplot as plt
    
    # Plot the graph
    plt.gray()
    fig = plt.figure( figsize=(16, 7) )
    for i in range(0, 15):
        ax = fig.add_subplot(3, 5, i+1) 
        ax.matshow(df.loc[rndperm[i],feat_cols].values.reshape((28,28)).astype(float))
    plt.show();

    3.PCA

    PCA是一种在保留参考数据基本信息的前提下,减少样本测量次数的方法。我们将着重介绍图像的3个主要组成部分

    from sklearn.decomposition import PCA
    
    pca = PCA(n_components=3)
    pca_result = pca.fit_transform(df[feat_cols].values)
    
    df['PC1'] = pca_result[:, 0]
    df['PC2'] = pca_result[:, 1] 
    df['PC3'] = pca_result[:, 2]
    
    print('Explained variation per principal component: {}'.format(pca.explained_variance_ratio_))

    前三个部分描述了原始数据分布的23%。

    from ggplot import *
    
    chart = ggplot( df.loc[rndperm[:3000],:], aes(x='PC1', y='PC2', color='label') ) \
            + geom_point(size=50, alpha=0.8) \
            + ggtitle("First and Second Principal Components colored by digit")
    chart

    <ggplot: (9387058)>

    4.T-分布式随机邻域实体(t-SNE)。

    T-SNE是基于减少两个分布的差异:输入对象的成对相似度(距离)分布和对应对象(点)在小维空间的成对相似度分布。

    该方法是资源密集型的,所以建议使用PCA(对于稀疏数据--TruncatedSVD)来处理大量的属性。

    import time
    
    from sklearn.manifold import TSNE
    
    n_sne = 7000
    
    time_start = time.time()
    tsne = TSNE(n_components=2, verbose=1, perplexity=40, n_iter=300)
    tsne_results = tsne.fit_transform(df.loc[rndperm[:n_sne],feat_cols].values)
    
    print('t-SNE done! Time elapsed: {} seconds'.format(time.time()-time_start))

    df_tsne = df.loc[rndperm[:n_sne],:].copy()
    df_tsne['x-tsne'] = tsne_results[:,0]
    df_tsne['y-tsne'] = tsne_results[:,1]
    
    chart = ggplot( df_tsne, aes(x='x-tsne', y='y-tsne', color='label') ) \
            + geom_point(size=15,alpha=0.8) \
            + ggtitle("tSNE dimensions colored by digit")
    chart

    <ggplot: (5784710)>

    也可以先用PCA或TruncatedSVD处理数据,留下例如50个字符,然后用t-SNE减小维度值。但是,要记住,计算t-SNE的复杂度会随着样本数的平方而增加,分别是,如果数据集中有几十万或几百万个对象,这种方法就变得不切实际了。

    展开全文
  • python numpy库中array的维度增加与降低

    千次阅读 2019-10-29 16:14:37
    numpy中array存在(3,)和(3,1)两种可能情况,分别对应于一维数组与二维数组。...维度降低 http://www.cocoachina.com/articles/78933中详细介绍了,此处截取了一些重要的表述及结果 ...
  • 为了解决curse of dimensionality使用PCA来降低特征的维数。 Resnet50(在imageNet上训练) 在没有toplayer的情况下从keras创建Resnet50,以获取卷积特征(2048维)作为输出,而不是图像分类概率。 为数据集的每...
  • 这些新的简化特征集需能够汇总原始特征集中的大部分信息。 这样便可以从整合的原始特征集中创建原始特征的简化版本。   特征选择也是一种常用的用来减少数据集中特征数量的技术。 它与特征提取的区别在于: 特征...
  • 天善学院-特征筛选与降低维度 jupyter notebook(python 语言) 很详细的讲解和应用,可以快速入门。应用是实例的。
  • numpy 增减数组的维度

    万次阅读 2018-04-11 09:51:13
    假设a的shape为[1000,128,128]b=np.expand_dims(a,axis=0)b的shape为[1,1000,128,128]c=np.squeeze(b)c的数据维度为[1000,128,128]expand_dims为增加内容为空的维度squeeze为删除内容为空的维度...
  • 我们描述了一种初始化权值的有效方法,这种方法允许深度自动编码器网络学习低维编码,这种编码作为一种降低数据维度的工具,其性能优于主成分分析。 We describe an effective way ofinitializing the weights ...
  • 线性代数(9): 空间与维度

    千次阅读 2020-01-10 19:35:50
    文章目录1 空间,向量空间和欧几里得空间2 广义向量空间3 子空间4 直观理解欧几里得空间的子空间5 维度6 行空间和矩阵的行秩7 列空间8 矩阵的秩9 零空间10 秩-零化度定理11 研究子空间的原因参考资料 注:转载请...
  • TensorFlow2.0中Tensor的维度变换

    千次阅读 2020-01-04 03:07:25
    在张量的操作中,维度变换是最重要的操作之一,为了满足不同场景的运算需求,可以任意切换数据的形式。现列举一些常用方法,以方便查看。 张量变形 在总数据量不变的情况下,将其变换为不同的组合形式,且将此数据...
  • 机器学习中的维度灾难

    万次阅读 多人点赞 2017-05-11 20:31:39
    一、介绍本篇文章,我们将讨论所谓的“维度灾难”,并解释在设计一个分类器时它为何如此重要。在下面几节中我将对这个概念进行直观的解释,并通过一个由于维度灾难导致的过拟合的例子来讲解。考虑这样一个例子,我们...
  • pytorch 去除维度为1的维度

    千次阅读 2020-02-20 18:14:00
    out.squeeze(dim=1) out.squeeze_(dim=1)
  • 理解维度数据仓库——事实表、维度表、聚合表

    万次阅读 多人点赞 2019-05-23 21:16:22
    理解维度数据仓库——事实表、维度表、聚合表 一、事实表 在多维数据仓库中,保存度量值的详细值或事实的表称为“事实表”。一个按照州、产品和月份划分的销售量和销售额存储的事实表有5个列,概念上与下面的示例...
  • 我个人的意见是,这个更深层网络提取更高维度的特征,它是这么个意思:前面的卷积层提取一些浅层的特征,比如纹理,形状(我们输入的是颜色特征),然后中间的卷积层呢,提取的是一些更复杂的特征,这些特征难以描述...
  • 就是把原有数据集从n维投影到了k维空间上,获得了新的坐标,再乘以一个对角矩阵,此时将该对角矩阵视为某种线性变换(通常而言,线性变换是指左乘一个矩阵,那是因为原始矩阵是以行数来作为维度,即如果有2行,那...
  • 残差网络

    千次阅读 2019-07-07 14:35:51
    图中34层A,B,C是指上文提到的输入输出维度不一致问题中当卷积层之间维度变高的时候采取的三种方案,A是将所有增加的维度都用0填充。(zero-padding)B 是保持原始输入,增加的维度用线性映射填充。C 是将所有的输入...
  • PCA代码matlab实现因为修改算法需要,找到了一些PCA代码,上传上来,希望对大家有帮助
  • python pytorch 维度调整

    千次阅读 2019-02-22 10:09:55
    代码 import numpy as np import torch a = np.arange(24).reshape(2,3,4) b = a[:,-1,:] print(b.shape) x = torch.from_numpy(a) y = x[:,-1,:].unsqueeze(1) print(y.size()) z = y.expand(2,4,4) ...
  • SpringCloud面试题

    万次阅读 多人点赞 2018-12-12 00:29:07
    一.SpringCloud面试题口述 1.SpringCloud和Dubbo SpringCloud和Dubbo都是现在主流的微服务架构...从技术维度上,其实SpringCloud远远的超过Dubbo,Dubbo本身只是实现了服务治理,而SpringCloud现在以及有21个子项目以...
  • 作者基于多年的大数据处理经验,当前管理着100PB+数据仓库和2000+节点的集群。持续系统化给大家分享一下关于数据仓库建设的经验总结。...为什么维度建能模脱颖而出? 1.从小公司到大公司看数仓建模发展 ...
  • OpenCV之矩阵维度和通道详解

    千次阅读 2018-10-30 15:36:47
    今天发现对OpenCV的矩阵维度和通道还不太理解,所以有必要花点时间整理一下这两个点。 OpenCV中图像的通道可以是1、2、3和4。其中常见的是1通道和3通道,2通道和4通道不常见。 1通道的是灰度图 2通道的图像是RGB...
  • 卷积层的维度变化

    2019-06-20 15:42:00
    import keras from keras import Sequential model = Sequential() model.add(keras.layers.Conv2D(input_shape=(28, 28, 1), kernel_size=(5,5), filters=20, activation='relu')) model.add(keras.layers......
  • CNN卷积池化后维度的变化

    千次阅读 2019-02-23 10:22:24
    CNN的卷积操作后维度变化: 输入维度:,分别代表输入样本的长宽高 卷积操作的超参数 卷积核个数: 卷积核大小: 滑动步长(Stride): 填充(Padding): 则输出的维度为,其中 由于CNN的...
  • 应用层面:大数据是数据服务组合生成的新场景、新体验、日益增长的数据量非但不会使信息获取效率降低、质量下降,反而会让每个人都能得到快速的迭代,个性化的互联网服务。 ##(2)阿里的大数据主张 在数据提供...
  • python矩阵的维度减少(squeeze)

    千次阅读 2020-09-30 10:06:28
    用例子进行说明: (1)对0维进行压缩 x = np.array([[[0], [1], [2]]]) print(x) x.shape (1, 3, 1) np.squeeze(x).shape np.squeeze(x, axis=(,)).shape print(np.squeeze(x, axis=(0,))) ...(2)对最后一维进行...
  • 增加维度主要是用tf.expand_dims()这个方法,降低维度用的是tf.squeeze()这个方法。下面我放上这两个函数的源代码,其实自己稍微看一下就懂了。 def expand_dims(input, axis=None, name=None, dim=None): ""...
  • Pytorch学习-张量的维度变换

    千次阅读 2020-07-11 09:50:16
    维度变换相关函数主要有 torch.reshape(或者调用张量的view方法), torch.squeeze, torch.unsqueeze, torch.transpose torch.reshape 可以改变张量的形状。 torch.squeeze 可以减少维度。 torch.unsqueeze 可以增加...
  • 这个问题就是我们常说的维度灾难。 不过值得庆幸的是,在实际问题中,经常可以极大地减少特征的数目,将棘手的问题转变为容易处理的问题。例如,以MNIST图片数据集为例:在图片边框附近的像素点基本都是白色,所以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 118,423
精华内容 47,369
关键字:

信息维度降低