Разработка интеллектуальной системы подбора товара

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 17.04.2012
Размер файла 1,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

3. Omiecinski E. Alternative interest measures for mining associations in databases. / E. Omiecinski. // IEEE Transactions on Knowledge and Data Engineering. - 2003. - №15(1). - Р. 57-69.

4. Поиск ассоциативных правил: [Электрон. ресурс]. ? Режим доступа: http://wiki.auditory.ru/.

5. Поиск ассоциативных правил при интеллектуальном анализе данных: [Электрон. ресурс]. ? Режим доступа: www.rammus.ru/products/arda/.

6. Области применения ассоциативных правил: [Электрон. ресурс]. ? Режим доступа: www.rammus.ru/products/arda/article_review_ar_applications/.

7. Association rule learning: [Электрон. ресурс]. ? Режим доступа: http://en.wikipedia.org/wiki/Association_rule_learning/.

8. Методы поиска ассоциативных правил: [Электрон. ресурс]. ? Режим доступа: www.intuit.ru/department/database/datamining/15/.

9. Введение в анализ ассоциативных правил: [Электрон. ресурс].? Режим доступа: www.basegroup.ru/library/analysis/association_rules/intro/.

10. Apriori - масштабируемый алгоритм поиска ассоциативных правил: [Электрон. ресурс]. ? Режим доступа: www.basegroup.ru/library/association_rule/.

11. Apriori: [Электрон. ресурс]. ? Режим доступа: ru.wikipedia/Apriori/.

12. Персонализация данных: [Электрон. ресурс]. ? Режим доступа: www.copy-market.ru/index.php?page...dannyh/.

13. Персонализация данных: [Электрон. ресурс].? Режим доступа: http://www.copy-market.ru/personalizatsiya-dannyh/.

14. Персонализация: [Электрон. ресурс]. ? Режим доступа: www.lscorp.ru/.

15. Data Mining: [Электрон. ресурс]. ? Режим доступа: www.int.ru/datamining/.

16. Data Mining - интеллектуальный анализ данных: [Электрон. ресурс]. ? Режим доступа: www.inftech.webservis.ru/it/database/datamining/ar2.html/.

17. Apriori algorithm source code: [Электрон. ресурс]. ? Режим доступа: msug.vn.ua/blogs/datamining/archive/2009/08/02/apriori-algorithm/.

18. Data Mining: [Электрон. ресурс]. ? Режим доступа: http://habrahabr.ru/blogs/data_mining/66016/.

19. Боуман Дж. Практическое руководство по SQL. / Дж. Боуман, С. Эмерсон, М. Дарновски. ? К.: Диалектика, 1998. - 565 с.

20. Введение в стандарты языка баз данных SQL. [Электрон. ресурс]. ? Режим доступа: www.citforum.ru/database/sqlbook/index.shtml/.

ПРИЛОЖЕНИЕ

Программный код файла «qt»

#!/usr/bin/python2.6

# -*- coding: utf-8 -*-

FROM __future__ IMPORT unicode_literals

IMPORT platform

IMPORT sys

FROM PyQt4 IMPORT QtCore, QtGui

IMPORT resource_rc

FROM models IMPORT Category, Item

FROM FormResult IMPORT FormResult

FROM FormTransactions IMPORT FormTransactions

FROM FormCategories IMPORT FormCategories

FROM FormItem IMPORT FormItem

FROM FormCart IMPORT FormCart

FROM FormRules IMPORT FormRules

FROM FormPopular IMPORT FormPopular

FROM FormSupp IMPORT FormSupp

__version__ = "1.0.0"

class Form(QtGui.QDialog):

def __init__(self, parent=NONE):

SUPER(Form, self).__init__(parent)

addAction = QtGui.QAction(QtGui.QIcon(":/edit_add.png"), "&Добавить", self,

triggered=self.add_item)

delAction= QtGui.QAction(QtGui.QIcon(":/remove.png"), "&Удалить", self,

triggered=self.delete_item)

categoryAction=QtGui.QAction(QtGui.QIcon(":/category.png"), "&Категории", self,

triggered=self.show_categories)

TRANSACTION=QtGui.QAction(QtGui.QIcon(":/database.png"), "&Транзакции", self,

triggered=self.show_transactions)

popularAction=QtGui.QAction(QtGui.QIcon(":/chart_bar.png"), "&Популярные товары", self,

triggered=self.show_popular)

rulesAction=QtGui.QAction(QtGui.QIcon(":/calculator.png"), "&Правила", self,

triggered=self.show_rules)

cartAction=QtGui.QAction(QtGui.QIcon(":/cart2.png"), "&Корзина", self,

triggered=self.show_cart)

itemsAction=QtGui.QAction(QtGui.QIcon(":/refresh.png"), "&Товары", self,

triggered=self.show_items)

aboutAction=QtGui.QAction(QtGui.QIcon(":/help.png"),"&О программе", self,

triggered=self.help_about)

toolBar = QtGui.QToolBar()

#QStyle.SH_TitleBar_NoBorder

toolBar.addAction(addAction)

toolBar.addAction(delAction)

toolBar.addAction(categoryAction)

toolBar.addAction(TRANSACTION)

toolBar.addAction(popularAction)

toolBar.addAction(rulesAction)

toolBar.addAction(cartAction)

toolBar.addAction(itemsAction)

toolBar.addAction(aboutAction)

#init grid

self.tableWidget = QtGui.QTableWidget()

self.refreshTable()

layout = QtGui.QVBoxLayout()

layout.addWidget(toolBar)

layout.addWidget(self.tableWidget)

self.setLayout(layout)

self.connect(self.tableWidget,

QtCore.SIGNAL("itemDoubleClicked(QTableWidgetItem*)"),

self.edit_item)

self.setWindowTitle(u"Apriori. Помощь в подборе товара при покупке")

self.setGeometry(250, 250, 950, 400)

screen=QtGui.QDesktopWidget().screenGeometry()

size=self.geometry()

self.move((screen.width()-size.width())/2,(screen.height()-size.height())/2)

def refreshTable(self):

self.tableWidget.clear()

self.tableWidget.setSortingEnabled(True)

self.tableWidget.setRowCount(0)

self.tableWidget.enabledChange(False)

self.tableWidget.setSelectionMode(QtGui.QAbstractItemView.SingleSelection); self.tableWidget.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows);

self.tableWidget.setEditTriggers(QtGui.QTableWidget.NoEditTriggers)

elf.tableWidget.setColumnCount(3)

self.tableWidget.setHorizontalHeaderLabels(["№","Название",'Категория'])

self.tableWidget.setColumnWidth(0, 40)

self.tableWidget.setColumnWidth(1, 400)

self.tableWidget.setColumnWidth(2, 400)

for item in Item.get():

no=self.tableWidget.rowCount()

self.tableWidget.insertRow(no)

self.tableWidget.setItem(no, 0, QtGui.QTableWidgetItem(str(item.id)))

self.tableWidget.setItem(no, 1, QtGui.QTableWidgetItem(item.name))

self.tableWidget.setItem(no, 2, QtGui.QTableWidgetItem(Category.get (item.category_id).get_name()))

self.tableWidget.setRowHeight(no, 20)

def show_rules(self):

forms = FormSupp()

if forms.exec_():

form=FormRules(minsupp=forms.minText.text().toInt()[0], maxsupp=forms.maxText.text().toInt()[0])

form.exec_()

def show_popular(self):

forms = FormSupp()

if forms.exec_():

form=FormPopular(minsupp=forms.minText.text().toInt()[0], maxsupp=forms.maxText.text().toInt()[0])

form.exec_()

def show_cart(self):

form = FormCart()

form.exec_()

def add_item(self):

form = FormItem()

form.exec_()

self.refreshTable()

def edit_item(self):

no = self.tableWidget.currentRow()

if no != -1:

id = self.tableWidget.item(no, 0).text()

form = FormItem(model=Item.get(id))

form.exec_()

self.refreshTable()

def delete_item(self):

reply = QtGui.QMessageBox.question(self,

"Удаление",

"Запись будет удалена! Вы уверены?", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)

if reply == QtGui.QMessageBox.Yes:

no = self.tableWidget.currentRow()

no != -1:

id = self.tableWidget.item(no, 0).text()

Item(id=id).delete()

self.refreshTable()

def show_items(self):

form = FormResult()

form.exec_()

def show_transactions(self):

form = FormTransactions()

form.exec_()

def show_categories(self):

form = FormCategories()

form.exec_()

def help_about(self):

QtGui.QMessageBox.about(self, "Apriori - О программе",

"""<b>Apriori</b> v {0}

<p>&copy; 2010, Евгений Лукашевский.

Все права защищены.

<p>Python {1} - Qt {2} - PyQt {3} on {4}""".format(

__version__, platform.python_version(),

QtCore.QT_VERSION_STR, QtCore.PYQT_VERSION_STR,

platform.system()))

app = QtGui.QApplication(sys.argv)

form = Form()

form.show()

app.exec_()

Программный код файла «Models»

MPORT ConfigParser, os

FROM autumn.db.connection IMPORT autumn_db

FROM autumn.model IMPORT Model

FROM autumn.db.relations IMPORT ForeignKey, OneToMany

FROM autumn IMPORT validators

IMPORT DATETIME

config = ConfigParser.ConfigParser()

config.readfp(OPEN('app.cfg'))

autumn_db.conn.connect('mysql', HOST=config.get('Database', 'host'), \

USER=config.get('Database', 'user'), \

db=config.get('Database', 'db'), \

passwd=config.get('Database', 'passwd'), \

CHARSET='utf8')

class ORDER(Model):

items = OneToMany('OrderItem', 'order_id')

class Meta:

TABLE = 'orders'

class OrderItem(Model):

ORDER = ForeignKey(ORDER, 'order_id')

class Meta:

TABLE = 'order_items'

class Item(Model):

class Meta:

TABLE = 'items'

class Category(Model):

class Meta:

TABLE = 'categories'

def get_name(self):

IF self.lvl == 1:

RETURN self.name

IF self.lvl == 2:

sub_category = Category.get(self.parent_id)

RETURN sub_category.name + ' -> ' + self.name

IF self.lvl == 3:

RETURN sub_category2.name + ' -> ' + sub_category.name + ' -> ' + self.name

def get_parent_name(self):

IF self.lvl == 2:

sub_category = Category.get(self.parent_id)

RETURN sub_category.name

IF self.lvl == 3:

sub_category = Category.get(self.parent_id)

sub_category2 = Category.get(sub_category.parent_id)

RETURN sub_category2.name + ' -> ' + sub_category.name

Программный код файла «Apriori»

-*- coding: utf-8 -*-

FROM models IMPORT ORDER, OrderItem

class Apriori:

def __init__(self, minsupp=0, maxsupp=1000):

self.orders = NONE

self.items = NONE

self.max_items = 0

self.minsupp = minsupp

self.maxsupp = maxsupp

def transactions(self):

""" Формирование списка транзакций"""

orders = []

FOR ORDER IN Order.get():

_items = []

FOR item IN order.items:

orders.append(_items)

self.orders = orders

max_items = 0

FOR ORDER IN orders:

IF len(ORDER) > max_items: max_items = len(ORDER)

self.max_items = max_items

RETURN self.orders

def items_(self):

items = {}

IF self.orders == NONE:

self.transactions()

FOR ORDER IN self.orders:

FOR item IN ORDER:

IF item NOT IN items:

items[item] = 1

ELSE:

items[item] = items[item] + 1

RETURN self.items

def calc(self):

IF self.items == NONE:

self.items_()

k = {}

result = []

k[1] = [{'elements': [d], 'cnt': n} FOR d, n IN self.items.iteritems()]

FOR NO IN xrange(2, self.max_items):

k[NO] = self.Apriorigen(k[NO - 1], self.orders, self.minsupp, self.maxsupp)

result = result + k[NO]

RETURN result

def Apriorigen(self, DATA, orders, minsupp, maxsupp):

""" Генерация k+1 элементных кандидатов.

Размер k определяется размером списка DATA

"""

IF candidate == tmp:

is_exist = TRUE

FOR c IN candidates:

IF c['elements'] == item:

c['cnt'] = c['cnt'] + 1

break

ELSE:

candidates.append({'cnt': 1, 'elements': item[:]})

FOR item IN candidates:

supp = self.find_supp(item['elements'][:len(item['elements']) - 1], DATA)

item['supp'] = FLOAT(item['cnt']) / supp * 100

candidates_filter = [line FOR line IN candidates IF line['cnt'] >= minsupp AND line['cnt'] <= maxsupp]

RETURN candidates_filter

def find_supp(self, el, DATA):

FOR i IN DATA:

IF el == i['elements']:

RETURN i['cnt']

RETURN 0

def popular(self):

k = self.calc()

items = sorted(k, KEY = lambda X: -X['supp'])

RETURN items

Размещено на Allbest.ru


Подобные документы

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

    курсовая работа [37,4 K], добавлен 01.12.2009

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

    курсовая работа [2,2 M], добавлен 04.12.2010

  • Подготовка к созданию интеллектуальной системы: определение проблемы, поиск эксперта, анализ расходов и прибыли. Стадии разработки прототипной системы, ее развитие до промышленной экспертной системы (ЭС). Оценка, стыковка с программами и поддержка ЭС.

    презентация [79,0 K], добавлен 03.01.2014

  • Определение основных функциональных требований к модулям автоматизированной информационной системы. Разработка концептуальной модели данных. Реализация системы учета объектов интеллектуальной собственности и научно-технической продукции университета.

    дипломная работа [5,2 M], добавлен 26.05.2012

  • Анализ исследований на тему предрасположенности человека к химических зависимостям. Создание опроса, на основе проанализированной литературы. Анализ и выбор технологии для создания интеллектуальной системы. Проектирование интеллектуальной системы.

    дипломная работа [2,5 M], добавлен 26.08.2017

  • Реализация программы, позволяющей принять решение о выборе поставщика товаров, по аналогии с продукционной моделью представления знаний (сопоставления образцов и консиквентов). Математическая постановка задачи, программный алгоритм и этапы его разработки.

    курсовая работа [812,8 K], добавлен 13.11.2012

  • Этапы проектирования и программная реализация интернет-магазина. Методы разработки его интерфейса - элементов и компонентов программы, которые способны оказывать влияние на взаимодействие пользователя с программным обеспечением. Защита интернет-магазина.

    контрольная работа [28,7 K], добавлен 02.10.2010

  • История развития, применение искусственных нейронных сетей. Распознавание образов в сети. Сжатие данных и ассоциативная память. Проектирование экспертной системы, позволяющей диагностировать заболевания органов пищеварения. Программная реализация системы.

    курсовая работа [744,0 K], добавлен 05.02.2016

  • Написание автоматизированной информационной системы "Контроль и реализация товара для автосалона" в операционной системе Windows 2000 или Windows XP. Проектирование подсистемы на базе программы "1С:Предприятие", программная реализация ряда функций.

    дипломная работа [3,1 M], добавлен 29.04.2011

  • Понятие и функциональные особенности глобальной интеллектуальной сети, ее значение на современном этапе, структура и принципы внутренней организации. Основные этапы и закономерности создания интеллектуальной сети, главные требования к данному процессу.

    курсовая работа [36,9 K], добавлен 31.05.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.