精华内容
下载资源
问答
  • 特征值与特征向量

    2015-08-31 23:25:00
    因此,方阵与向量的乘法只有变换操作,一行数大于的矩阵与向量的乘法包含了变换以及维度的提高,一行数小于列的矩阵与向量的乘法则是维的降低。 方阵的矩阵乘法对应了一种变换,将一个向量变成另一...

        矩阵与向量的乘法可以理解为变换+投影,变换分为旋转变换与伸缩变换,投影可以是低维向高维的投影,也可以是高维向低维的投影。因此,方阵与向量的乘法只有变换操作,一个行数大于列数的矩阵与向量的乘法包含了变换以及维度的提高,一个行数小于列数的矩阵与向量的乘法则是维数的降低。

        方阵的矩阵乘法对应了一种变换,将一个向量变成另一个向量,新向量的方向、大小往往是与旧向量是不同的。在变换的过程中,又可以分为旋转变换与伸缩变换,而当一个矩阵对某些向量只发生伸缩变换时(变换后的向量与原向量平行),这些向量便是这个矩阵的特征向量,伸缩的比例便是特征值。由于要求只对向量发生伸缩变换(隐式地说明没有投影变换),因此只有方阵才拥有特征向量这个性质便很好理解。这样做的意义在于,看清一个矩阵在那些方面能产生最大的效果(power),并根据所产生的每个特征向量(一般研究特征值最大的那几个)进行分类讨论与研究。

        特征向量和特征值有哪些具体用途?

    图像处理中的PCA方法,选取特征值最高的k个特征向量来表示一个矩阵,从而达到降维分析+特征显示的方法,还有图像压缩的K-L变换。再比如很多人脸识别,数据流模式挖掘分析等方面。

    在力学中,惯量的特征向量定义了刚体的主轴。惯量是决定刚体围绕质心转动的关键数据。 

    在谱系图论中,一个图的特征值定义为图的邻接矩阵A的特征值,或者(更多的是)图的拉普拉斯算子矩阵, Google的PageRank算法就是一个例子。 

    在量子力学中,特别是在原子物理和分子物理中,在Hartree-Fock理论下,原子轨道和分子轨道可以定义为Fock算子的特征向量。相应的特征值通过Koopmans定理可以解释为电离势能。在这个情况下,特征向量一词可以用于更广泛的意义,因为Fock算子显式地依赖于轨道和它们地特征值。

    参考文章:

    [1]http://blog.163.com/renguangqian@126/blog/static/1624014002011711114526759/

    [2]http://www.zhihu.com/question/20382971

    转载于:https://www.cnblogs.com/jujy361/p/4774604.html

    展开全文
  • 支持向量机(SVM)是一组有监督学习方法,被用于分类,回归和边界探测 支持向量机有以下的几优点: Effective in high dimensional spaces....Still effective in cases where number of ... 在维度数量大于样本...

    支持向量机(SVM)是一组有监督学习方法,被用于分类,回归和边界探测

    支持向量机有以下的几个优点:

    Effective in high dimensional spaces. 在高维空间有效性
    Still effective in cases where number of dimensions is greater than the number of samples. 在维度数量大于样本数量的时候仍然有效
    Uses a subset of training points in the decision function (called support vectors), so it is also memory efficient. 再决策函数上(支持向量)使用训练点的一个子集,因此内存有效性(占用的空间小)
    Versatile: different Kernel functions can be specified for the decision function. Common kernels are provided, but it is also possible to specify custom kernels. 多功能的:不同的核函数,可以被特别的用于决策函数,普通的核被提供,但是这仍然可能去特异化核函数。
    支持向量机也有下面的这些缺点:

    If the number of features is much greater than the number of samples, avoid over-fitting in choosing Kernel functions and regularization term is crucial. 如果特征的数量远比样本的数量要大,选择核函数和正则化余项在避免过拟合上是至关重要的。
    SVMs do not directly provide probability estimates, these are calculated using an expensive five-fold cross-validation (see Scores and probabilities, below). 支持向量机们不直接提供概率估计,而是用耗费时间的5-fold 交叉验证来计算的。
    sklearn中的支持向量机同时支持dense(密集)和 sparse(稀疏)的样本数据作为输入。但是,如果是在稀疏的数据上做预测,那么一定也是要在稀疏的数据上做训练才行。

    分类
    SVC, NuSVC and LinearSVC are classes capable of performing multi-class classification on a dataset.

    SVC,NuSVC 和LinearSVC是一类在数据集上有能力去实现多类分类的分类器。

    SVC and NuSVC are similar methods, but accept slightly different sets of parameters and have different mathematical formulations (see section Mathematical formulation). On the other hand, LinearSVC is another implementation of Support Vector Classification for the case of a linear kernel.

    SVC和NuSVC是比较类似的方法,但是在接受的参数上有轻微的不同,同时也有不同的数学表达式。
    LinearSVC是对于另一种针对于线性核情况的支持向量机分类器的实现
    注意: LinearSVC不接受key wordkernal,因为被假设为线性了的。同时相比于SVC和NuSVC也缺少了一些方法,例如:support_方法

    SVC,NuSVC和LinearSVC都一样,接受两个输入X([n_samples, n_features])和 y ([n_samples] )。前者表示样本特征,后者表示样本标签,用于训练。

    简单测试
    >>> from sklearn import svm
    D:\SoftWare\Python\lib\site-packages\sklearn\externals\joblib\externals\cloudpickle\cloudpickle.py:47: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
      import imp
    >>> X = [[0, 1], [1, 0]]
    >>> y = [0, 1]
    >>> clf = svm.SVC(gamma='scale')
    >>> clf.fit(X, y)
    SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
      decision_function_shape='ovr', degree=3, gamma='scale', kernel='rbf',
      max_iter=-1, probability=False, random_state=None, shrinking=True,
      tol=0.001, verbose=False)
     
    测试也很简单
    >>> data =  [[0 for i in range(2)] for j in range(2)]
    >>> data
    [[0, 0], [0, 0]]
    >>> for i in range(2):
    ...     for j in range(2):
    ...             data[i][j] = clf.predict([[i , j]])[0]
    ...
    >>> data
    [[1, 0], [1, 1]]
     
    多类分类
    svc和NuSVC提供了一种“一对一”的方式来实现多类分类。如果n_class是类的数量的话,那么n_class * (n_class - 1) / 2 个分类器被建立,来不同的两个类别之间的相互区分。

    To provide a consistent interface with other classifiers, the decision_function_shape option allows to aggregate the results of the “one-against-one” classifiers to a decision function of shape (n_samples, n_classes):
    为了提供一个和其他分类器一致性的接口,这这个 decision_function_shape 选项,允许去累积这个“1对1”的分类器们去一个决策函数的shape

    例如:
    >>> X = [[0], [1], [2], [3]]
    >>> Y = [0, 1, 2, 3]
    >>> clf = svm.SVC(gamma='scale', decision_function_shape='ovo')
    >>> clf.fit(X, Y)
    SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
      decision_function_shape='ovo', degree=3, gamma='scale', kernel='rbf',
      max_iter=-1, probability=False, random_state=None, shrinking=True,
      tol=0.001, verbose=False)
    >>> dec = clf.decision_function([[1]])
    >>> dec.shape[1]
    6
    >>> clf.decision_function_shape = 'ovr'
    >>> dec = clf.decision_function([[1]])
    >>> dec.shape[1]
    4
    >>> dec
    array([[ 1.95120255,  3.5       ,  0.95120255, -0.4024051 ]])
    >>> clf
    SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
      decision_function_shape='ovr', degree=3, gamma='scale', kernel='rbf',
      max_iter=-1, probability=False, random_state=None, shrinking=True,
      tol=0.001, verbose=False)
     
    On the other hand, LinearSVC implements “one-vs-the-rest” multi-class strategy, thus training n_class models. If there are only two classes, only one model is trained:
    另一方面,LinearSVC 实现了一个“One-vs-the-rest”的多类分类方式,因此,训练n_class个模型。如果这只有两个类别,那就只有一个模型被训练。(注意最后的这个强调,这是一种特殊的情况,因为one和the rest是重复的~)

    非均衡的问题
    In problems where it is desired to give more importance to certain classes or certain individual samples keywords class_weight and sample_weight can be used.

    在某些问题上,需要更多的关注特定的类别,或者是特定的样本个体。这时候,可以使用 class_weight 和 sample_weight
     

    展开全文
  • 有n个维度为m的向量,取其中两进行合并,合并时每个维度取两者之间的较大者,得到的新的向量中,维度值最小者最大为多少 分析 首先最需要注意的是m的取值,m最大只有8 那么我们可以二分答案,对于每一二分值,...

    题目链接

    题目大意

    有n个维度为m的向量,取其中两个进行合并,合并时每个维度取两者之间的较大者,得到的新的向量中,维度值最小者最大为多少

    分析

    首先最需要注意的是m的取值,m最大只有8
    那么我们可以二分答案,对于每一个二分值,进行下面的操作
    将整个矩阵的每一个元素,如果这个元素大于二分值,则变成1,反正则变成0
    把每一个向量压缩为单个二进制数
    这样我们最多只会得到28=2562^8 = 256种不同的二进制数,然后暴力的遍历所有可能的二进制数的组合,得到是否满足当前二分值

    AC code

    #include <bits/stdc++.h>
    
    using namespace std;
    
    const int NUM = 3e5 + 100;
    
    int data[NUM][10];
    
    bool check(int value, int n, int m, pair<int, int> &ans) {
        map<unsigned, int> s;
        for (int i = 0; i < n; ++i) {
            unsigned temp = 0;
            for (int j = 0; j < m; ++j) {
                temp <<= 1u;
                temp |= data[i][j] > value;
            }
            s.insert({temp, i});
        }
        unsigned tar = -1u >> (sizeof(int) * 8 - m);
        for (auto iter1 = s.begin(); iter1 != s.end(); ++iter1) {
            for (auto iter2 = iter1; iter2 != s.end(); ++iter2) {
                if ((iter1->first | iter2->first) == tar) {
                    ans.first = iter1->second;
                    ans.second = iter2->second;
                    return true;
                }
            }
        }
        return false;
    }
    
    void solve() {
        int n, m;
        cin >> n >> m;
        int l = INT_MAX, r = 0;
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < m; ++j) {
                cin >> data[i][j];
                l = min(l, data[i][j]);
                r = max(r, data[i][j]);
            }
        }
        int mid, cnt = r - l;
        pair<int, int> ans;
        while (cnt > 0) {
            int step = cnt / 2;
            mid = l + step;
            if (check(mid, n, m, ans)) {
                l = mid + 1;
                cnt -= step + 1;
            } else
                cnt /= 2;
        }
        cout << ans.first + 1 << " " << ans.second + 1 << endl;
    }
    
    signed main() {
        ios_base::sync_with_stdio(false);
        cin.tie(nullptr);
        cout.tie(nullptr);
    #ifdef ACM_LOCAL
        freopen("in.txt", "r", stdin);
        freopen("out.txt", "w", stdout);
        long long test_index_for_debug = 1;
        char acm_local_for_debug;
        while (cin >> acm_local_for_debug) {
            cin.putback(acm_local_for_debug);
            if (test_index_for_debug > 20) {
                throw runtime_error("Check the stdin!!!");
            }
            auto start_clock_for_debug = clock();
            solve();
            auto end_clock_for_debug = clock();
            cout << "Test " << test_index_for_debug << " successful" << endl;
            cerr << "Test " << test_index_for_debug++ << " Run Time: "
                 << double(end_clock_for_debug - start_clock_for_debug) / CLOCKS_PER_SEC << "s" << endl;
            cout << "--------------------------------------------------" << endl;
        }
    #else
        solve();
    #endif
        return 0;
    }
    
    展开全文
  • tensorflow2学习第一天

    2020-12-21 13:26:02
    第一天学习数据类型 数据类型 import tensorflow as tf ...对于tensorflow2来说,tensor为其格式主要对与数据的维度大于2 aa = tf.constant(1.2) #创建一标量 type(a) float type(aa) tensorflow.python.framewo
  • 多为数组就是一个维度更高(通常大于2)、可访问的向量。数组也要求元素是同一类型的。 1、创建多维数组 用函数array()建一变量变成多为数组,基本格式为: array(x,dim= ,dimnames = ) x: 为数据向量作为多维...

    数据结构1

    三、多维数组(高维数据)

    向量/矩阵向更高维度的自然推广。多为数组就是一个维度更高(通常大于2)、可访问的向量。数组也要求元素是同一类型的。

    1、创建多维数组

    用函数array()建一个变量变成多为数组,基本格式为:

    array(x,dim= ,dimnames = )
    

    x: 为数据向量作为多维数组的元素。
    dim:设置多维数组各维度的维数。
    dimnames:设置多维数组各维度的名称。

    > a1<-array(1:24,dim=c(3,4,2))
    > a1
    , , 1
    
         [,1] [,2] [,3] [,4]
    [1,]    1    4    7   10
    [2,]    2    5    8   11
    [3,]    3    6    9   12
    
    , , 2
    
         [,1] [,2] [,3] [,4]
    [1,]   13   16   19   22
    [2,]   14   17   20   23
    [3,]   15   18   21   24
    
    > a1<-array(1:24,dim=c(3,4,2),dimnames = list(c("r1","r2","r3"),c("c1","c2","c3","c4"),c("k1","k2")))
    #对各个维度进行命名
    > a1
    , , k1
    
       c1 c2 c3 c4
    r1  1  4  7 10
    r2  2  5  8 11
    r3  3  6  9 12
    
    , , k2
    
       c1 c2 c3 c4
    r1 13 16 19 22
    r2 14 17 20 23
    r3 15 18 21 24
    

    2、构建多为数组子集`

    > a1[2,4,2]   #提取第2行,第4列,第2页的元素
    [1] 23
    > a1["r2","c4","k2"] #提取第r2,第c4列,第k2页的元素
    [1] 23
    > a1[1,2:4,1:2]  #提取第1行,第24列,第12页的元素
       k1 k2
    c2  4 16
    c3  7 19
    c4 10 22
    > a1[,,2]      #提取第2页的所有元素
       c1 c2 c3 c4
    r1 13 16 19 22
    r2 14 17 20 23
    r3 15 18 21 24
    > dim(a1)      #返回多维数组a1的各个维度的维数
    [1] 3 4 2
    

    向张敬信老师表达敬意,以上为上课内容的借鉴、收集、整理、与归纳。

    学习不易,请留下你的痕迹!

    展开全文
  • SVM(五):SVM小结

    2020-03-21 22:20:24
    SVM在解决高维特征的分类问题和回归问题很有效,在特征维度大于样本时依然有很好的效果。 仅仅使用一部分支持向量来做超平面的决策,无需依赖全部数据。有大量的核函数可以使用,从而可以很灵活的来解决各种非线性...
  • 1.基础 支持向量机(SVMs)是一套用于分类、回归和异常值检测的监督学习方法。 支持向量机的优点是: 在高维空间中有效。在维度数量大于样本数量的...如果特征大于样本,则在选择核函数时避免过拟合,正则项至...
  • 1.3 生成张量 张量就是多维数组,张量的阶就是张量的维度。标量就是0阶张量,例如 s=1, s=2...当张量的维度大于2时我们没有特意地取名而是直呼n维张量。我们可以判断张量的维度通过' = '后面有多少' [ '。Tensor...
  • 1.3 生成张量 张量就是多维数组,张量的阶就是张量的维度。标量就是0阶张量,例如 s=1, s=2...当张量的维度大于2时我们没有特意地取名而是直呼n维张量。我们可以判断张量的维度通过' = '后面有多少' [ '。Tensor...
  • 无监督学习 定义:只从无标签的数据中学习出一些有用的模式 典型的无监督学习:深度学习中只考虑前两个问题即可 ...过完备基向量是指:基向量个数远远大于其支撑空间维度,因此这些基向量一般不具备独..
  • 数据结构 向量: 向量是用于存储数值型、字符型或逻辑型数据的一维数组。 可通过函数c()可用来创建向量 ...数组(array)与矩阵类似,但是维度可以大于2 数组可通过array函数创建 实例操作: 数据框 由...
  • 支持向量机是一种有监督的学习算法...• 在样本的维度(特征个数大于样本数时仍有效 • 在决策函数中只使用训练数据的一部分,即支持向量,省内存 • 通用性高,根据不同的决策函数使用不同的核函数,可以使用常见...
  • 1.Review of Linear Algebra

    2021-01-01 18:11:48
    Theorem 1.1 说明空间维数和基向量个数的关系,Theorem 1.2说明任何低于空间维数的线性无关向量组都可以扩充为一组基,Theorem 1.3说明矩阵乘积的上限模(sup norm)不大于两个矩阵上限模的乘积再乘以二者的公共维度...
  • 可通过函数c()可用来创建向量实例操作:矩阵:矩阵是一二位数组,只是每元素都拥有相同的模式(数值型、字符型或逻辑型)可通过函数matrix()创建矩阵实例操作:数组:数组(array)与矩阵类似,但是维度可以大于2...
  • R语言数据结构的分类

    2019-06-19 14:51:24
    数据集 定义:指的是由数据构成的一矩形数组 数据结构的类型 1)向量 定义:向量是用于存储数值型、字符型或逻辑型数据的一维数组 ...定义:数组(array)与矩阵类似,但是维度可以大于2 通过ar...
  • 3.15 我要检查一个数是不是在另外两个数之间,为什么if(abc)不行? 3.16 为什么如下的代码不对?inta=1000,b=1000;longintc=a*b; 3.17 为什么下面的代码总是给出0?doubledegC,degF;degC=5.0/9*(degF-32); 3.18 ...
  • 《你必须知道的495C语言问题》

    热门讨论 2010-03-20 16:41:18
    3.15 我要检查一个数是不是在另外两个数之间,为什么if(a b c)不行? 40 3.16 为什么如下的代码不对?int a=1000, b=1000; long int c=a * b; 40 3.17 为什么下面的代码总是给出0?double degC, degF; degC= ...
  • 3.15 我要检查一个数是不是在另外两个数之间,为什么if(a b c)不行? 40 3.16 为什么如下的代码不对?int a=1000, b=1000; long int c=a * b; 40 3.17 为什么下面的代码总是给出0?double degC, degF; degC= ...
  • 3.15 我要检查一个数是不是在另外两个数之间,为什么if(abc)不行?  3.16 为什么如下的代码不对?inta=1000,b=1000;longintc=a*b;  3.17 为什么下面的代码总是给出0?doubledegC,degF;degC=5.0/9*(degF-32);  ...
  • 3.15 我要检查一个数是不是在另外两个数之间,为什么if(a b c)不行? 3.16 为什么如下的代码不对?int a=1000, b=1000; long int c=a * b; 3.17 为什么下面的代码总是给出0?double degC, degF; degC= 5.0 / 9 * ...
  •  3.15 我要检查一个数是不是在另外两个数之间,为什么if(abc)不行? 3.16 为什么如下的代码不对?inta=1000,b=1000;longintc=a*b; 3.17 为什么下面的代码总是给出0?doubledegC,degF;degC=5.0/9*(degF-32); ...
  • scikit-learn中关于SVM的一些常识

    千次阅读 2017-03-23 16:17:36
    (2)对于维数大于样本数目的情况也很有效; (3)在决策函数(待优化的函数)中,只有部分训练样本点会被用到(仅有支持向量会对决策函数有影响),因此,对于样本空间很大的情况,能够节省内存; (4)对于线性不...
  • 3.15 我要检查一个数是不是在另外两个数之间,为什么if(a )不行? 69 3.16 为什么如下的代码不对?int a=1000, b=1000; long int c=a * b; 69 3.17 为什么下面的代码总是给出0?double degC, degF; degC= 5.0 / 9...
  • 1125day7

    2020-11-26 21:00:36
    如果特征维度远远大于样本个数,svm表现一般 svm在样本巨大时使用和函数时计算量很大 非线性数据的和函数选择没有标准 svm对缺失和噪声数据敏感 2.SVM的超参数C如何调节 C和正则化参数lambda相反,过拟合时...
  • 3.15 我要检查一个数是不是在另外两个数之间,为什么if(a b c)不行? 3.16 为什么如下的代码不对?int a=1000, b=1000; long int c=a * b; 3.17 为什么下面的代码总是给出0?double degC, degF; degC= 5.0 / 9 * ...
  • 我们构造了三体置换对称超球谐函数,用于三空间维度(3D)的非相对论三体Schrödinger方程。 我们根据S3⊗SO(3)rot⊂O(2)⊗SO(3)rot⊂U(3)⋊S2⊂O(6)子群链标记状态向量,其中S3是三体置换群 S2是它的两...
  • ``` # -*- coding:UTF-8 -*- import tensorflow as tf ...CHECKPOINT_PATH = './model/seq2seq_ckpt' # checkpoint... # 解码器读取目标句子每位置的词向量,输出的dec_outputs为每一步顶层LSTM的输出 # dec...
  • 6、主成分个数的选择(即要降的维度) 7、使用建议 8、运行结果 9、使用scikit-learn库中的PCA实现降维 七、异常检测 Anomaly Detection 1、高斯分布(正态分布) 2、异常检测算法 3、评价的好坏,以及的选取 4...

空空如也

空空如也

1 2
收藏数 32
精华内容 12
关键字:

向量维度大于向量个数