Discuti il tutorial sul forum !
Algoritmo a priori con php e mysql
Obiettivo
In questo articolo tratteremo come implementare l'algoritmo a priori in php per trovare coppie di articoli (prodotti)
che hanno alta frequenza tra un insieme di prodotti venduti.
L'algoritmo a priori
Questo algoritmo e' utilizzato per trovare coppie di insiemi frequenti in un insiemi di oggetti che possono essere
qualsiasi cosa. Ad esempio se analizziamo i carrelli della spesa per capire quali prodotti vengono comprati insieme,
questa informazione viene usata per posizionare i prodotti sugli scaffali ed ottimizzare i percorsi fatti.
Altre applicazioni del M-B problem:
Basket:documenti ,articoli: parole (frasi e concetti in relazione)
Basket: frasi, articoli: documenti (plagio, mirror sites su web)
Risultati del M-B Mining
Association Rules: regole del tipo se un cliente compra X1,X2,…,Xn allora compra anche Y con alta probabilita’. La probabilita’ minima che noi pretendiamo si chiama confidenza. Richiediamo che questa sia decisamente piu’ alta di quella attesa.
Ad esempio la regola latte,burro=>pane potrebbe derivare dal fatto che quasi tutti comprano pane. Mentre la regola pannolini=>birra vale con confidenza molto piu’ alta della percentuale di clienti che compra birra.
Algoritmo A-Priori
Si procede a livelli:
Read( s ); /*soglia di supporto
L1:= {a | a appare con frequenza >= s };
L2:= {{a,b} | a,b L1,{a,b} appare con frequenza >= s };
L3:= {{a,b,c} | {a,b}, {a,c}, {b,c}, L2 {a,b,c} appare con frequenza >= s };
ETC….
Il database
Il database a cui ci riferiremo è mysql.Il nostro database è cosi composto:
CREATE TABLE `definitivo_analisi` (
`id` int(11) NOT NULL auto_increment,
`codice` varchar(100) default NULL,
`utente` varchar(255) default NULL,
`data` varchar(255) default NULL
PRIMARY KEY (`id`)
) TYPE=MyISAM;
dove "codice" e' il codice del prodotto, "utente" e' chi lo ha acquistato e "data" e' la data di acquisto.
Il codice php è il seguente:
<?
echo"<form action=apriori.php method=post>";
echo"inserisci soglia<input type=text name=s><input type=submit value=analizza>";
echo"</form>";
set_time_limit(500); //di default è 30 , questo setta limit off
echo"<center><table><tr bgcolor=orange>Spiegazione</tr><tr><td>";
echo"Questa utility ci permette di vedere quali prodotti acquistano insieme gli utenti,in modo da mettere questi prodotti vicini ";
echo".Il supporto è il numero di volte in cui i prodotti compaiono tra gli acquisti. La soglia è il numero di volte minime da considerare.";
echo"<br>";
$arrai = array();
$items = array();
//carica l'array con gli item venduti
$cnt=0;
connessione_al_db();
$dati=mysql_query("select distinct codice from definitivo_analisi");
$numero_righe=mysql_num_rows($dati);
while($array=mysql_fetch_array($dati)){
$arrai[$cnt]=$array[codice];
$cnt++;
}
$conta=0;
$soglia=$s;
//1 item
for($i=0;$i<=strlen($arrai)+1;$i++){
if(issolofrequente($arrai[$i],$soglia)==1){
$items[$conta]=$arrai[$i];
$conta++;
}
}
//2 item
for($i=0;$i<=strlen($arrai)+1;$i++){
for($j=0;$j<=strlen($arrai)+1;$j++){
if(isduefrequente($arrai[$i],$arrai[$j],$soglia)==1){}
}
}
//3 item
for($i=0;$i<=strlen($arrai)+1;$i++){
for($j=0;$j<=strlen($arrai)+1;$j++){
for($z=0;$z<=strlen($arrai)+1;$z++){
if(istrefrequente($arrai[$i],$arrai[$j],$arrai[$z],$soglia)==1){}
}
}
}
//calcola la frequenza di un solo item
function issolofrequente($uno,$due)
{
connessione_al_db();
$contatore=0;
$dati=mysql_query("select utente from definitivo_analisi where codice='$uno'");
$numero_righe=mysql_num_rows($dati);
while($array=mysql_fetch_array($dati)){
$contatore++;
}
if($contatore>=$due)
{
echo "codice: <b>".$uno."</b> supporto:";
echo "<b>".$contatore."</b><br>";
return 1;
}
else return 0;
}
//calcola la frequenza di due items
function isduefrequente($uno,$due,$tre)
{
if($uno!=$due)
{
connessione_al_db();
$contatore=0;
$dati=mysql_query("select utente from definitivo_analisi where codice='$uno'");
while($array=mysql_fetch_array($dati)){
$utente=$array[utente];
$dati2=mysql_query("select utente from definitivo_analisi where codice='$due'");
while($array2=mysql_fetch_array($dati2)){
if($utente==$array2[utente]) $contatore++;
}
}
if($contatore>=$tre)
{
echo "codice:<b>".$uno."</b>-<b>".$due."</b> supporto:";
echo "<b>".$contatore."</b><br>";
return 1;
}
else return 0;
}
else return 0;
}
//calcola la frequenza di tre items
function istrefrequente($uno,$due,$tre,$quattro)
{
if($uno!=$due)if($uno!=$tre)if($due!=$tre)
{
connessione_al_db();
$contatore=0;
$dati=mysql_query("select utente from definitivo_analisi where codice='$uno'");
while($array=mysql_fetch_array($dati)){
$utente=$array[utente];
$dati2=mysql_query("select utente from definitivo_analisi where codice='$due'");
while($array2=mysql_fetch_array($dati2)){
$utente2=$array2[utente];
$dati3=mysql_query("select utente from definitivo_analisi where codice='$tre'");
while($array3=mysql_fetch_array($dati3)){
$utente3=$array3[utente];
if($utente==$utente2)
if($utente==$array3[utente])
$contatore++;
}}}
if($contatore>=$quattro)
{
echo "codice:<b>".$uno."</b>-<b>".$due."</b>-<b>".$tre."</b> supporto:";
echo "<b>".$contatore."</b><br>";
return 1;
}
else return 0;
}
else return 0;
}
echo"</td></tr></table>";
?>
Correlati
- Rimuovere spazi da una stringa con php
- Rimuovere tag <script> da una stringa con php
- Upload di file con php e ajax
- Algoritmo a priori (parte 1)
- Algoritmo a priori (parte 2)
- Algoritmo a priori con php e mysql
- creare e cancellare un database con phpmyadmin
- creare una tabella con phpmyadmin
- Redirect in php
- Scrivere codice php in pagine .html
- Rimuovere spazi da una stringa con php
- Guida completa al linguaggio php
- Colorare il codice php
- Criptare e decriptare un cookie in php
- Un modo intelligente di unire codice php e html
- Inviare informazioni da javascript a php
- Eseguire codice php contenuto in un testo
- Eliminare eventuali tag html da un testo in php
- login con http con php
- Misurare il page rank di google di un sito in php
- Le sessioni con php5
- Esportare gli ultimi post di phpbb
- validare indirizzo email con php
- Creare un semplice form che invia dati pagina php in flash
- Creare un file xml al volo in php
- Importare dati da un file csv a una tabella Mysql
- Creare sistema tell a friend in php
- Output via javascript in php
- Convertire file doc in pdf con php
- Consentire solo caratteri alfanumerici in php
- validare indirizzo email con php
- Convertire file doc in html con php
- Evidenziare parola ricercata con php
- Upload di file con php e ajax
- Le variabili in php
- tempo esecuzione script in php
- conoscere utenti online in php
- Creare uno scrolling orizzontale di news scritte in un file di testo in php
- Motore di ricerca nei file xml con php
- Realizzare una chat con flash e php
- Realizzare una chat con flash e php (parte 2 il server)
- Upload di file in php
- Pagine piu veloci con php e ajax
- Caricare i dati da mysql tramite php
- Inviare email con flash e php
- Caricare i dati da mysql tramite php
- Creare un file rss dinamico con php
- Lavorare con le directory in php
- Copiare, cancellare e rinominare un file in php
- Usare le api di google con php
- Inviare una semplice email con php
- Conoscere se una richiesta è fatta da una pagina sotto ssl con php
- Includere file esterni in php
- Creare un motore di ricerca nei files con flash e php
- tabelle con righe a colori alternati con php
- Scrivere email in una immagine per evitare gli spammers in php
- Semplice upload di file in php
Commenti
Scrivi un commento































