精华内容
下载资源
问答
  • 下面通过几种基本的降维方法获取降维后的向量与其对应的分布图,可以更好的分析和评估 embedding 质量。 Tips: CSDN-BITDDD 要降维向量可以使用自己提前准备好的高维向量,也可以结合上一节DeepWalk生成的...

    一.引言

    通过最基础的 DeepWalk 已经可以获取关注关系图中节点的 embedding,除了通过 embedding 计算内积获取两个节点的语义是否相近之外,还可以通过可视化的方式观测得到的 embedding。下面通过几种基本的降维方法获取降维后的向量与其对应的分布图,可以更好的分析和评估 embedding 质量。

    Tips:

    CSDN-BITDDD

    要降维的向量可以使用自己提前准备好的高维向量,也可以结合上一节 DeepWalk 生成的随机向量进行测试。上图为 DeepWalk 随机游走用到的图,其中节点数字标识该ID。

    二.PCA

    1.PCA 原理

    PCA 主成分分析是最常见的降维方法,用于高维数据降维,可以提取数据的主要特征分量。实际操作过程中,主要通过计算协方差矩阵的特征值,将特征值按从高到低排序,根据降维选择的 dim=n,取前n个高的特征值对应的特征向量构成投影矩阵,从而将原始数据通过投影到低维(理论推导过程可以参考西瓜书)。结合现实场景,主成分分析就是希望降维后我们可以更多的获取多维数据的信息,以下面三维图三个视角为例:

    正面:

    CSDN-BITDDD

    侧面: 

    CSDN-BITDDD

    45度: 

    CSDN-BITDDD

    三张图可以理解为3维图像被降维至2维,前面和侧面相比45角都或多或少损失了一些图像的全貌,所以如果使用主成分分析,第一个特征值对应的特征向量肯定更偏向于在45度这张图附近生成,因为这里能够尽可能多的还原真实的图像原貌。

    2.PCA实现

    这里直接调用 python 库实现:

    from sklearn.decomposition import PCA
    import matplotlib.pyplot as plt
    
    # Word2vec 得到的 id->embedding 的映射
    embeddings = get_embeddings(model, G)
    
    # 初始化 PCA 降维模型
    pca = PCA(n_components=2)
    embedding_list = [embeddings[k] for k in embeddings]
    # 训练模型
    compress_embedding = pca.fit_transform(embedding_list)
    
    # 可视化
    plt.scatter(compress_embedding[:, 0], compress_embedding[:, 1], s=10)
    plt.title("Dim=2")
    plt.colorbar()
    plt.show()
    

    我们可以把原始的图看作是3维的用户关注关系,PCA(n_components=2) 看作是我们从某个视角观测且想要尽可能多的观测到的二维最全面的节点全貌,可以通过图中标识出的顶点去大致抽象一下这个降维过程。

    CSDN-BITDDD

    CSDN-BITDDD

    三.TSNE

    1.TSNE 原理

    SNE - stochastic neighbor embedding 字面意思为随机领域嵌入,其核心思想是将图中的节点抽象为几何分布 P,将降维后的节点抽象为几何分布 Q,通过刻画两个分布的距离使二者距离达到最小,则认为降维损失了最少的原始信息,分布的距离通常使用 KL 散度定义,在 SNE 中,这个抽象的分布为高斯分布,这也是聚类,降维中常用到的分布函数,T-SNE 就是在 SNE 的基础上将高斯分布替换为 t 分布,其原因是 t 分布在低维空间下,同类数据距离较小,不同类数据距离较大,可视化效果更好,相关的 SNE, T-SNE 证明网上也有很多,感兴趣可以搜索一下 🔍

    以手写数字数据为例,可以看到 T-SNE 的分类效果对于单类别特征更佳局促,可视化效果更好,体现了其在刻画局部特征的特点。

    CSDN-BITDDD

    CSDN-BITDDD

    2.TSNE 实现

    T-SNE 也直接调用 python 实现:

        from sklearn.manifold import TSNE
        import matplotlib.pyplot as plt
    
        embeddings = get_embeddings(model, G)
        embedding_list = [embeddings[k] for k in embeddings]
        model = TSNE(n_components=2)
        compress_embedding = model.fit_transform(embedding_list)
        keys = list(embeddings.keys())
    
        plt.scatter(compress_embedding[:, 0], compress_embedding[:, 1], s=10)
        for x, y, key in zip(compress_embedding[:, 0], compress_embedding[:, 1], keys):
            plt.text(x, y, key, ha='left', rotation=0, c='black', fontsize=8)
        plt.title("T-SNE")
        plt.show()

    可以看到,PCA 基于协方差矩阵和 T-SNE 基于分布距离对降维点选择的不同,PCA 更聚焦于通过更少的维度去描述高维图形,而 T-SNE 在则在点的分布以及点的稀疏程度与 PCA 形成不同对比。

    CSDN-BITDDD

    CSDN-BITDDD

    四.AutoEncoder

    1.AutoEncoder 原理

    除了 PCA 和 T-SNE 外,对于无监督的聚类而言,深度学习中常用的就是 AutoEncoder 自编码器,通过 Encoder 和 Decoder 对向量本身学习进行信息整合,从低维度将高维度的数据恢复。最终训练结束保留 Encoder 作为降维使用,AutoEncoder 的实现与2D,3D可视化在之前的文章中提过,有兴趣可以参考。

    CSDN-BITDDD

     2.AutoEncoder 实现

        from tensorflow.keras.models import Model  # 泛型模型
        import matplotlib.pyplot as plt
        
    # 压缩特征维度至2维
        encoding_dim = 2
        input_emb = Input(shape=(emb_size,))
    
        # 编码层
        encoded = Dense(64, activation='relu')(input_emb)
        encoded = Dense(10, activation='relu')(encoded)
        encoder_output = Dense(encoding_dim)(encoded)
    
        # 解码层
        decoded = Dense(10, activation='relu')(encoder_output)
        decoded = Dense(64, activation='relu')(decoded)
    
        # 构建自编码模型
        autoencoder = Model(inputs=input_emb, outputs=decoded)
    
        # 构建编码模型
        encoder = Model(inputs=input_emb, outputs=encoder_output)
    
        # 编译模型
        autoencoder.compile(optimizer='rmsprop', loss='mse')
    
        # 训练模型
        autoencoder.fit(embeddings, embeddings, epochs=20, batch_size=256, shuffle=True)
        encoded_imgs = encoder.predict(embeddings)

     AutoEncoder 相对于前两者都比较紧凑,相比于 PCA,因为隐层具有非线性变换单元,因此训练过程中可以挖掘更多潜在信息,但是缺点是如果训练过于拟合,则数据只能适应训练数据,压缩效果反而适得其反。

    CSDN_BITDDD

    CSDN-BITDDD

    五.总结

    上面介绍了几种常用的降维方式,除此之外 Sklearn 包,AutoEncoder 变体还有多种降维方式,由于这里的数据都是基于随机数据生成且没有对应标识分类,所以可视化效果无法达到群簇的效果,如果有真实场景数据且可以拿到节点对应类别索引,可以在调用 plt.scatter(x, y, lable=c) 时添加 label = c的参数,这样同一类的点将会有同样的颜色,可以更直观的看到降维和聚类的效果。

    CSDN_BITDDD
    展开全文
  • matlab怎么把矩阵降维

    2021-04-19 01:26:31
    1. matlab如何对一个矩阵 求导而且不降维gradient计算数值梯度。函数F(x,y,。)在(x0,y0,。)的梯度就是函数在该点的导数,通常在数学上记作▽F(x0,y0,。)或gradF(x0,y0,。)。梯度是一个向量, 它的方向是函数在...

    1. matlab如何对一个矩阵 求导而且不降维

    gradient

    计算数值梯度。

    函数F(x,y,。)在(x0,y0,。)的梯度就是函数在该点的导数,通常在数学上记作▽F(x0,y0,。)或gradF(x0,y0,。)。

    梯度是一个向量, 它的方向是函数在一点变化率最快的方向,而它的模就是函数沿这个方向的变化率。

    在MATLAB中利用gradient计算梯度,将得到若干向量,它们指出了F的值增大的方向。

    语法格式:

    FX = gradient(F)

    其中F是一个向量。该格式返回F的一维数值梯度。FX即∂F/∂x,即沿着x轴(水平轴)方向的导数。

    [FX,FY] = gradient(F)

    其中F是一个矩阵。该调用返回二维数值梯度的x、y部分。FX对应∂F/∂x, FY对应于∂F/∂y。

    [FX,FY,FZ,。] = gradient(F)

    这里,F是一个含有N个自变量的多元函数。

    [。] = gradient(F,h)

    这里的h指定了沿着梯度的方向取点的间隔。

    [。] = gradient(F,h1,h2,。)

    以x,y方向分别为间隔0.2求取矩阵Z的数值梯度,dZ/dx和dZ/dy分别返回到DX,DY中。

    2. Matlab 二维数组Z字形降维操作

    假设 data 是8*8数据矩阵

    order = [

    0 1 5 6 14 15 27 28

    2 4 7 13 16 26 29 42

    3 8 12 17 25 30 41 43

    9 11 18 24 31 40 44 53

    10 19 23 32 39 45 52 54

    20 22 33 38 46 51 55 60

    21 34 37 47 50 56 59 61

    35 36 48 49 57 58 62 63

    ]

    当然也可以把 order就建成一个向量, 这样下面就不用reshape它了

    result = sortrows( [reshape(data, [], 1) reshape(order, [], 1)], 2);

    结果取 result(:, 1) 是个列向量

    展开全文
  • 2.PCA为什么要用协方差矩阵以及协方差矩阵的特征值特征向量降维 既然是降维,就要考虑降低哪些维度以及保存哪些维度,一个简单的想法是: 保留重要的,这样可以更好的保留原始数据的信息,以防信息缺失 所以怎样...

    参考来源:https://www.pianshen.com/article/8345891130/

    1.PCA(Principal Components Analysis)降维:

    PCA作用:用于数据预处理,降低数据维度

    PCA目的:去除无用数据,减少计算量

    2.PCA为什么要用协方差矩阵以及协方差矩阵的特征值特征向量降维

    既然是降维,就要考虑降低哪些维度以及保存哪些维度,一个简单的想法是:

    保留重要的,这样可以更好的保留原始数据的信息,以防信息缺失

    所以怎样才能知道哪里的信息重要呢?

    确定信息的重要性,首先要确定何为信息

    根据信息论的内容,信息是用来衡量不确定性大小的,也就是说越是不确定、未知的事务其包含的信息量越大,比如我们需要区分汽车种类,所拥有的数据包含车标、轮胎样式等,如果给定的数据集中其轮胎样式均是同一个品牌,则我们无法得到任何的区分信息(获得的信息量=0),从而也就无法区分汽车品类,而如果数据集中包含不同的车标,根据车标我们可以很容易的推断出车的种类。

    更近一步,如果一个特征其包含的数据全部集中在一个点或者一个范围之内(方差较小 --> 数据点距离均值点不分散),则我们无法使用这个特征进行分类,从而也就得到这个特征不重要,相反如果一个特征让数据很分散(方差大),使得我们易于分类则表明此特征很重要

    所以进行特征降维时删除的应该是不重要的的特征,即方差较小的特征,也即不利于分类的特征。

    另外当我们已经确定了一个重要的特征,则与之具备线性相关关系的特征就可以进行忽略了,因为一旦具备线性相关关系,则表明一个特征可以通过另外一个特征线性表达出来。

    假设我们有数据集D其大小为m x n(m为样本个数,n为特征数,即样本维度)

    我们假设使用矩阵P (维度为 n x k) 来变换数据D使得其维度降为n x k

    而使用什么样的矩阵P来进行放缩呢?

    还是回到我们刚刚谈论的,我们要保留特征方差较大的,而且不需要线性相关的

    而根据线性代数相关的知识可以得到,具备这种性质的有一种矩阵叫 协方差矩阵,其同一元素的协方差为其方差,我们要找最大的 k 个,其非对角线元素则表示两个特征之间的关系,由上,我们希望其为0。

    补充知识:矩阵的迹:矩阵的对角线之和https://baike.baidu.com/item/%E7%9F%A9%E9%98%B5%E7%9A%84%E8%BF%B9/8889744?fr=aladdin

    所以由上我们想得到的变换之后的Y (Y=DP,Y为降维后的数据) 其协方差应该是:

    C_{Y} = \begin{vmatrix} c_{11} & 0 & 0 & 0\\ 0& c_{22} & 0 & 0\\ 0& 0 & c_{33} & 0\\ 0& 0 & 0 & c_{44} \end{vmatrix}_{k\times k}

    根据协方差定义:

    C_{Y} = \frac{1}{m-1}YY^T = \frac{1}{m-1}(DP)^T(DP) = \frac{1}{m-1} P^TD^TDP = P^T(\frac{1}{m-1}D^TD)P

    =P^TC_{D}P

    要得到一个最优的C_{Y},及对角线上的方差是最大的,也即对角线的方差和是最大的即迹的值最大:max(Tr(C_{Y})) = max(Tr(P^TC_{D}P))

    由拉格朗日乘子法:

    我们构建函数 :

    f(p) = Tr(P^TC_{D}P)+\lambda (P^P-H)

    假设P^TP = H (近似)则满足定义:

    要想求函数的极值,则需要求导,\frac{\partial AB}{\partial A} = B^T

    \frac{\partial f}{\partial P} = \frac{\partial Tr(P^TC_DP)}{\partial P}+\lambda \frac{\partial (P^TP - H)}{\partial P} = (P^TC_{D})^T+\lambda P = CP + \lambda P

    令其为0,则C_{D}P = (-\lambda )P

    而上则等同于C_{D}的特征值特征向量,所以可得依照原始数据的协方差矩阵,寻找其特征向量组成P矩阵就是要找的变换矩阵,而特征值反应了特征向量的程度,所以选取前k大的特征值组成的特征向量进行PCA降维可保存重要信息。

    展开全文
  • 词嵌入,使用TSNE进行数据降维,使用plt可视化词嵌入结果。 效果图 男主与各个女主的词向量嵌入到了一起 本文用到的资源: 小说下载地址 停止词集合下载地址 代码实现 数据导入及预处理 import os, time, re ...

    【Gensim + TSNE使用】word2vec词向量处理中文小说

    本文使用Gensim对小说斗破苍穹进行词嵌入可视化

    流程

    1. 数据预处理,将小说数据滤除停止词,分词book_loader()。
    2. 调用gensim.models.word2vec对语料建立词向量。
    3. 词嵌入,使用TSNE进行数据降维,使用plt可视化词嵌入结果。

    效果图

    男主与各个女主的词向量嵌入到了一起
    在这里插入图片描述

    斗破苍穹词嵌入结果

    本文用到的资源:

    代码实现

    数据导入及预处理

    import os, time, re
    import numpy as np
    import jieba
    from gensim.models.word2vec import Word2Vec,Text8Corpus
    import re
    from gensim.models import word2vec
    from sklearn.manifold import TSNE
    import matplotlib.pyplot as plt
    plt.rcParams["font.sans-serif"] = ["SimHei"] # 用來正常顯示中文標籤
    plt.rcParams["axes.unicode_minus"] = False # 用來正常顯示負號
    def book_loader():
        with open(r"D:\Edge_Download\斗.破苍穹.txt", "r") as f:  # 打开文件
            data = f.read()  # 读取文件
    
        data = re.sub(r'[^\w\s]', '', data)  #仅保留汉字
        data = data.split('\n')      #按行分句
    
        for i in data:               #去除太短的句子
            if(len(i)<6):
                data.remove(i)
    
        def segment_sen(sen):
            sen_list = []
            try:
                sen_list = jieba.lcut(sen)
                word_list = []
                for word in sen_list:
                    if word not in stoplist:
                        word_list.append(word)
            except:
                pass
            return word_list
        sens_list = [segment_sen(i) for i in data]     #调用jieba分词
        return sens_list
    

    Word2Wec and 词嵌入

    class word_embedding:
        def __init__(self,sens_list=[],model_name="word2vec.model",min_count=300):  #建立词向量模型
            self.min_count=min_count
            self.model=Word2Vec(sens_list,  hs=1, min_count=min_count, window=6)  #建立词向量,忽略出现次数小于min_count的词
            self.model.save("word2vec.model")
    
            self.data_process()
    
        def data_process(self):
            self.tokens = []
            self.label=[]
            for word in self.model.wv.key_to_index:  #读取模型中提取到的词
                if 80000>=self.model.wv.get_vecattr(str(word), "count")>=self.min_count:   #过滤掉出现频率过低和过高的词
                    self.label.append(word)
                    self.tokens.append(self.model.wv.get_vector(str(word), norm=True))   #读取每个词对应的嵌入向量
    
        def show_similar_word(self,word="我"):  #https://zhuanlan.zhihu.com/p/107663526
            print("count:"+str(word)+" ",self.model.wv.get_vecattr(str(word), "count"))
            print(self.model.wv.most_similar(str(word)))  #找出一个两个词向量距离最近的词
    
        def TSNE_Plot(self):
            print("ploting:" + str(len(self.label)) + " labels")
            tsne_model = TSNE(perplexity=40, n_components=2, init="pca", n_iter=2500, random_state=23) #n_components:嵌入式空间的维度 n_iter最大迭代次数
            X_tsne =tsne_model.fit_transform(self.tokens)  #对词向量集合进行降维
            plt.scatter(X_tsne[:, 0], X_tsne[:, 1])
            for i in range(len(self.label)):
                plt.annotate(self.label[i],   #在每个词向量上标注其对应的词
                             xy=(X_tsne[i, 0], X_tsne[i, 1]),
                             textcoords="offset points",
                             xytext=(5, 2),
                             ha="right",
                             va="bottom")
            plt.show()
            
    wd=word_embedding(book_loader(),model_name="D:\Codes\Python\Mechine_learning\Word_embedding\dpcq.model",min_count=500)
    wd.show_similar_word("萧炎")  #找出与“萧炎”相似度最高的词汇
    wd.TSNE_Plot()   #词嵌入可视化
    

    改进点

    • 去除文本中的虚词
    展开全文
  • 探索性数据分析是数据科学模型开发管道的重要组成部分。数据科学家将大部分时间花在数据清洗、特征工程和执行其他数据整理技术上。降维是数据科学家在执行特征工程时使用的技术之一。降维是将高维数据集...
  • 1.PCA降维底层 方法一: import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns def pca(n_components,data): # print(data) x = np.cov(data) # print(x) # 取出...
  • 1.53.Auto-Encoders和Variational AutoEncoders(VAE) ...1.53.5.PCA降维和Auto-Encoders降维的比较 1.53.6.Auto-Encoders变种 1.53.6.1.Denoising AutoEncoders,去噪 AutoEncoders 1.53.6.2.Dropout AutoEnco
  • 深度学习-生成模型-预训练方法:Embedding(Tranform Object To Vector) 一、Embedding概述 二、Embedding与Ont-Hot编码 三、Word Embedding 1、传统的自然语言处理系统 2、词向量(Word Embedding)空间语言模型...
  • 刘凯洋摘要:目前的文本分类大多使用词向量,且词向量大多由Word2vec,Glove等方法训练得到,其存在的问题是部分文本中词语的数量较多而训练速度较慢,且准确率受到切词的影响。由于中文字词和英文差异较大,提出...
  • 【实例简介】matlab34种降维典型算法【实例截图】【核心代码】matlab建模典型算法代码└── drtoolbox├── Contents.m├── Readme.txt├── compute_mapping.m├── drgui.m├── generate_data.m├── gui...
  • 多维张量本质上就是一个变换,如果维度是 1 ,那么,1 仅仅起到扩充维度的作用,而没有其他用途,因而,在进行降维操作时,为了加快计算,是可以去掉这些 1 的维度。 print("*" * 50) m = torch.zeros(2, 1, 2, 1, ...
  • x = np.array([[1,2,3], [4,5,6]]) print(x.ravel()) [1 2 3 4 5 6] x = np.array([[1,2,3], [4,5,6], [10,11,12]]) print(x.ravel()) [ 1 2 3 4 5 6 10 11 12]
  • 导读:本文用图的形式介绍机器学习中特征降维的基本思想和方法。阅读完本篇文章,您将很容易理解PCA降维的基本思想和方法。一、为什么要进行特征降维?在机器学习中,一些数据集的特征数量很多,达到几千维甚至几万...
  • 特征降维 1、降维 1.1 定义 降维是指在某些限定条件下,降低随机变量(特征)个数,得到一组“不相关”主变量的过程 降低随机变量的个数 相关特征(correlated feature) 比如,相对湿度与降雨量之间的相关,我们就...
  • 设法将原来变量重新组合成一组新的互相无关的几个综合变量,同时根据实际需要从中可以取出几个较少的综合变量尽可能多地反映原来变量的信息的统计方法叫做主成分分析或称主分量分析,也是数学上用来降维的一种方法。...
  • 机器学习降维方法

    2020-12-24 15:58:19
    特征降维方法包括:Lasso,PCA,小波分析,LDA(Linear Discriminant Analysis线性判别分析),LDA(Latent Dirichlet Allocation潜在狄利克雷分配),奇异值分解SVD,拉普拉斯特征映射,深度学习SparseAutoEncoder,...
  • 6、Transformer中multi-head attention中每个head为什么要进行降维?[14] 在不增加时间复杂度的情况下,同时,借鉴CNN多核的思想,在更低的维度,在多个独立的特征空间,更容易学习到更丰富的特征信息。 7、...
  • (十)降维模型

    2021-07-29 14:44:36
    因此,可以只保留前 k个特征向量,而忽略其它的特征向量,实现对数据特征的降维处理。 主成分分析方法得到的主成分变量具有几个特点:(1)每个主成分变量都是原始变量的线性组合;(2)主成分的数目大大少于原始...
  • 一、特征向量/特征值Av = λv如果把矩阵看作是一个运动,运动的方向叫做特征向量,运动的速度叫做特征值。对于上式,v为A矩阵的特征向量,λ为A矩阵的特征值。假设:v不是A的速度(方向)结果如上,不能满足上式的。二...
  • 一文搞懂one-hot和embedding

    千次阅读 2021-03-02 16:03:56
    在 NLP领域,word embedding 已经成为了众所周知的技术。在现实生活中 word embedding 已经拥有非常广泛的应用:语音助手、机器翻译、情感分析… ...想要让机器理解单词,就必须要把它变成一串数字(向量)。下面介绍.
  • 文章目录相关背景数据降维数据降维的方法PCA降维LDA线性判别NMF非负矩阵分解LLE局部线性嵌入降维算法 相关背景 在许多领域的研究与应用中,通常需要对含有多个变量的数据进行观测,收集大量数据后进行分析研究寻找...
  • PCA降维的主方向和协方差矩阵的特征向量,有什么关系?
  • import numpy as np ''' 多维数组 生成(改变)多维数组 reshape(变形),shape属性,resize 多维变一维 矩阵转置(行列互换) ''' print('===========生成(改变)多维数组reshape========') ...
  • SVD降维

    2021-04-21 01:32:41
    同时我们仔细看一下A矩阵可以发现,A矩阵的第5行向量和第6行向量特别相似,Ben所在的列向量和Fred所在的列向量也特别相似。 所以从直观上我们发现U矩阵和V矩阵可以近似来代表A矩阵,换据话说就是将A矩阵压缩成U矩阵...
  • 十种方法实现图像数据集降维

    万次阅读 多人点赞 2021-04-15 22:52:28
    本项目将依托于MNIST数据集,手把手实现图像数据集降维
  • 与PCA降维不同,LDA是有监督的降维,它的基本思想就是利用类标信息找到子空间S,将数据映射到S中后,不同类别的数据尽量远离,相同类别的数据尽量接近。 与PCA类似,LDA利用方差作为指标来衡量数据在投影方向上的...
  • 数据分析:常用的降维方法

    千次阅读 2021-04-23 14:46:14
    主成分分析主成分分析(Principal ComponentAnalysis,PCA)也称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标。在统计学中,主成分分析是一种简化数据集的技术。它是一个线性变换。这个变换把数据...
  • 数据分析中常用的基本降维思路及方法数据属性(维)归约通过属性合并创建新属性维数,或者通过直接删除不相关的属性来减少数据维数,从而提高数据挖掘的效率,降低计算成本。数据维归约的目标是寻找最小的属性子集并...
  • 流形学习 先来了解一下流形学习。 流形学习(Manifold Learning)是机器学习中的一种维数约简方法,将高维的数据映射到低维,并依然能够反映原高维数据的...本文介绍这四种降维方法原理,实现步骤以及实现代码。 线性
  • 降维

    2021-03-08 16:52:08
    数据样本一般分布的非常稀疏,这是所有学习算法要面对的问题,降维技术应运而生。 l 数据降维 p 降维是对事物的特征进行压缩和筛选,该项任务相对比较抽象。如果没有特定领域知识, 无法预先决定采用哪些数据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 45,119
精华内容 18,047
关键字:

向量降维