
Daniel
26.12.2017
11:08:49
вектор * на случайное число?)

Alex
26.12.2017
11:09:43

Vasiliy
26.12.2017
11:10:06
тут про другое немного

Google

Oleg
26.12.2017
11:11:04

Alex
26.12.2017
11:11:10

Vasiliy
26.12.2017
11:11:45

Oleg
26.12.2017
11:11:57

Vasiliy
26.12.2017
11:12:16
тут говорится, что каждый вектор генерируется независимо от других векторов, при этом компоненты вектора могут быть зависимы

Alex
26.12.2017
11:12:21

Vasiliy
26.12.2017
11:13:02
хм, странно
т.е. если ты выставляешь корелляцию 1 между двумя компонентами, он тебе может разные сгенерить?

Oleg
26.12.2017
11:13:41
да
можно ли сделать вот так? https://t.me/scala_ru/116791

Alex
26.12.2017
11:13:56

Oleg
26.12.2017
11:14:24
берёшь матрицу ковариации

Google

Oleg
26.12.2017
11:14:49
она же - матрица корелляции, если все компоненты имеют дисперсию 1
делаешь разложение Холецкого
получается матрица A
умножаешь векторы на неё
получается выборка векторов с матрицей ковариации A * A^T

Vasiliy
26.12.2017
11:22:05
посмотри, что сгенерится

Alex
26.12.2017
11:24:03
@prutz1311 спасибо)

Vasiliy
26.12.2017
11:28:57

Alex
26.12.2017
11:32:12

Alexander
26.12.2017
11:40:53

Vasiliy
26.12.2017
11:41:51
осталось ток RDD помножить
до меня дошло сейчас , в чём проблема )) api спарка не позволяет задать матрицу ковариации, как и в случае с одномерным распределением, а генерит с единичной матрицей ковариации и нулевым матожданием, надо постфактум мапить значения, получается

Alex
26.12.2017
11:45:07

Vasiliy
26.12.2017
11:45:20
круто

Alex
26.12.2017
12:03:53
@pankratov Не знаешь как в RDD мапнуть каждый элемент? С обычными массивами проходит map(x => x.map(...))

Vasiliy
26.12.2017
12:10:20
https://spark.apache.org/docs/1.5.2/api/java/org/apache/spark/mllib/linalg/Vector.html
ага, у вектора нет map ? но типа foreachActive должно отработать

Igor
26.12.2017
12:54:21
А можно ли как-то из Future[T] получить Try[T]? Кровь из носу нужно сделать в одном месте блокирующее получение результата, и что-то резко стало грустно.

Google

Dmitry
26.12.2017
12:54:51
Try(Await.result) ?

Igor
26.12.2017
12:55:14
Увы, Await говорит, что в его функции нельзя пихнуть Duration.Inf
Что мне определенно не нравится.

sherzod
26.12.2017
12:55:43

Igor
26.12.2017
12:56:36
Может не надо все-таки. А какой контекст?
Выполнение нескольких задачек в БД сделано на Future, результат нужно получить блокирующе, чтобы транзакцию можно было абортнуть или успешно завершить. Ну плюс мне в принципе интересно, как это сделать.

sherzod
26.12.2017
12:58:13
Имеется в виду чтобы вызвать rollback в случае хотя бы одного неуспеха?

Igor
26.12.2017
12:58:31

Dmitry
26.12.2017
12:58:44
onFailure?

sherzod
26.12.2017
12:58:51
Future.sequence
и не нужно выходить из фьючи

Dmitry
26.12.2017
12:59:28
эм, разве в рамках транзакции можно паралельно исполнять что то?

Igor
26.12.2017
12:59:35

Igor
26.12.2017
13:00:06
Иначе будет мусор в БД.

Dmitry
26.12.2017
13:00:50
ну просто seq это если у тебя List[Future]

sherzod
26.12.2017
13:00:54
аа.. эмм тогда неясно.
если одно подключение, у вас все будет работать и без лишних действий так как вы хотите.
если много подключений (много фьюч) то sequencе поможет. можно убрать autocommit и при хотя бы одном неуспехе везде вызвать rollback.

Igor
26.12.2017
13:02:38

Alexander
26.12.2017
13:20:20

Google

Alexander
26.12.2017
13:20:33
(не то что б это было хорошо)

Igor
26.12.2017
13:21:12

Alexander
26.12.2017
13:21:47
Undefined != Inf

Dmitry
26.12.2017
13:21:50
так там Undefined

Alexander
26.12.2017
13:22:02
6-я строчка снизу

Igor
26.12.2017
13:27:14
Ой :) Глаза замылились. Благодарствую :)

Admin
ERROR: S client not available

Daniel
26.12.2017
13:38:30

Igor
26.12.2017
13:42:35

Alex
26.12.2017
13:50:12

Vasiliy
26.12.2017
13:52:21
не знаю, я не использовал ? но судя по тому что он Unit, то либо он меняет элементы inplace либо он просто выполняет side effect, тонда он не подходит
а, не он точно не походит
ну можно сделать toArray.map

Alexander
26.12.2017
13:54:41

Alex
26.12.2017
13:56:09

Vasiliy
26.12.2017
13:57:09
ну если размерность небольшая и у тебя не используются sparse фичи, то на мой взгляд норм

Alex
26.12.2017
13:58:15

Vasiliy
26.12.2017
13:59:57
https://github.com/apache/spark/blob/v2.2.1/mllib-local/src/main/scala/org/apache/spark/ml/linalg/Vectors.scala
class DenseVector @Since("2.0.0") ( @Since("2.0.0") val values: Array[Double]) extends Vector {
override def size: Int = values.length
override def toString: String = values.mkString("[", ",", "]")
override def toArray: Array[Double] = values
если вектор dense, то вроде как toArray тупо возвращает, то что у него в поле values

Google

Vasiliy
26.12.2017
14:03:07
ну т.е. если DenseVector, то вот так норм new DenseVector(v.toArray.map(...))

sherzod
26.12.2017
14:31:28
векторы же, насколько помнится, локальные в mllib. Так что toArray норм (ну все остальное через него будет выражаться)

Alex
26.12.2017
14:32:19

sherzod
26.12.2017
14:32:53
ну вот сказали же через toArray с обратным заворачиванием в вектор. Но если ты не применяешь сам mllib то вектор тебе и не нужен

Alex
26.12.2017
14:37:42
вот с scala.collection.immutable.Vector работает
со спарковским вектором нет

Vasiliy
26.12.2017
14:38:47
да, но это разные структуры

Alex
26.12.2017
14:39:04
ну я прост для сравнения, метод вроде одинаково работать должен

Vasiliy
26.12.2017
14:39:15
да, странно, что они не реализовали
возможно, это из-за головняков с разреженными векторами, хотя в денз у них тоже не реализован
вообще, спарковский мллиб довольно странно сделан

sherzod
26.12.2017
14:44:35
Alex, вообще тебе вроде не нужно делать map. У тебя же векторы и матрицы. Умножай, складывай, применяй линал

Alex
26.12.2017
14:45:13
Не нашел доков по сложению. Так сначала и думал что можно сделать @sherzodv
По манипуляциям в общем*

Vasiliy
26.12.2017
14:46:59
я бы в самом начале кастанул к какому-нибудь бризовскому вектору, а потом выполнял бы операции
причём он есть в зависимостях mllib
<dependency>
<groupId>org.scalanlp</groupId>
<artifactId>breeze_${scala.binary.version}</artifactId>
</dependency>
https://github.com/apache/spark/blob/v2.2.1/mllib-local/pom.xml
https://github.com/scalanlp/breeze