小编Xia*_*gyu的帖子

scikit-learn TruncatedSVD解释的方差比不是降序

与sklearn的PCA不同,TruncatedSVD的解释方差比率不是降序.我查看了源代码,似乎他们使用不同的方式计算解释的方差比:

TruncatedSVD:

U, Sigma, VT = randomized_svd(X, self.n_components,
                              n_iter=self.n_iter,
                              random_state=random_state)
X_transformed = np.dot(U, np.diag(Sigma))
self.explained_variance_ = exp_var = np.var(X_transformed, axis=0)
if sp.issparse(X):
    _, full_var = mean_variance_axis(X, axis=0)
    full_var = full_var.sum()
else:
    full_var = np.var(X, axis=0).sum()
self.explained_variance_ratio_ = exp_var / full_var
Run Code Online (Sandbox Code Playgroud)

PCA:

U, S, V = linalg.svd(X, full_matrices=False)
explained_variance_ = (S ** 2) / n_samples
explained_variance_ratio_ = (explained_variance_ /
                             explained_variance_.sum())
Run Code Online (Sandbox Code Playgroud)

PCA使用sigma直接计算explain_variance,由于sigma按降序排列,explain_variance也按降序排列.另一方面,TruncatedSVD使用变换矩阵的列的方差来计算explain_variance,因此方差不一定按降序排列.

这是否意味着我需要explained_variance_ratio从头TruncatedSVD开始排序才能找到前k个主要组件?

python svd pca scikit-learn

11
推荐指数
1
解决办法
1371
查看次数

(i:j:k)numpy切片中j的默认值是多少?

我一直在阅读scumpy.org上的numpy i:j:k切片教程.在第二个例子后,它说

假设n是要切片的维度中的元素数.然后,如果没有给出其默认值为0 K> 0N - 1ķ<0 .如果没有给出j,则对于k> 0,默认为n ; 对于k <0,默认为-1.如果没有给出k,则默认为1.

然而:

>>> import numpy as np
>>> x = np.array([0,1,2,3,4])
>>> x[::-1]
array([4, 3, 2, 1, 0])
Run Code Online (Sandbox Code Playgroud)

如果j默认为-1,那么x[:-1:-1]应该相当于x[::-1],但是

>>> x[:-1:-1]
array([], dtype=int64)
>>> x[:-(len(x)+1):-1]
array([4, 3, 2, 1, 0])
Run Code Online (Sandbox Code Playgroud)

>>> x[:-(len(x)+1):-1]
array([4, 3, 2, 1, 0])
Run Code Online (Sandbox Code Playgroud)

因此当 …

python numpy slice

6
推荐指数
1
解决办法
214
查看次数

Spark 历史服务器中的空白存储选项卡

当我们持久化 RDD 并对其执行操作时,Spark UI 的“存储”选项卡将显示有关该 RDD 的一些信息。然而,一旦作业完成,Spark历史服务器中的存储选项卡就是一个空白页。这似乎是 Spark 中的一个问题(SPARK-16859)。我想知道这个问题是否仍然存在。

apache-spark

5
推荐指数
0
解决办法
3966
查看次数

特征块不是左值?

我使用Eigen库及其块操作,根据https://eigen.tuxfamily.org/dox/group__TutorialBlockOperations.html,这些块都是左值和右值.但是以下程序无法编译:

#include "Eigen/Dense"
#include <iostream>

int main() {
  Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic> m(4, 4); 
  m << 1, 2, 3, 4,
       5, 6, 7, 8,
       9, 10, 11, 12, 
       13, 14, 15, 16; 
  Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic> &column = m.col(0);
} 
Run Code Online (Sandbox Code Playgroud)

在这个程序中,我想使用列作为矩阵m的引用,这样我就可以就地改变元素.错误消息是:

test_eigen_rvalue.cc: In function ‘int main()’:
test_eigen_rvalue.cc:11:73: error: invalid initialization of non-const reference of type ‘Eigen::Matrix<float, -1, -1>&’ from an rvalue of type ‘Eigen::DenseBase<Eigen::Matrix<float, -1, -1> >::ColXpr {aka Eigen::Block<Eigen::Matrix<float, -1, -1>, -1, 1, true>}’
   Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic> &column = m.col(0); …
Run Code Online (Sandbox Code Playgroud)

c++ eigen

3
推荐指数
1
解决办法
2827
查看次数

type HashPartitioner不是org.apache.spark.sql.SparkSession的成员

我使用spark-shell来试验Spark的HashPartitioner.错误如下所示:

scala> val data = sc.parallelize(List((1, 3), (2, 4), (3, 6), (3, 7)))
data: org.apache.spark.rdd.RDD[(Int, Int)] = ParallelCollectionRDD[0] at parallelize at <console>:24

scala> val partitionedData = data.partitionBy(new spark.HashPartitioner(2))
<console>:26: error: type HashPartitioner is not a member of org.apache.spark.sql.SparkSession
       val partitionedData = data.partitionBy(new spark.HashPartitioner(2))
                                                        ^

scala> val partitionedData = data.partitionBy(new org.apache.spark.HashPartitioner(2))
partitionedData: org.apache.spark.rdd.RDD[(Int, Int)] = ShuffledRDD[1] at partitionBy at <console>:26
Run Code Online (Sandbox Code Playgroud)

第三次操作有效时,第二次操作失败.为什么spark-shell会在org.apache.spark.sql.SparkSession的包中找到spark.HashPartitioner而不是org.apache.spark?

partitioner apache-spark

0
推荐指数
1
解决办法
1662
查看次数

Ctrl + w + Tab 在 vi​​m 中做什么

我在 vim 中打开了两个窗口,并试图在窗口之间切换,但不小心按下了Ctrl+w+Tab(而不是Ctrl + w + h)。如果光标当前在#include <boost/multi_array.hpp>,vim 将打开一个新的水平新窗口并打开文件 /usr/include/boost/multi_array/extent_range.hpp,并将光标留在该行上namespace multi_array{

如果我在.bashrrc文件中并在 a 上做同样的事情export,它将打开另一个窗口并.bashrc再次打开,光标位于export第一次出现。

我试图搜索这个快捷方式的用途,但找不到任何。我还检查了我的.vimrc但没有看到任何键映射。

vim

0
推荐指数
1
解决办法
824
查看次数

标签 统计

apache-spark ×2

python ×2

c++ ×1

eigen ×1

numpy ×1

partitioner ×1

pca ×1

scikit-learn ×1

slice ×1

svd ×1

vim ×1