精华内容
下载资源
问答
  • 支持向量回归问题。 在支持向量回归中,最后...但是我的过程中发展,会有微小差别,比如alpha等于0应该在带内,但是他在带外,虽然不明显,的特别小,但是我想问一下这个的原因是什么?内外网都搜索了没有相关回答
  • 归纳一下,下面的代码主要了这些事:创建一个向量创建一个矩阵创建一个稀疏矩阵选择元素展示一个矩阵的属性对多个元素同时应用某种操作找到最大值和最小值计算平均值、方差和标准矩阵变形转置向量或矩阵展开一个...

    在下面的代码里面,我们利用numpy和scipy做了很多工作,每一行都有注释,讲解了对应的向量/矩阵操作。

    归纳一下,下面的代码主要做了这些事:

    创建一个向量

    创建一个矩阵

    创建一个稀疏矩阵

    选择元素

    展示一个矩阵的属性

    对多个元素同时应用某种操作

    找到最大值和最小值

    计算平均值、方差和标准差

    矩阵变形

    转置向量或矩阵

    展开一个矩阵

    计算矩阵的秩

    计算行列式

    获取矩阵的对角线元素

    计算矩阵的迹

    计算特征值和特征向量

    计算点积

    矩阵的相加相减

    矩阵的乘法

    计算矩阵的逆

    一起来看代码吧:

    # 加载numpy库

    import numpy as np

    from scipy import sparse

    # 创建一个一维数组表示一个行向量

    vector_row = np.array([1, 2, 3])

    # 创建一个一维数组表示一个列向量

    vector_column = np.array([[1], [2], [3]])

    # 创建一个二维数组表示一个矩阵

    matrix1 = np.array([[1, 2], [1, 2], [1, 2]])

    # 利用Numpy内置矩阵数据结构

    matrix1_object = np.mat([[1, 2], [1, 2], [1, 2]])

    # 创建一个新的矩阵

    matrix2 = np.array([[0, 0], [0, 1], [3, 0]])

    # 创建一个压缩的稀疏行(CSR)矩阵

    matrix2_sparse = sparse.csc_matrix(matrix2)

    # 查看稀疏矩阵

    print(matrix2_sparse)

    # 创建一个更大的矩阵

    matrix_large = np.array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],

    [0, 1, 0, 0, 0, 0, 0, 0, 0, 0],

    [3, 0, 0, 0, 0, 0, 0, 0, 0, 0]])

    # 创建一个CSR矩阵

    matrix_large_sparse = sparse.csr_matrix(matrix_large)

    # 查看更大的稀疏矩阵

    print(matrix_large_sparse)

    # 创建一个行向量

    vector = np.array([1, 2, 3, 4, 5, 6])

    # 创建矩阵

    matrix_vector = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

    # 选择向量的第三个元素

    print(vector[2])

    # 选择第二行第二列

    print(matrix_vector[1, 1])

    # 选取一个向量的所有元素

    print(vector[:])

    # 选取从0开始一直到第3个(包含第3个)元素

    print(vector[:3])

    # 选取第3个元素之后的全部元素

    print(vector[3:])

    # 选取最后一个元素

    print(vector[-1])

    # 选取矩阵的第1行和第2行以及所有列

    print(matrix_vector[:2, :])

    # 选取所有行以及第2列

    print(matrix_vector[:, 1:2])

    # 选取所有行以及第2列并转换成一个新的行向量

    print(matrix_vector[:, 1])

    # 创建新的矩阵

    matrix3 = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])

    # 查看行数和列数

    print(matrix3.shape)

    # 查看元素数量

    print(matrix3.size)

    # 查看维数

    print(matrix3.ndim)

    # 下面使用的矩阵是matrix_vector

    # 创建一个匿名函数,返回输入值加上100以后的值

    add_100 = lambda i: i+100

    # 创建向量转化函数

    vectorized_add_100 = np.vectorize(add_100)

    # 对矩阵的所有元素应用这个函数

    print(vectorized_add_100(matrix_vector))

    # 用后矩阵本身不变

    print(matrix_vector)

    # 连续使用

    print(vectorized_add_100(vectorized_add_100(matrix_vector)))

    # 返回最大的元素

    print(np.max(matrix_vector))

    # 返回最小元素

    print(np.min(matrix_vector))

    # 找到每一列的最大元素

    print(np.max(matrix_vector, axis=0))

    # 找到每一行最大的元素

    print(np.max(matrix_vector, axis=1))

    # 返回平均值

    print(np.mean(matrix_vector))

    # 返回方差

    print(np.var(matrix_vector))

    # 返回标准差

    print(np.std(matrix_vector))

    # 求每一列的平均值

    print(np.mean(matrix_vector, axis=0))

    # 求每一行的方差

    print(np.var(matrix_vector, axis=1))

    # 将matrix3矩阵变为2×6矩阵

    matrix4 = matrix3.reshape(2, 6)

    print(matrix4)

    # 上面的变形要求前后元素个数相同,且不会改变元素个数

    print(matrix4.size)

    # reshape时传入参数-1意味着可以根据需要填充元素

    print(matrix3.reshape(1, -1))

    # reshape如果提供一个整数,那么reshape会返回一个长度为该整数值的一维数组

    print(matrix3.reshape(12))

    # 转置matrix_vector矩阵

    print(matrix_vector.T)

    # 严格地讲,向量是不能被转置的

    print(vector.T)

    # 转置向量通常指二维数组表示形式下将行向量转换为列向量或者反向转换

    print(np.array([[1, 2, 3, 4, 5, 6]]).T)

    # 将matrix_vector矩阵展开

    print(matrix_vector.flatten())

    # 将矩阵展开的另一种策略是利用reshape创建一个行向量

    print(matrix_vector.reshape(1, -1))

    # 创建用于求秩的新矩阵

    matrix5 = np.array([[1, 1, 1], [1, 1, 10], [1, 1, 15]])

    # 计算矩阵matrix5的秩

    print(np.linalg.matrix_rank(matrix5))

    # 创建用于行列式求解的新矩阵

    matrix6 = np.array([[1, 2, 3], [2, 4, 6], [3, 8, 9]])

    # 求解矩阵matrix6的行列式

    print(np.linalg.det(matrix6))

    # 返回矩阵的对角线元素

    print(matrix6.diagonal())

    # 返回主对角线向上偏移量为1的对角线元素

    print(matrix6.diagonal(offset=1))

    # 返回主对角线向下偏移量为1的对角线元素

    print(matrix6.diagonal(offset=-1))

    # 返回矩阵的迹

    print(matrix6.trace())

    # 求迹的另外的方法(返回对角线元素并求和)

    print(sum(matrix6.diagonal()))

    # 创建一个求解特征值、特征向量的矩阵

    matrix7 = np.array([[1, -1, 3], [1, 1, 6], [3, 8, 9]])

    # 计算特征值和特征向量

    eigenvalues, eigenvectors = np.linalg.eig(matrix7)

    # 查看特征值

    print(eigenvalues)

    # 查看特征向量

    print(eigenvectors)

    # 构造两个点积(数量积)所需向量

    vector_a = np.array([1, 2, 3])

    vector_b = np.array([4, 5, 6])

    # 计算点积

    print(np.dot(vector_a, vector_b))

    # Python 3.5+ 版本可以这样求解点积

    print(vector_a @ vector_b)

    # 构造两个可用于加减的矩阵

    matrix_a = np.array([[1, 1, 1], [1, 1, 1], [1, 1, 2]])

    matrix_b = np.array([[1, 3, 1], [1, 3, 1], [1, 3, 8]])

    # 两矩阵相加

    print(np.add(matrix_a, matrix_b))

    # 两矩阵相减

    print(np.subtract(matrix_a, matrix_b))

    # 直接用+/-也可以做矩阵加减

    print(matrix_a + matrix_b)

    print(matrix_a - matrix_b)

    # 构造两个可用于乘法的小矩阵

    matrix_c = np.array([[1, 1], [1, 2]])

    matrix_d = np.array([[1, 3], [1, 2]])

    # 两矩阵相乘

    print(np.dot(matrix_c, matrix_d))

    # Python 3.5+ 版本可以这样求解矩阵乘法

    print(matrix_c @ matrix_d)

    # 我们也可以把两矩阵对应元素相乘,而非矩阵乘法

    print(matrix_c * matrix_d)

    # 创建一个用于求逆的矩阵

    matrix8 = np.array([[1, 4], [2, 5]])

    # 计算矩阵的逆

    print(np.linalg.inv(matrix8))

    # 验证一个矩阵和它的逆矩阵相乘等于I(单位矩阵)

    print(matrix8 @ np.linalg.inv(matrix8))

    测试结果:

    (2, 0) 3

    (1, 1) 1

    (1, 1) 1

    (2, 0) 3

    3

    5

    [1 2 3 4 5 6]

    [1 2 3]

    [4 5 6]

    6

    [[1 2 3]

    [4 5 6]]

    [[2]

    [5]

    [8]]

    [2 5 8]

    (3, 4)

    12

    2

    [[101 102 103]

    [104 105 106]

    [107 108 109]]

    [[1 2 3]

    [4 5 6]

    [7 8 9]]

    [[201 202 203]

    [204 205 206]

    [207 208 209]]

    9

    1

    [7 8 9]

    [3 6 9]

    5.0

    6.666666666666667

    2.581988897471611

    [4. 5. 6.]

    [0.66666667 0.66666667 0.66666667]

    [[ 1  2  3  4  5  6]

    [ 7  8  9 10 11 12]]

    12

    [[ 1  2  3  4  5  6  7  8  9 10 11 12]]

    [ 1  2  3  4  5  6  7  8  9 10 11 12]

    [[1 4 7]

    [2 5 8]

    [3 6 9]]

    [1 2 3 4 5 6]

    [[1]

    [2]

    [3]

    [4]

    [5]

    [6]]

    [1 2 3 4 5 6 7 8 9]

    [[1 2 3 4 5 6 7 8 9]]

    2

    0.0

    [1 4 9]

    [2 6]

    [2 8]

    14

    14

    [13.55075847  0.74003145 -3.29078992]

    [[-0.17622017 -0.96677403 -0.53373322]

    [-0.435951    0.2053623  -0.64324848]

    [-0.88254925  0.15223105  0.54896288]]

    32

    32

    [[ 2  4  2]

    [ 2  4  2]

    [ 2  4 10]]

    [[ 0 -2  0]

    [ 0 -2  0]

    [ 0 -2 -6]]

    [[ 2  4  2]

    [ 2  4  2]

    [ 2  4 10]]

    [[ 0 -2  0]

    [ 0 -2  0]

    [ 0 -2 -6]]

    [[2 5]

    [3 7]]

    [[2 5]

    [3 7]]

    [[1 3]

    [1 4]]

    [[-1.66666667  1.33333333]

    [ 0.66666667 -0.33333333]]

    [[1.00000000e+00 0.00000000e+00]

    [1.11022302e-16 1.00000000e+00]]

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • SVM能够线性或者非线性的分类,回归,甚至异常值检测,适合应用于复杂但中小规模数据集的分类问题。 线性支持向量机 下图是鸢尾花数据集一部分,两个种类能够很容易被一条线分开,左图显示了线性分类器做出的三种...

    SVM能够做线性或者非线性的分类,回归,甚至异常值检测,适合应用于复杂但中小规模数据集的分类问题。
    线性支持向量机
    下图是鸢尾花数据集一部分,两个种类能够很容易被一条线分开,左图显示了线性分类器做出的三种可能边界。虚线是一条很差的判定边界,不能正确的划分类别,另外两个线性模型的判定边界虽然能分开,但他们的判定边界离样本点太近,对新数据的表现可能不好。右图中 SVM 分类器的判定边界实线,不仅分开了两种类别,而且还尽可能地远离了最靠近的训练数据点。你可以认为 SVM 分类器在两种类别之间保持了一条尽可能宽敞的街道(图中平行的虚线),其被称为最大间隔分类。
    在这里插入图片描述
    我们注意到添加更多的样本点在“街道”外并不会影响到判定边界,因为判定边界是由位于“街道”边缘的样本点确定的,这些样本点被称为“支持向量”(上图中被圆圈圈起来的点),用中学生的话说就是找两个类别中相距最近的两点,连起来,求它们的法线。

    硬间隔分类:严格规定所有数据都不在中间街道上,分布在两边。存在两个问题:1.只对线性可分的数据起作用。2.对异常点敏感。下面左图很难找到硬间隔,右图判定边界很难一般化在这里插入图片描述
    软间隔分类:为了避免硬间隔的问题,在保持街道尽可能大和避免间隔违规之间找到一个良好的平衡。可以使用更加软性的模型。
    SKlearn的SVM类中是通过C超参数(惩罚系数)来控制平衡,下图显示了在非线性可分隔的数据集上,两个软间隔SVM分类器的判定边界。左边图中,使用了较大的C值,导致更少的间隔违规,但是间隔较小。右边的图,使用了较小的C值,间隔变大了,但是许多数据点出现在了“街道”上。然而,第二个分类器似乎泛化地更好:事实上,在这个训练数据集上减少了预测错误,因为实际上大部分的间隔违规点出现在了判定边界正确的一侧。
    在这里插入图片描述

    如果SVM模型过拟合,可以通过减小超参数C去调整。
    SKLearn代码,生成模型为上右图

    import numpy as np
    from sklearn import datasets
    from sklearn.pipeline import Pipeline
    from sklearn.preprocessing import StandardScaler
    from sklearn.svm import LinearSVC
    
    iris = datasets.load_iris()
    X = iris["data"][:, (2, 3)] # petal length, petal width
    y = (iris["target"] == 2).astype(np.float64) # Iris-Virginica
    
    svm_clf = Pipeline((
            ("scaler", StandardScaler()),
            ("linear_svc", LinearSVC(C=1, loss="hinge")),
        ))
    
    svm_clf.fit(X, y)
    
    Then, as usual, you can use the model to make predictions:
    
    >>> svm_clf.predict([[5.5, 1.7]])
    array([ 1.])
    

    转自SKLearn实战

    展开全文
  • 圆柱面的法向量

    2019-09-29 14:09:20
    今天老师让一个圆柱面的表面模型,由于需要添加光照,所以需要求得每个点的法向量,但是同时由于圆柱面是可以旋转变换的所以不能单纯的用CP3(x,y,z),与CP3(0,y,0)的获取法向量。后来想到,由于圆柱面具有前后...

    今天老师让做一个圆柱面的表面模型,由于需要添加光照,所以需要求得每个点的法向量,但是同时由于圆柱面是可以旋转变换的所以不能单纯的用CP3(x,y,z),与CP3(0,y,0)的差获取法向量。后来想到,由于圆柱面具有前后对称性,所以,可以利用前后两个相对的顶点相差得到某个点的法向量。

    具体如下:

    上表是一个圆柱面侧面的展开图,假设我们现在将圆柱面沿着周向分为N1段,沿着高度方向分为N2,V点的两个分量分别代表高度方向和周向,则两个相对的点的坐标分别为VS(X,(Y+N1/2)%N1),VE(X,Y)。利用这两个点就可以求得VS的法向量。

    转载于:https://www.cnblogs.com/gaoteng/archive/2011/09/10/2350381.html

    展开全文
  • 在下面的代码里面,我们利用numpy和scipy了很多工作,每一行都有注释,讲解了对应的向量/矩阵操作。 归纳一下,下面的代码主要了这些事: 创建一个向量 创建一个矩阵 创建一个稀疏矩阵 选择元素 展示一个...
  • 最近一直在计算旋转矩阵,奈何高中数学实在是,大学高等数学也不行,线性代数也不行,现在起研究来真是要了我这个秃头粥的老命。只能边学习边应用了。 第一个:对某一向量进行旋转平移,等于是在其左边乘了一个...

    最近一直在计算旋转矩阵,奈何高中数学实在是差,大学高等数学也不行,线性代数也不行,现在做起研究来真是要了我这个秃头粥的老命。只能边学习边应用了。

    第一个:对某一向量进行旋转平移,等于是在其左边乘了一个矩阵。  (B= R*A)   若已知A、B, 需要求R,按照最小二乘公式: RA*AT = B*AT----》R=(B*AT)(A*AT)-1

    (谁能想到我居然在左边和右边还纠结了很久,sangxinbingkuang)

    第二个:绕某一轴旋转

    绕x轴

    绕y轴

    绕z轴

    第三个: 已知平面的法向量,将任意向量投影到平面,求投影后的向量

    推理过程如下(劣质美工画):

     

    展开全文
  • TSNE高维向量降维3D可视化

    千次阅读 2019-03-23 11:02:04
    搞深度学习时可能会遇到想可视化神经网络某一层的输出向量的需求,我最近就遇到了这样的需求,需要对网络的降维结果进行可视化,我这里对3D可视化一下简单的介绍。主要还是参考了网上很多大神的写法。 TSNE和PCA两...
  • 1、支持向量机是一种有监督的学习方法,可以用来分类、回归和离群点检测。 2、支持向量机的优缺点: 优点 在高维空间是有效的当特征的维数比样本数量多的时候仍然有效在决策函数中仅使用支持向量,能够节省内存...
  • 向量着实是高中数学里的重要内容,但是如今的教学将它处理得实在是太了,沦落成代入公式和计算。向量是通向从一维到高维,从数量到空间的桥梁。其中起到关键作用的,正是那个被无数学生和老师遗忘的平面/空间向量...
  • 首先我们将样本为标记:对于每一个 x,都要计算出它的特征 f,f 为一个向量:如果下式成立,就可以预测 y 等于 1,也就是为正样本:但是如何选取参数呢?我们最小化下面这个函数的时候,就可以得到参数向量:现在...
  • 数学建模之向量自回归模型

    千次阅读 2020-07-16 13:16:24
    EverydayOneCat 非常快乐/十分快乐.gif ...2、如果非平稳,我们不忙着做差分,我们先来看看协整关系检验:简单的说就是变量自身非平稳,但其线性组合却是平稳的,这种组合反映了变量之间长期稳定的比例
  • 在x向量上应用变分贝叶斯HMM以产生分输出 分数化输出 有关完整食谱的更多详细信息,请参见F.Landini,J.Profant,M.Diez,L.Burget: VBx)的 如果您对VBx的原始版本(为第二次DIHARD挑战赛准备)感兴趣,请参阅...
  • matlab之向量中后一元素减前一元素

    千次阅读 2017-06-19 21:46:21
    一维向量中后一元素减前一元素,有两种实现方法。 首先假设 len=length(X); 方法一,平移向量,再相减temp=X(2:end); temp(len)=0; %补0 ans=temp-X;... %剔除最后的数方法二,一阶分ans=diff(X);
  • Problem B: 向量的运算

    2020-05-28 10:38:52
    我的代码很,但是我想分享的部分是 << 重载的那部分。感觉稍微简洁一点, 时间比较短,所以不多解释。 如果有人不懂欢迎在评论区讨论 大佬勿喷,欢迎指正。 #include <iostream> using namespace ...
  • 归纳一下,下面的代码主要了这些事:创建一个向量创建一个矩阵创建一个稀疏矩阵选择元素展示一个矩阵的属性对多个元素同时应用某种操作找到最大值和最小值计算平均值、方差和标准矩阵变形转置向量或矩阵展开一个...
  • 方法一:通过下面的蓝图可实现从0度到360度旋转(朝向两个目标点character和self两个物体) 方法二:计算两个向量的夹角
  • 一、向量自回归检验 ...如果不平稳,则先转化成平稳的(可采用分,或者取对数等)。 若平稳,则确定滞后阶数P。 带* 表示最优的阶数。 外生性检验(格兰杰检验) 确定滞后值是否对被解释变量是否
  • 首先我们将样本为标记:对于每一个 x,都要计算出它的特征 f,f 为一个向量:如果下式成立,就可以预测 y 等于 1,也就是为正样本:但是如何选取参数呢?我们最小化下面这个函数的时候,就可以得到参数向量:现在...
  • 线性支持向量机 ...这种情况虽然不是不可分的,但是由于其中的一个蓝色点不满足线性可分支持向量机中的不等式约束,导致模型的泛化效果很。 正常情况下(没有那个蓝色异常点)分离超平面应该是红色的那条线...
  • 因此这里一点总结。 欧式距离 最简单的,从小都会,是高维空间中两个点的直线距离(以二维空间为例就很好理解)。 闵可夫斯基距离 曼哈顿距离就是模的和,比如在二维空间,就是两点的的绝对值之和。 马氏...
  • 关于W2V:简单的个笔记 TF-IDF ——> BM25 Co-Occurrence ——> Word2Vec w2v主流的两种实现算法:  1.CBOW :周围词预估中心词   缺点:每个周围词学习效果相对一些  2.Skip-Gram :...
  • DE算法Matlab程序

    2019-04-12 14:31:15
    差分进化算法在寻优的过程中,首先,从父代个体间选择两个个体进行向量做差生成差分矢量;其次,选择另外一个个体与差分矢量求和生成实验个体;然后,对父代个体与相应的实验个体进行交叉操作,生成新的子代个体;...
  • 与统计机器学习的精密思维相比,传统的机器学习基本上属于摸着石头过河,用传统的机器学习方法构造分类系统完全成了一种技巧,一个人的结果可能很好,另一个人差不多的方法出来却很,缺乏指导和原则。...
  • C++11新特性:范围for(range for) 1 for (declaration: ...vector对象可以高效地增长,在定义vector对象的时候设定其大小也就没什么必要了,事实上如果这么性能可能更。 C++11新特性:cbegin(...
  • PPMI这种高维稀疏的单词表示一般认为比word2vec要,尤其是在analogy问题上面。word2vec引起人注意的一个很重要的点就在于在analogy上面远远超过了传统的词向量模型。实际上,这个工具包的作者发现,当我们吧word2...
  • DE算法介绍.pptx

    2020-04-04 18:03:32
    基本思想:从一个随机产生的初始种群开始,从父代个体间选择两个个体进行向量做差生成差分矢量;其次,选择另外一个个体与差分矢量求和生成实验个体;然后,对父代个体与相应的实验个体进行交叉操作,生成新的子代...
  • 首先画个图(图1),要不然空间想象能力的话容易犯糊涂。首先对图1个大致的说明,红色的半圆表示赤道,蓝色的圆弧表示本初子午线(也就是经度为0的子午线)。球最上方是北极点,点A和点B分别为要计算的两个点,...
  • 简单说明了有限元与有限差分法的区别:有限差分是对微分算子做差分近似,有限元是对待求函数做基函数展开近似。这一节继续介绍伽辽金有限元算法。这里特意强调伽辽金有限元算法,是因为还有另一种基于泛函和变分的 ...
  • 帮实验室流场的事情,因此临时在毕设的同时穿插着看了几篇流场的论文。感慨就是英文太、数学基础不够,C++不熟悉。总之,自己距离目标很遥远。今后努力的目标是,回顾高等代数、微分几何等知识。学习C++、...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 227
精华内容 90
关键字:

向量做差