Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
1

Модель прогноза

24.02.2013, 20:18. Показов 2084. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем.

Делаю на платформе 8.1.
Мне нужно создать модель прогноза.
Хочу чтобы при выборе номенклатуры, отображалось то, что чаще всего с ней покупают (вернее вероятность что то и то купят вместе с выбранной номенклатурой). Я в этом еще не разбираюсь.

Вот такие исходные данные:


Есть документ ОказаниеУслуги. В нем на форме есть таблица ПереченьНоменклатуры, с колонкой Номенклатура. В эту таблицу, допустим сейчас, выбрана единица номенклатуры.
Есть регистрНакопления Продажи - в нем то , что уже продалось.
Есть кнопка Прогноз. по нажатию на которую, должен вывестись прогноз. Например если пользователь выбрал "Уголок" , то система смотрит ЧТО обычно покупали вместе с ним. Оказывается в 50% случаев покупали еще листы и в 90% электроды ... вот она и выводит это (в таблицу РезультатПрогноза с типом КолонкиРезультатаМоделиПрогноза , думаю правильно тип я выбрал).



Я вот пробовал делать, но что-то явно не так. Думаю до подчеркнутого все правильно, но не факт.

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Процедура ПрогнозНажатие(Элемент)
Перем МодельПрогноза;
 
Анализ = Новый АнализДанных;
 
Анализ.ТипАнализа= Тип ("АнализДанныхПоискАссоциаций");
 
ЗАпрос = Новый Запрос;
ЗАпрос.Текст=
"ВЫБРАТЬ
| Продажи.Регистратор,
| Продажи.Номенклатура
|ИЗ
| РегистрНакопления.Продажи КАК Продажи";
 
 
Анализ.ИсточникДанных=ЗАпрос.Выполнить();
 
РезультатАнализа = Анализ.Выполнить();
 
МодельПрогноза=РезультатАнализа.СоздатьМодельПрогноза();
 
//_______________________________________________________________________________________________________________ 
ТаблицаЗначений= Новый ТаблицаЗначений;
 
МодельПрогноза.ИсточникДанных=ПереченьНоменклатуры.Выгрузить();
ТаблицаЗначенийПоследовательности= МодельПрогноза.Выполнить();
 
Если ТаблицаЗначенийПоследовательности.Количество()>0 Тогда 
 РезультатПрогноза.Очистить(); 
     Для Каждого Строка Из ТаблицаЗначенийПоследовательности Цикл
     НоваяСтрока = РезультатПрогноза.Добавить();// Здесь ругнулось
      НоваяСтрока.Следствие = Строка.Следствие;
     НоваяСтрока.Достоверность= Строка.Достоверность;
     КонецЦикла; 
КонецЕсли;
 
 Если РезультатПрогноза.Количество()=0 Тогда 
 Предупреждение("Предложений нет");
  Иначе 
 ЭлементыФормы.РезультатПрогноза.СоздатьКолонки();
  КонецЕсли;
 
 
КонецПроцедуры
Ругнулось вот так:
{Документ.ОказаниеУслуги.Форма.ФормаДокумента(93)}: Недостаточно фактических параметров
НоваяСтрока = РезультатПрогноза.Добавить();
Подскажите, пожалуйста, что не так? правильным ли я вообще путем иду?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.02.2013, 20:18
Ответы с готовыми решениями:

Модель прогноза и анализ данных
Подскажите пожалуйста, мне надо создать модель прогноза с типами анализа и всё такое, только я вот...

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

Получение прогноза погоды с gismeteo.
Добрый день уважаемые программисты! Я новичок в делфи и никак не могу разобраться что не в порядке...

Методы повышения точности прогноза
Здравствуйте! Хочу, спросить, если методы, которые могут повысить точность прогноза? Дано 3...

6
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
24.02.2013, 20:58 2
РезультатПрогноза - это явно элемент управления (контрол). А добавлять можно только в данные
1
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
24.02.2013, 21:12  [ТС] 3
Цитата Сообщение от duk337 Посмотреть сообщение
РезультатПрогноза - это явно элемент управления (контрол). А добавлять можно только в данные

Не совсем понял, но вобще у меня РезультатПрогноза это таблица на форме с типом КолонкиРезультатаМоделиПрогноза .

Попробовал переименовать, но не помогает.
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
24.02.2013, 21:28 4
Цитата Сообщение от CJS Посмотреть сообщение
Не совсем понял, но вобще у меня РезультатПрогноза это таблица на форме с типом КолонкиРезультатаМоделиПрогноза . Попробовал переименовать, но не помогает.
Я тоже не совсем понял. Так что квиты .

Не по теме:

Наверное, и стёкла протирали, и по колёсам пинали?


Есть элемент управления "табличное поле", включающий контейнер "Колонки". "КолонкиРезультатаМоделиПрогноза" - таких типов не бывает. Если это имя контрола с данными РезультатПрогноза - так и говорите. И не пишите ЭлементыФормы.РезультатПрогноза, поскольку это не элемент формы. Если Вы просто не врубаете, где элементы формы, а где данные - разберитесь. В свойствах везде всё внятно пишется русским языком.
1
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
24.02.2013, 22:45  [ТС] 5
Цитата Сообщение от duk337 Посмотреть сообщение
Я тоже не совсем понял. Так что квиты .

Не по теме:

Наверное, и стёкла протирали, и по колёсам пинали?


Есть элемент управления "табличное поле", включающий контейнер "Колонки". "КолонкиРезультатаМоделиПрогноза" - таких типов не бывает. Если это имя контрола с данными РезультатПрогноза - так и говорите. И не пишите ЭлементыФормы.РезультатПрогноза, поскольку это не элемент формы. Если Вы просто не врубаете, где элементы формы, а где данные - разберитесь. В свойствах везде всё внятно пишется русским языком.
Спасибо. Понял о чем Вы. Я переделал - сделал в ТабличномПоле 2 поля ввода : Следствие и Достоверность. И оно начало туда выводить.

Но только не правильно что-то выводит.

Например вижу что в регистре Продажи такая информация: Уголок покупали по 3-м документам, при том в 2/3 случаев еще покупали вместе с уголком "Электроды".
Ну и выбираю я значит "Уголок". И теперь нажимаю кнопку "Прогноз" ... по идее должно показать Следствие= "Номенклатура=Электроды", Достоверность=66%.

Но оно вобще ничего не показывает.
Выбираю наоборот - "Электрод". Так оно выводит по нему прогноз. Потом снова выбираю "Уголок" (то что не работало), так оно теперь по нему выводит ... выводит , но не правильно.

Что здесь не так?
0
2955 / 1767 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
24.02.2013, 23:03 6
Цитата Сообщение от CJS Посмотреть сообщение
Что здесь не так?
Наверное, алгоритм. Вы пробовали изложить алгоритм, по которому строится прогноз, по пунктам?
"Прогноз - дело тонкое", я бы сказал, скользкое. И сильно зависит от алгоритма. А алгоритм придумывает - кто?
0
49 / 49 / 8
Регистрация: 17.07.2011
Сообщений: 380
25.02.2013, 17:55  [ТС] 7
Цитата Сообщение от duk337 Посмотреть сообщение
Наверное, алгоритм. Вы пробовали изложить алгоритм, по которому строится прогноз, по пунктам?
"Прогноз - дело тонкое", я бы сказал, скользкое. И сильно зависит от алгоритма. А алгоритм придумывает - кто?
Программист, понятное дело алгоритм придумывает.
Но вобще-то подумал что все должны сделать механизмы АнализДанных и Прогноз при подаче им данных.

Но я все это дело понимаю вот так (в комментариях):

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Процедура ПрогнозНажатие(Элемент)
Перем МодельПрогноза;
Анализ = Новый АнализДанных;
Анализ.ТипАнализа= Тип ("АнализДанныхПоискАссоциаций");
 
// Регистратор  не повторяется, а вот номенклатура в разных регистраторах совпадает - это нам и интересно
ЗАпрос = Новый Запрос;
ЗАпрос.Текст=
"ВЫБРАТЬ
| Продажи.Регистратор,
| Продажи.Номенклатура
|ИЗ
| РегистрНакопления.Продажи КАК Продажи";
 
 
Анализ.ИсточникДанных=ЗАпрос.Выполнить();
РезультатАнализа = Анализ.Выполнить();
 // Вот здесь, я так понимаю, оно само отсортировует по столбцам объекта Прогноз
// Но здесь оно не знает еще для чего вычислять Достоверность
МодельПрогноза=РезультатАнализа.СоздатьМодельПрогноза();
 
//_______________________________________________________________________________________________________________ 
//ТаблицаЗначений= Новый ТаблицаЗначений; Это не нужно вообще
 
//Вот здесь, я так понимаю мы сообщаем для чего нам нужен прогноз. Т. е. мы в ИсточникДанных выгружаем всю
// ТабЧасть документа. 
МодельПрогноза.ИсточникДанных=ПереченьНоменклатуры.Выгрузить();
 
//Здесь оно уже смотрит чтобы значения из ТАбЧасти совпали со значениями из МоделиПрогноза 
// А в модели прогноза у нас Регистратор и Номенклатура. Регистратор оно не возьмет (это ссылка) - я думаю 
//оно само так устроено что Регистратор не возьмет.
ТаблицаЗначенийПоследовательности= МодельПрогноза.Выполнить();
 
 
//Ну здесь уже оно просто результирующую таблицу перебирает и расставляет в колонки. Тут не может быть ошибки.
Если ТаблицаЗначенийПоследовательности.Количество()>0 Тогда 
 РезультатПрогноза.Очистить(); 
     Для Каждого Строка Из ТаблицаЗначенийПоследовательности Цикл
     НоваяСтрока = РезультатПрогноза.Добавить();
      НоваяСтрока.Следствие = Строка.Следствие;
     НоваяСтрока.Достоверность= Строка.Достоверность;
     КонецЦикла; 
КонецЕсли;
 
 Если РезультатПрогноза.Количество()=0 Тогда 
 Предупреждение("Предложений нет");
  Иначе 
 ЭлементыФормы.РезультатПрогноза.СоздатьКолонки();
  КонецЕсли;
 
 
КонецПроцедуры
Я думал поможет если вот это : МодельПрогноза.ИсточникДанных=ПереченьНоменклатуры.Выгрузить();
, поместить перед вот этим: МодельПрогноза=РезультатАнализа.СоздатьМодельПрогноза();
Но не помогает - оно тогда вообще не работает.

Но то, что при первом проходе оно не содержит значение ТАМ где нужно - это факт. При последующих проходах оно содержит ТАМ где нужно значение. Не знаю ГДЕ именно, но где-то не содержит.

Думал может вот этого не хватает:
Настройка входных колонок - набор специальных объектов, показывающих соответствие между колонками модели прогноза и колонками выборки прогноза. Например, колонке модели прогноза с именем Товар может соответствовать колонка выборки Номенклатура. Настройка колонок результата - позволяет управлять тем, какие колонки будут помещены в результирующую таблицу модели прогноза. Например, для поиска ассоциаций мы можем вывести в результат номенклатуру, которую, скорее всего, приобретет клиент, и вероятность подобной покупки. Колонки результата - таблица значений, состоящая из колонок, указанных в настройках результирующих колонок, и содержащая прогнозируемые данные. Конкретное содержимое определяется типом анализа.
Но вроде и хватает - ведь оно у меня нужные значения содержит в Следствие и Достоверность ... просто неправильно показывает.

Добавлено через 6 часов 11 минут
Разобрался.
Вобщем:
- во-первых там нужно было очищать результирующую таблицу даже в том случае, когда не найдено подходящего;
- во-вторых нужно было установить параметры, в частности МинимальнаяДостоверность.

Вот когда разберешься вопрос кажется смешным и даде немножко стыдновато. Но когда еще не разобрался, то вопрос кажется серьезным. Вобщем не так страшен черт как его малюют.
1
25.02.2013, 17:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2013, 17:55
Помогаю со студенческими работами здесь

Метод прогноза и коррекции 2 порядка
В универе задали написать мини курсовую на эту тему, но с алгоритмом на C#. Вот мое понимание:...

Лист прогноза в excel 2013
Добрый день. Нашел несколько отличных примеров применения аналитики в excel хочу все это...

Программа для прогноза погоды
Начал осваивать Windows Forms на C#. Возникли трудности с решением задачи: нужно сделать форму, в...

Прогнозирование регрессией. Точность прогноза
Здравствуйте! Есть задача составления прогноза значений Yп с помощью регрессии. Каким образом можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru