Utente:G273Y/Sandbox: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
G273Y (discussione | contributi)
G273Y (discussione | contributi)
Pagina svuotata
Etichetta: Svuotamento
Riga 1:
== Sommario ==
:'''[[/Copertina/]]'''
 
# {{modulo|Applicazioni pratiche di machine learning}}
#*{{modulo|Applicazioni pratiche di machine learning/Previsione di vendite future }}
#*{{modulo|Applicazioni pratiche di machine learning/Target dei clienti }}
 
[[categoria:Informatica]]
{{Alfabetico|I}}
 
{{avanzamento|0%|01 gennaio 2020}}
 
[[Categoria:Intelligenza artificiale| ]]
 
== Previsione di vendite future ==
 
===Caricamento librerie ===
library(dplyr)
library(gbm)
library(ggplot2)
 
===Parte 1: Dati===
Avendo un set di dati temporali composto da vendite giornaliere,gentilmente fornito da una delle più grandi società di software russe - 1C Azienda (http://1c.ru/eng/title.htm) è possibile prevedere quali saranno le vendite future dell'azienda . Nel dataset sales_train ci sono 2.935.849 registrazioni giornaliere con 11 variabili a cui ne verranno aggiunte altre nei prossimi mesi. In tutto ci sono 60 negozi, 22170 articoli e 84 categorie.
 
'''Descrizioni dei files:'''
*''sales_train.csv'' : Dati storici giornalieri da gennaio 2013 a ottobre 2015.
*''items.csv'' - informazioni supplementari su articoli/prodotti.
*''item_categories.csv'' - informazioni supplementari su categorie di articoli.
*''shops.csv'' - informazioni supplementari sui negozi.
 
'''Variabili contenute nei datasets:'''
*''ID'' : un ID che rappresenta un negozio o un articolo all'interno del set di dati
*''shop_id'' : identificatore univoco di un negozio
*''item_id'' : identificatore univoco di un prodotto
*''item_category_id'' - identificatore univoco della categoria di articoli
*''item_cnt_day'' - numero di prodotti venduti. Si vuole predire un valore mensile di questo dato
*''item_price'' - prezzo corrente di un articolo
*''data'' - data nel formato gg/mm/aaaa
*''date_block_num'' - un numero di mese consecutivo, utilizzato per comodità. Gennaio 2013 è 0, febbraio 2013 è 1, ...,Ottobre 2015 è il 33
*''item_name'' : nome dell'articolo
*''name_shop'' : nome del negozio
*''item_category_name'' - nome della categoria dell'articolo
 
'''Caricamento dei dati:'''
sales_train <- read.csv("sales_train_v2.csv")
items2 <-read.csv("items.csv")
items <- read.csv("items-translated.csv")
items <- cbind(items,item_category_id=items2$item_category_id)
shops <- read.csv("shops-translated.csv")
categories <- read.csv("item_categories-translated.csv")
items <- merge(items,categories, by =c("item_category_id"), all.x = TRUE)
sales_train <- merge(sales_train,items, by =c("item_id"), all.x = TRUE)
sales_train <- merge(sales_train,shops, by =c("shop_id"), all.x = TRUE)
 
'''Creazione di nuove variabili nel dataset :'''
 
'''#Creazione delle variabili: week_day, month , week_year'''
sales_train$date <- as.Date(sales_train$date,tryFormats=c("%d.%m.%Y"))
p <- as.POSIXlt(sales_train$date)
sales_train <- cbind(sales_train,week_day=p$wday +1)
sales_train <- cbind(sales_train,month=p$mon +1)
week_year<-as.numeric(strftime(p, format = "%V"))
sales_train <- cbind(sales_train,week_year)
 
'''#Creazione della variabile: Media delle vendite di ogni articolo per ogni mese
df1<-sales_train %>%'''
group_by(date_block_num,item_id) %>%
summarise(date_item_avg=mean(item_cnt_day))
sales_train <- merge(sales_train, as.data.frame(df1),
by=c("date_block_num","item_id"), all.x = TRUE)
 
'''#Creazione della variabile: Media delle vendite per categoria per ogni mese'''
df1<-sales_train %>%
group_by(date_block_num,shop_id, item_category_id) %>%
summarise(date_shop_cat_avg=mean(item_cnt_day))
sales_train <- merge(sales_train, as.data.frame(df1),
by=c("date_block_num","shop_id","item_category_id"), all.x =TRUE)
 
'''#Creazione variabile da predire item_cnt_month (vendite totali mensili)'''
df1<-sales_train %>%
group_by(date_block_num,week_year,week_day,shop_id,item_category_
id,item_id,item_price, date_item_avg, date_shop_cat_avg) %>%
summarise(item_cnt_month=sum(item_cnt_day))
sales_train <- merge(sales_train, as.data.frame(df1),
by=c("date_block_num","week_year","week_day","shop_id","item_category_id","item_id","item_price", "date_item_avg","date_shop_cat_avg"), all.x = TRUE)
 
E' possibile migliorare il modello aggiungendo nuove variabili e/o modificando il tuning degli iperparametri (DA FARE)
 
==Parte 2: Domanda di ricerca==
Si vogliono predire le vendite totali per ogni prodotto e negozio nel prossimo mese disponibile
(novembre 2015)
 
==Parte 3: Esplorazione dei dati==
[[File:Categorie con più di 10000 prodotti venduti.png|riquadrato|Categorie con più di 10000 prodotti venduti da gennaio 2013 a settembre 2015]]