随机正态值的scala-breeze矩阵

随机正态值的scala-breeze矩阵,scala,scala-breeze,Scala,Scala Breeze,我想要的结果与在python中使用 x=np.random.normal(0,1,(n个样本,n个特征)) 我试过: import breeze.linalg._ object HelloWorld { def main(args: Array[String]) { println("Start") val n_samples = 5 val n_features = 3 val normal01 = breeze.stats.distributions

我想要的结果与在python中使用

x=np.random.normal(0,1,(n个样本,n个特征))

我试过:

import breeze.linalg._

object HelloWorld {
  def main(args: Array[String]) {
    println("Start")

    val n_samples = 5
    val n_features = 3

    val normal01 = breeze.stats.distributions.Gaussian(0, 1)
    val samples = normal01.sample(n_features*n_features)

    val X = DenseMatrix(n_samples, n_features,  samples) // return an error



    //print(X)
  }
}

错误在哪里?

将矩阵创建行替换为:

val X = new DenseMatrix[Double](n_samples, n_features, samples.toArray)
然后修正前一行的错误


出于某种原因,这个构造函数似乎不在伴生对象中,因此您必须使用“new”关键字(这可能是Breeze中的一个bug,因此您可以将其作为问题归档)。此外,还需要将“样本”强制转换为常规Scala数组。

将矩阵创建行替换为:

val X = new DenseMatrix[Double](n_samples, n_features, samples.toArray)
然后修正前一行的错误


出于某种原因,这个构造函数似乎不在伴生对象中,因此您必须使用“new”关键字(这可能是Breeze中的一个bug,因此您可以将其作为问题归档)。此外,还需要将“样本”强制转换为常规Scala数组。

将矩阵创建行替换为:

val X = new DenseMatrix[Double](n_samples, n_features, samples.toArray)
然后修正前一行的错误


出于某种原因,这个构造函数似乎不在伴生对象中,因此您必须使用“new”关键字(这可能是Breeze中的一个bug,因此您可以将其作为问题归档)。此外,还需要将“样本”强制转换为常规Scala数组。

将矩阵创建行替换为:

val X = new DenseMatrix[Double](n_samples, n_features, samples.toArray)
然后修正前一行的错误


出于某种原因,这个构造函数似乎不在伴生对象中,因此您必须使用“new”关键字(这可能是Breeze中的一个bug,因此您可以将其作为问题归档)。此外,还需要将“样本”强制转换为常规Scala数组。

一个简单的替代实现:

val normal01 = breeze.stats.distributions.Gaussian(0, 1)
DenseMatrix.rand(n_samples, n_features, normal01)

.rand构造函数接受一个可选的随机生成器,默认为统一(0,1)

一个简单的替代实现:

val normal01 = breeze.stats.distributions.Gaussian(0, 1)
DenseMatrix.rand(n_samples, n_features, normal01)

.rand构造函数接受一个可选的随机生成器,默认为统一(0,1)

一个简单的替代实现:

val normal01 = breeze.stats.distributions.Gaussian(0, 1)
DenseMatrix.rand(n_samples, n_features, normal01)

.rand构造函数接受一个可选的随机生成器,默认为统一(0,1)

一个简单的替代实现:

val normal01 = breeze.stats.distributions.Gaussian(0, 1)
DenseMatrix.rand(n_samples, n_features, normal01)

.rand构造函数接受一个可选的随机生成器,默认为Uniform(0,1)

这是Python中带有种子的np.random.normal的解决方案(相同的种子生成相同的ramdom)


这是Python中np.random.normal的一个解决方案,带有一个种子(相同的种子生成相同的ramdom)


这是Python中np.random.normal的一个解决方案,带有一个种子(相同的种子生成相同的ramdom)


这是Python中np.random.normal的一个解决方案,带有一个种子(相同的种子生成相同的ramdom)


FWIW,我更喜欢保留需要“新建”的(int,int,array)构造函数,因为我希望“高级”构造函数(即需要数据结构布局知识的构造函数)与创建它们的常规方式不同。@dlwh我认为这个例子在线性代数工作表中有报道。它可能应该更新。FWIW,我更喜欢保留需要“new”的(int,int,array)构造函数,因为我希望“advanced”构造函数(即那些需要数据结构布局知识的构造函数)与创建它们的正常方式不同。@dlwh我想这个例子已经在线性代数工作表中报告过了。它可能应该更新。FWIW,我更喜欢保留需要“new”的(int,int,array)构造函数,因为我希望“advanced”构造函数(即那些需要数据结构布局知识的构造函数)与创建它们的正常方式不同。@dlwh我想这个例子已经在线性代数工作表中报告过了。它可能应该更新。FWIW,我更喜欢保留需要“new”的(int,int,array)构造函数,因为我希望“advanced”构造函数(即那些需要数据结构布局知识的构造函数)与创建它们的正常方式不同。@dlwh我想这个例子已经在线性代数工作表中报告过了。它可能应该更新。@9codeMan9这不是真的。它接受一个breeze.stats.distributions.Rand生成器。你是对的@dlwh我刚刚意识到我在我的库中使用了一个不允许语法的“breeze.jar”。我已经适当地修改了我的错误评论:-)@9codeMan9这不是真的。它接受一个breeze.stats.distributions.Rand生成器。你是对的@dlwh我刚刚意识到我在我的库中使用了一个不允许语法的“breeze.jar”。我已经适当地修改了我的错误评论:-)@9codeMan9这不是真的。它接受一个breeze.stats.distributions.Rand生成器。你是对的@dlwh我刚刚意识到我在我的库中使用了一个不允许语法的“breeze.jar”。我已经适当地修改了我的错误评论:-)@9codeMan9这不是真的。它接受一个breeze.stats.distributions.Rand生成器。你是对的@dlwh我刚刚意识到我在我的库中使用了一个不允许语法的“breeze.jar”。我已经适当地修改了我的错误评论:-)