Scrum и Fogbugz [закрываются]

Ну, вы можете написать UDF, но почему бы вам? Существует уже немало инструментов, предназначенных для обработки этой категории задач:

from pyspark.sql import Row
from pyspark.ml.linalg import DenseVector

row = Row("gender", "foo", "bar")

df = sc.parallelize([
  row("0", 3.0, DenseVector([0, 2.1, 1.0])),
  row("1", 1.0, DenseVector([0, 1.1, 1.0])),
  row("1", -1.0, DenseVector([0, 3.4, 0.0])),
  row("0", -3.0, DenseVector([0, 4.1, 0.0]))
]).toDF()

Прежде всего StringIndexer.

from pyspark.ml.feature import StringIndexer

indexer = StringIndexer(inputCol="gender", outputCol="gender_numeric").fit(df)
indexed_df = indexer.transform(df)
indexed_df.drop("bar").show()

## +------+----+--------------+
## |gender| foo|gender_numeric|
## +------+----+--------------+
## |     0| 3.0|           0.0|
## |     1| 1.0|           1.0|
## |     1|-1.0|           1.0|
## |     0|-3.0|           0.0|
## +------+----+--------------+

Далее OneHotEncoder:

from pyspark.ml.feature import OneHotEncoder

encoder = OneHotEncoder(inputCol="gender_numeric", outputCol="gender_vector")
encoded_df = encoder.transform(indexed_df)
encoded_df.drop("bar").show()

## +------+----+--------------+-------------+
## |gender| foo|gender_numeric|gender_vector|
## +------+----+--------------+-------------+
## |     0| 3.0|           0.0|(1,[0],[1.0])|
## |     1| 1.0|           1.0|    (1,[],[])|
## |     1|-1.0|           1.0|    (1,[],[])|
## |     0|-3.0|           0.0|(1,[0],[1.0])|
## +------+----+--------------+-------------+

VectorAssembler:

from pyspark.ml.feature import VectorAssembler

assembler = VectorAssembler(
    inputCols=["gender_vector", "bar", "foo"], outputCol="features")

encoded_df_with_indexed_bar = (vector_indexer
    .fit(encoded_df)
    .transform(encoded_df))

final_df = assembler.transform(encoded_df)

Если bar содержит категориальные переменные, вы можете использовать VectorIndexer для установки необходимых метаданных:

from pyspark.ml.feature import VectorIndexer

vector_indexer = VectorIndexer(inputCol="bar", outputCol="bar_indexed")

, но это не так.

Наконец, вы можете обернуть все это с помощью конвейеров:

from pyspark.ml import Pipeline
pipeline = Pipeline(stages=[indexer, encoder, vector_indexer, assembler])
model = pipeline.fit(df)
transformed = model.transform(df)

Возможно, это очень надежный и чистый подход, чем запись всего с нуля. Есть некоторые предостережения, особенно если вам требуется последовательное кодирование между различными наборами данных. Вы можете прочитать больше в официальной документации для StringIndexer и VectorIndexer.

Другой способ получить сопоставимый выход - RFormula , который :

RFormula создает векторный столбец функций и двойной или строковый столбец метки. Подобно тому, как формулы используются в R для линейной регрессии, столбцы ввода строки будут однострочно закодированы, а числовые столбцы будут приведены к удвоению. Если столбец меток имеет строку типа, он будет сначала преобразован в double с StringIndexer. Если столбец меток не существует в DataFrame, столбец меток вывода будет создан из указанной переменной ответа в формуле.

blockquote>
from pyspark.ml.feature import RFormula

rf = RFormula(formula="~ gender +  bar + foo - 1")
final_df_rf = rf.fit(df).transform(df)

Как вы можете видеть, это намного более кратким , но сложнее составить не позволяет многое настраивать. Тем не менее результат для простого конвейера, подобного этому, будет идентичным:

final_df_rf.select("features").show(4, False)

## +----------------------+
## |features              |
## +----------------------+
## |[1.0,0.0,2.1,1.0,3.0] |
## |[0.0,0.0,1.1,1.0,1.0] |
## |(5,[2,4],[3.4,-1.0])  |
## |[1.0,0.0,4.1,0.0,-3.0]|
## +----------------------+


final_df.select("features").show(4, False)

## +----------------------+
## |features              |
## +----------------------+
## |[1.0,0.0,2.1,1.0,3.0] |
## |[0.0,0.0,1.1,1.0,1.0] |
## |(5,[2,4],[3.4,-1.0])  |
## |[1.0,0.0,4.1,0.0,-3.0]|
## +----------------------+

Что касается ваших вопросов:

сделать UDF с аналогичной функциональностью, которую я могу использовать в Spark SQL-запрос (или каким-то другим способом, я полагаю)

blockquote>

Это просто UDF, как и любой другой. Убедитесь, что вы используете поддерживаемые типы, и кроме того, все должно работать нормально.

взять RDD, полученную на карте, описанной выше, и добавить ее как новый столбец в dataframe user_data?

blockquote>
from pyspark.ml.linalg import VectorUDT
from pyspark.sql.types import StructType, StructField

schema = StructType([StructField("features", VectorUDT(), True)])
row = Row("features")
result.map(lambda x: row(DenseVector(x))).toDF(schema)

Примечание:

Для Spark 1.x замените pyspark.ml.linalg на pyspark.mllib.linalg.

23
задан Keith G 26 August 2009 в 20:10
поделиться

11 ответов

FogBugz теперь (начиная с версии 7) поддерживает плагины, которые должны значительно упростить его использование со Scrum.

Инструменты для Agile / Scrum

7
ответ дан 29 November 2019 в 02:56
поделиться

Мы использовали FB в течение долго времени, но недавно начали формализовывать наше использование Scrum.

Нашли следующие вещи, которые ДОВОЛЬНО полезны:

  1. Использовал тег для каждого Scrum-спринта.
  2. Тег спринта вводится в каждый случай FB в этом спринте.
  3. У нас есть вики под названием «Scrum Sprint Reports»
  4. В этой вики мы добавляем статью для каждого нового спринта (у нас они есть по неделям). Эта статья имеет тот же тег, что и спринт.

Затем, следующие вещи помогают:

Во-первых, если вы просто выполните поиск по тегу, вы найдете: все случаи и конкретную статью вики (которая даже в заголовке покажет вам цели)

Во-вторых, мы создаем два фильтра: один фильтр для отображения случаев этой схватки в виде списка и второй фильтр для отображения случаев, открытых / закрытых в круговой диаграмме. В течение недели вы надеетесь съесть больше пирога.

Единственное, что мне не нравится в этом, - это то, что мне приходится менять мои два фильтра каждую пятницу, но, по крайней мере, TGIF.


PS: просто хочется упомянуть, что FB Wiki Editor лучше, чем один в 7.0, но на самом деле его версия должна быть 0.8. Это как минимум 2 издания, чтобы быть чем-то стабильным.

5
ответ дан Amrinder Arora 29 November 2019 в 02:56
поделиться

После использования FOGBUGZ и JIRA для гибкого, я решил, что никакой инструмент не действительно идеален для поддержки модели. Можно ли заставить любого работать. Да. JIRA на самом деле немного лучше из-за способности настроить больше (Создайте пользовательские истории, и т.д.), Но если Вы действительно хотите свою команду в режиме SCRUM, у Вас должны быть все смотрящие на диаграмму burndown и всех смотрящие на отставание, и я думаю, что необходимо посмотреть на инструменты как SCRUMWORKS. Базовая версия является бесплатной, и она даст Вам, что Вы хотите. Используйте JIRA и Fogbugz для того, что они были предназначены, чтобы сделать, отслеживайте ошибки и запросы, но не быть полным инструментом управления ТОЛПЫ. '

Обновление: можно использовать плагин Greenhopper для JIRA, который немного лучше для поддержки гибких проектов.

4
ответ дан leora 29 November 2019 в 02:56
поделиться

По icanhascheezburger.com мы используем FogBugz, и мы нашли, что FogBugz силен в большом количестве вещей, но это не работает так хорошо на гибкую разработку из поля. Вот две вещи, которые мы делаем:

Мы используем форумы для ежедневных отчетов о толпе, хотя страница Wiki могла бы лучше подойти для этого, так как можно подписаться на нее.

Мы также используем приоритет 7 для отставания. Для нахождения всех неудовлетворенных случаев, просто ищите:

priority:7 project:"project name"

API сделал бы пишущий маленький клиент толпы довольно легким.

плагин Kanban для FogBugz

2
ответ дан balexandre 29 November 2019 в 02:56
поделиться

Мы в настоящее время находимся в процессе испытания FogBugz на основанном на толпе проекте.

Мы все еще очень стали на ноги с ТОЛПОЙ (и FogBugz) поэтому, что мы делаем, может не быть 'чистая' ТОЛПА.

, В первую очередь, мы используем Excel для отставания выпуска, например, что мы будем поставлять в версии x.xx

, которую я на самом деле записал сообщению блога при использовании FogBugz как отставание, но закончил тем, что шел с Excel как, что я предлагал, был немного сложным ретроспективно, и я не думаю, что действительно получал что-либо.

В неудовлетворенной электронной таблице мы сохраняем название заднего объекта журнала, размер оценивает, таким образом, мы можем вычислить скорость и некоторую другую информацию такой как, которые бегут, мы обеспечим каждый объект в.

Мы сохраняем наши технические характеристики изделия в FogBugz wiki и добавляем ссылки к этому от каждой записи в отставании.

В Fogbugz мы отображаем выпуски на спринты и используем объекты расписания для отслеживания наших задач для каждого неудовлетворенного объекта.

, Прежде чем мы запустим спринт, который мы выбираем, какие неудовлетворенные объекты мы собираемся поставить в этом спринте. В FogBugz я создаю новый выпуск и устанавливаю дату окончания на две недели по линии. Мы тогда ломаем выбранные неудовлетворенные объекты в к задачам и добавляем их к выпуску как 'объекты расписания'.

Все оценивают их собственные задачи и отслеживают время по ним использующий 'работу над' меню, как Вы обычно были бы. Каждый день члены команды пересматривают свои оценки, и мы можем тогда использовать различные отчеты, чтобы видеть, как прогрессируют вещи. Диаграмма уверенности даты поставки дает Вам своего рода реверс burndown.

у Каждого члена команды также есть объект расписания 'состояния', который они редактируют каждый день для записи там отчета о состоянии для ежедневной газеты, встают, встречаясь, например, что я вчера сделал?, Что я делаю сегодня? Какие препятствия находятся в моем пути?

, Поскольку Вы видите нас действительно справедливое использование FogBugz для управления задачами.

Мы выбрали его больше для EBS и Wiki.

До сих пор это работает вполне хорошо, но проект, я использую его, каждый - 3 человека 6-недельный проект.

Hope часть этого помогает. Сообщите мне, нужно ли Вам какое-либо разъяснение.

Редактирование: я также не пытаюсь разбудить идеальную систему и выполнение в первый раз. Я очень проявляю подход испытания чего-то и если это не удается, затем измените его. Пока неплохо с FogBugz все же.

1
ответ дан Jamie 29 November 2019 в 02:56
поделиться

FogBugz & amp; Скрам работают вместе адекватно. Я думаю, что у вас хорошие вопросы, поэтому я буду отвечать на эти вопросы ...

Как мы можем расставить приоритеты для большого отставания, используя только 7 уровней приоритетов, предоставляемых Fogbugz? Мы можем изменить таблицы базы данных, чтобы добавить больше уровней, но подходит ли это в текущей / предполагаемой модели Fogbugz?

ИМХО 7 слишком много для управления, я считаю, что верхние 3-4 управляемый и даже более того, я мог бы слить все в одно «позднее» отставание. Тем не менее, документация FogBugz или статьи KB иногда дают рекомендации людям, которые добавили дополнительные уровни приоритета, поэтому, если FogBugz не собирается использовать его, они, кажется, хорошо знают об этом и в основном поддерживают людей, делающих это.

Как / где мы документируем цель спринта? У нас есть страница «Обзор спринта» в вики для каждого проекта. Мы документируем самый последний спринт вверху и делаем его одной огромной страницей (хотя я полагаю, что в конечном итоге мы оставим только самый последний год или что-то в этом роде, поскольку эти страницы становятся ОГРОМНЫМИ). Используемый нами обзор спринта прост и содержит набор полей, которые должны быть заполнены командой и руководителем проекта. Перед спринтом мы документируем цель и и SBL, после того как добавляем поля для обзора.

Как мы документируем отмененный спринт?

На странице обзора спринта, упомянутой выше.

Как мы документируем обзор спринта? Как мы отслеживаем выполненные или отмененные спринты?

Полагаю, вы уже можете догадаться, как мы справимся с этими двумя:)

Я надеюсь, что это будет полезно для вас и других читателей. У нас есть пара хакерских туманов, связанных с оценками ФБ, которые я здесь не рассматривал, но если вы захотите еще что-нибудь обсудить, я буду рад это сделать. Может быть, у вас есть какой-то опыт, которым я мог бы научиться?

-scott

1
ответ дан Scott Willeke 29 November 2019 в 02:56
поделиться

Мы используем Scrumworks и JIRA.

SCRUM на самом деле не описывает, как вы реализуете процедуры QA / QC, часть гибкой возможности - определять, улучшать, повторять процессы.

0
ответ дан 29 November 2019 в 02:56
поделиться

Хорошие комментарии до сих пор. Я буду смотреть на Scrumworks. Нам действительно нравится Fogbugz, и команда довольна им, так вот почему я пытаюсь видеть, осуществимо ли это.

@Stefan, одно из предложений для отставания продукта в связанных статьях - то, что отставание проекта может быть реализовано в Fogbugz путем создания присваиваемого выпуска того же имени без даты, даты в конце формального контракта или даты далеко в будущее. Вы попробовали это или имеете какие-либо мысли о том, почему Ваш метод мог бы быть лучше?

0
ответ дан Keith G 29 November 2019 в 02:56
поделиться

Мы используем FogBugz для разборок, используя «релиз» для отставания проекта, а затем создаем релизы для спринтов, перемещая элементы из релиза журнала заданий проекта в текущий выпуск спринта. Каждый элемент имеет оценку, и из этого мы можем построить диаграмму выгорания, как показано в в этом раннем вопросе SO .

Нет, это не идеально, но работает достаточно хорошо.

0
ответ дан Community 29 November 2019 в 02:56
поделиться

Инструментальная трассировка с открытым исходным кодом имеет интеграцию FogBugz , а для части Scrum вы можете использовать Agilo for Scrum , основанный на ] trac и всесторонне поддерживает Scrum.

0
ответ дан 29 November 2019 в 02:56
поделиться

Check out the new version of FogBugz. There is a blog article here which summaries the improvements to support Scrum. We use it and it works well for us.

http://www.fogcreek.com/FogBugz/blog/post/Scrum-Friendly-Features.aspx

1
ответ дан 29 November 2019 в 02:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: