Proiectarea Unui Clasificator Inteligent Pentru Aplicatiile Economice

Cuprins:

Introducere 2

Capitolul 1. Inteligența Artificială 3

1.1. Istoricul Rețelelor Neuronale 5

1.2. Neuronul biologic și cel artificial 6

1.2.1. Neuronul biologic 6

1.2.3. Neuronul biologic vs. Neuronul artificial 12

1.3.1. Arhitectura unei rețele neuronale 13

Capitolul 2. Clasificatori neuronali 15

2.1. Despre clasificatorii neuronali 15

2.2. Rețele neuronale pentru recunoaștere și clasificare 17

2.2.1. Proiectarea clasificatorilor 18

Capitolul 3. Cercetare de Marketing realizare aplicație de clasificare a băncilor în funcție de cursul valutar 19

3.1. Obiectivul cercetării: 19

3.2. Informații disponibile: 19

3.4. Dimensionare și formare eșantion ancheta 20

3.5. Conceperea instrumentului de proiectare și colectare a informațiilor 21

3.7. Concluzii: 23

Capitolul 4. Aplicație web în care sunt clasificate băncile din România în funcție de o anumită valută 24

Capitolul 5 . Proiectarea unui clasificator inteligent pentru clasificarea cursului valutar din ianuarie, pentru USD, EUR, GBP 28

6. Concluzii și propuneri 41

7. Anexe 42

Bibliografie 59

Introducere

M-am gândit ca proiectul meu de diplomă să aibă tema: „Proiectarea unui clasificator inteligent pentru aplicațiile economice”, pentru ca am terminat o facultate cu o specializare care se axează atât pe partea tehnică, cât și pe partea economică. Dorindu-mi să le îmbin pe cele două și să fac ca proiectul meu să fie folositor, m-am gândit să proiectez cu ajutorul inteligenței artificiale și a programului Matlab un clasificator pentru aplicațiile economice, deoarece inteligența artificială ușor-ușor a intrat din sfera tehnică și în sfera economică. Am mai realizat o aplicație web în php, urmând ca pe viitor să mă gândesc serios și în implementarea ei pentru Android și IOS având niște rezultate foarte bune în determinarea utilității lor, în urma cercetării de marketing pe care am realizat-o.

În Capitolul 1. am facut o introducere în inteligența artificială, am scris despre istoricul Rețelelor Neuronale, despre Neuronul Biologic și Neuronul Artificial și am făcut corelația dintre Neuronul Biologic și cel Artificial, o introducere în noțiunea de Rețele Artificiale Neuronale și despre Arhitectura unei Rețele Neuronale.

În Capitolul 2. am vorbit în mare despre Clasificatorii Neuronali, despre Rețelele Neuronale de Recunoaștere și Clasificare și despre Proiectarea Clasificatorilor.

În Capitolul 3. realizat o cercetare de marketing prin care am vrut să văd cât de mult ar ajuta oamenii o aplicație web care să clasifice băncile după o anumită valută pe care aceștia doresc să o schimbe și am ajuns la concluzia ca este utilă și pe viitor intenționez să implementez și pentru Android și IOS, deoarece am observat tendința oamenilor de a utiliza mai mult smarthpone-urile, în detrimentul laptop-urilor.

În Capitolul 4. Am realizat aplicația web aplicația în PHP cu ajutorul Notepad ++ și al serverului de web XAMPP de la Apache friends, în care sunt clasificate băncile din România după o anumită valută dorită de utilizator.

În Capitolul 5. am realizat un clasificator inteligent pentru aplicațiile economice, am clasificat valutele, EUR, GBP și USD din ianuarie și am ajuns la concluzia că cel mai mult a crescut USD, urmat de EUR și apoi de GBP.

Am introdus câteva concluzii.

În Anexe am pus chestionarul pe care l-am creeat în Google Drive, codul PHP al aplicațieie mele și codul Matlab al clasificatorului.

Capitolul 1. Inteligența Artificială

Inteligența Artificială s-a dezvoltat inițial în sfera tehnică, în sfera economică intrând recent prin intermediul unor aplicații economice, nu doar pentru calitatea rezultatelor obținute, ci și a titlului de noutate, zilnic făcându-se pași importanți în aplicarea ei în sfera economică.

Anul 1943 marchează debutul calcului neuronal. Atunci apare primul neuron artificial, rezultatul dintre colaborarea între un neurofiziolog cu un matematician( W.S. McCulloch și W. Pitts).

Data de naștere a inteligenței artificiale( IA) este considerată iulie 1956, când a avut loc prima conferință internatională pe această temă la Colegiul Darthmouth din Hanover, New Hampshire, SUA.

Scopul principal al IA este de a intra întru totul creierului uman în modul în care acesta interacționează. gândește sau răspunde și Dar după cele afirmate de cercetători, acest lucru este aproape imposibil momentan.

În IA se folosesc ca limbaje de programare precum:

fie limbaje dedicate specifice( Prolog, Lips);

fie limbaje de programare clasice: Java, C++ etc.

În domeniul IA nu există un algortim prestabilit cu care sa se resolve toate problemele, se folosesc algoritmi euristici, chiar dacă acești algoritmi nu dau întotdeauna cele mai bune rezultate.

Până acum s-au dezvoltat două metode de abordare a IA:

prima metodă este cunoscută sub numele de top-down approach Au symbolic approach to IA. Bordul automat al a fost realizat prin construirea unor algoritmi și aplicarea lor printr-o serie de date de intrare. A fost evaluat tot procesul, un algoritm urmărind să transforme intrările într-o formă mai accesibilă pentru utilizator. Acestă tehnică are dezavantajul că depinde foarte mult de mașină și poate fi utilizată doar în probleme restranse;

a doua metodă a fost construirea unei rețele neuronale care asigură convertirea imagini în informație. În anii 60 a fost contruită o astfel de rețea denumită perceptron( o combinație reușită de rețea neuronală și informații procesate), s-a reușit recunoașterea pentru prima dată a imaginilor de către un PC.

1.1. Istoricul Rețelelor Neuronale

În 1943 neuropsihologul Waren McCulloch și Walter Pitts au pus bazele rețelelor neuronale prin lucrarea „A logical Calculus of the Ideas Immanent in Nervous Activity”. Simularea unei rețele a fost realizată cu ajutorul unor circuite electronice.

În 1949 Donald Hebb scrie cartea intitulată „The Organization of Behavior”, în care a arătat că o conexiune neuronală devine din ce în ce mai puternică pe măsură ce este folosită, concept esențial în procesul de învățare al unei rețele.

În 1958 Rosenblatt introduce Rețeaua neuronală simplă cu un singur strat, mai târziu fiind denumită perceptron.

În 1959 Bernard Widrow și Marcian Hoff au dezvoltat modelele ADALINE(ADAptive LINear NEuron) și MADALINE care a fost prima rețea neuronală ce a realizat o problemă reală și încă mai este folosită, în special în controlul traficului aerian.

În 1969, Minsky și Papert demonstează limitele perceptronului cu un singur strat.

În 1974 rețelele neuronale încep să fie utilizate pe scară largă o dată ci introducerea algoritmului de propagare înapoi a semnalului(„backpropagation”). Algoritmul a fost descris inițial de Paul Werbos.

În 1982 John Hopfield propune legătura bidirecțională în cadrul unei rețele apărând rețelele neuronale recurente.

Tot în 1982 Kohonen dezvoltă teoria referitoare la rețelele cu instrure nesupervizată, cu auto-organizare, care mai târziu îi poartă numele.

În 1985 Parker și Le Cun descoperă metoda de învățare cu propagarea înapoi a semnalului.

În 1990 a fost dezvoltată teoria referitoare la rețelele neuronale artificiale bazate pe funcții de activare radiale.

În 2000 se evidențiază puterea rețelelor neuronale în ansamblu și a mașinilor vector suport.

Din 2000 până în prezent utilizarea rețelelor neuronale și-a lărgit spectrul considerabil. Astfel, au fost utilizate în: prognoze economice( la nivel micro și macro), detecția imaginilor în imagini biomedicale, probleme chimice, în rezolvarea problemelor hidrologice, analiza impedanței bioelectrice de evaluare a compoziției corpului la vârstinici, fizică nucleară.

1.2. Neuronul biologic și cel artificial

Pentru a se înțelege mai bine funcționarea unei rețele neuronale artificiale se dorește petru început studiul neuronului biologic.

1.2.1. Neuronul biologic

Unitatea fundamentală a creierului este neuronul. Creierul uman are in medie neuroni, fiecare este interconectat cu circa alți neuroni, prin cca sinapse.

Structura neuronului biologic:

corpul neuronal(sau soma), format din membrană și substanță intracelulară. Semnalele de intrare sunt transformate în semnale de ieșire.

arborele dendritic este reprezentat de niște prelungiri ale corpului neuronal care colectează semnalele de intrare de la alți neuroni.

axonul, este o prelungire a corpului neuronal. Acesta transmite semnalul de ieșire către alți neuroni prin intermediul arborelui axonic.

Neuronii cu ajutorul sinapselor sunt interconectați, reprezentând punctele de contact dintre ramurile arborelui dendritic ale unui neuron de la intrarea în sinapsă cu ramurile arborelui axonic al unui neuron de după sinapsă.

Cu ajutorul dendritelor, sunt primite de către neuron impulsuri nervoase sub formă electrică. Astfel de provoacă depolarizări ale membranei neuronale, modificarea diferenței de potential dintre exteriorul și interiorul celulei.

Potențialele de pe suprafața membranei se adună, iar dacă potențialul adunat depășește o valoare denumită prag se generează un potențial de acțiune care se trasmite de-alungul axonului până la legătura sinaptică.

În continuare am realizat două figuri în care se prezintă structura de bază a unui neuron biologic.

Figura 1.1. Neuronul biologic

(Figură realizată în Photoscape în data de 4.04.2015, ora 17:08)

Figura 1.2. Neuronul biologic cu punerea in evindeță a sinapselor

(Figură realizată în Photoscape în data de 4.04.2015, ora 17:16)

Impulsurile de la nivelul sinapsei eliberează niște substanțe chimice purtătoare de informație, denumite neurotransmițători, cantitatea lor depinzând de impulsurile primite și de alți factori. Membrana de după sinapsă primește neurotransmițătorii și duce la modificări ale permeabilității ionice a membranei, denumite depolarizări. Sinapsele sunt excitatoare dacă provoacă depolarizare pozitivă și inhibatoare dacă provoacă depolarizare negativă.

1.2.2. Neuronul artificial

În rețeaua neuronală, asemănător neuronului biologic este neuronul artificial. Fiecare dintre acești neuroni are m intrări și o ieșire.

Intrările , cu i=, corespunzătoare semnalelor electrice din neuronul biologic sunt numere reale și sunt semnale venite din afară sau de la alți neuroni. Fiecare dintre aceste intrări are o pondere , corespunzând valorii sinaptice a neuronului biologic.

Semnalul de ieșire este constituit în relația:

În care:

, reprezintă vectorul intrărilor;

, reprezintă vectorul ponderilor;

se numește funcție de activare.

Luăm un z ca fiind o variabilă reprezentată de produsul scalar dat de relația:

În cea mai simplă situație, funcția de activare( reprezentând ieșirea) y se calculează în felul următor:

este pragul de activare.

Figura 1.3. Anatomia unui neuron cu o singură ieșire

(Figură realizată în Photoscape în data de 12.04.2015)

Funcțiile de activare cele mai utilizare sunt:

Cea liniară este de forma:

Coeficientul b joacă rolul unui prag.

Funcția de activare treaptă sau prag(binară)

În acest caz, când mărimea de intrare a neuronului, u, atinge sau depășește un prag , funcția produce la ieșirea neuronului β; în caz contrar este valoarea – .

Mărimile sunt scalar pozitivi, iar funcția treaptă este definită formal de:

Ca niște observații:

În general la constantele și β se folosesc reprezentări binare, de exemplu β=1 și α=0, respective α = β = 1, iar ᴦ se ia în general 0.

În cazul α =1 și β = 1, iar ᴦ = 0 se obține funcția de semn:

Funcția activare rampă combinația dintre funcțiile treaptă și liniară. Aceasta stabilește pentru ieșirea neuronului limita maximă și minimă, ᴦ, asigurând totodată o variație liniară între aceste limite.

În general, punctele de saturare sunt simetrice cu ieșirea iar expresia funcției rampă arată cam așa:

Funcții de activare tip signoid

Acestea sunt mărginite, crescătoare și monotone, și asigură, într-un domeniu predefinit, o variație continuă a ieșirii neuronului.

Funcțiile sigmoid cele mai utilzate sunt:

Sigmoidul logistic sau unipolar:

Sigmoidul tangent hiperbolic sau bipolar.

Funcția de activare de tip gaussian

Acestea au formă radială, identică în raport cu o valoare medie și sunt caracterizate de un grad de împrăștiere, descris de variația ϭ.

De asemenea, pot fi considerate clasice și alte funcții de activare precum:

tangenta hiperbolică:

funcția de activare de tip gaussian, de forma:

Alegerea unei funcții de activare nefiind constrânsă decât de analogia și modelul biologic, depinde de tipul problemei pe care trebuie să o rezolvăm și de modelul de rețea neuronală ales. Valoarea dată de funcția de activare direcționată pe căile de ieșire, este egală arborelui axonic din modelul biologic.

Figura 1.4. Reprezentarea grafică a principalelor funcții de adaptare( activare, antrenare)(Sursă: „Rețele neuronale artificiale”- Stelian Stancu, Alexandra Maria Constantin).

1.2.3. Neuronul biologic vs. Neuronul artificial

Neuronul biologic cuprinde multe alte componente care în neuronul artificial au fost omise.

Cele mai importante care merită precizate ar fi:

– cel biologic răspunde la semnalele de intrare continuu, nu discret ceea ce se numește răspuns gradual. Totuși relația neliniară dintre ieșirea și intrarea unui neuron biologic este o trăsătură universală, aparținând și celui artificial prin funcția de activare.

– neuronii biologici nu au toți aceelași moment fix de activare și nu acționeză asupra controlului central al unui tact generat de un ceas.

– substanța neuro-transmițătoare de la sinapsă poate varia impredictibil. Efectul poate fi modelat, considerând o generalizare a dinamicii modelului determinist McCullogh-Pitts.

Chiar dacă trebuie să facem apel la realismul biologic, ne interesează trăsăturile și capacitatea de calcul ale modelului de rețea neuronală artificială și nu direct în aplicabilitatea ei la modelarea creierului.

Legătura dintre rețelele biologice și cele artificiale este importantă la nivelul reprezentării și la nivel algoritmic, nu și la nivelul modelarii în detaliu.

Totuși există numeroase asemănări la nivel algoritmic între neuronul biologic și cel artificial.

1.3. Rețele neuronale artificiale( RNA)

O rețea neuronală artificială reprezintă un grup de neuroni artificiali interconectați care utilizează un model matematic sau computațional la procesarea informației.

În termeni practici, rețelele neuronale sunt metode de modelare a datelor statistice neliniare.

Calculul neuronal( CN) are la bază modele matematice din neurobiologie care se numesc rețele neuronale.

Fiindcă ne referim la o rețea, este o matrice de noduri sau neuroni legați oarecare, unul lângă altul, fiecare având intrări și ieșiri. Intrările sunt preluate de senzori, iar mesajele sunt gândite anterior de către alte rețele și transmise mai departe.

Rețelele neuronale nu sunt bune pentru ecuații matematice complicate, cum nici creierul uman nu se descurcă așa de bine cu unele calcule matematice, dar au un avantaj cu ajutorul culorilor, a sunetelor și a formelor.

Fiind încă un concept nou, rețelele neuronale astăzi nu sunt atât de utilizate, nefiind cunoscute atât de bine și nu sunt exploatate atât de mult cât ar trebui.

1.3.1. Arhitectura unei rețele neuronale

Când ne gândim la o rețea neuroanlă, ne gândim ca la o cutie neagră( un dispozitiv care primește intrări și scoate ieșiri).

În figura 1.5. am reprezentată o structură neuronală multistrat.

Figura 1.5. Arhitectura unei RNA multistrat(Sursă: „Rețele neuronale artificiale”- Stelian Stancu, Alexandra Maria Constantin, pag. 28)

Principalele elemente ale unui RNA multistrat sunt:

Statul de intrare – este un strat de neuroni care primesc informații de la surse externe fiind introduse în RNA după ce au fost prelucrate;

Straturile ascunse – un strat de neuroni ce primește informații de la cel de intrare și le proceseză într-un mod ascuns. Acesta nu are conexiuni directe în exterior. Acționează sub forma unei cutii negre, de aceea fiind denumit și ascuns.

Strat de ieșire – este un strat de neuroni care primește informații prelucrate și transmite la ieșire semnalele de ieșire din sistem;

Pragul de activare – acțonează ca un neuron distinct, oferă un prag de activare a neuronilor. Acest neuron este conectat la mai mulți neuroni din straturile ascunse, cât și la neuroni din stratul de ieșire.

Principala calitate a rețelelor neuronale este aceea de clasificare.

Capitolul 2. Clasificatori neuronali

2.1. Despre clasificatorii neuronali

Clasificatorii neuronali, cei mai des folosiți sunt reprezentați în următoarea taxonomie după tipul intrărilor, în funcție de modul de antrenare și de arhitectura rețelei:

Figura 2.1. Clasificatori neuronali

(Sursă: „Rețele neuronale artificiale”- Stelian Stancu, Alexandra Maria Constantin, pag. 40)

Blocurile de jos indică algoritmii clasici cei mai apropiați de clasificatorul neuronal care îi corespunde.

În tabelul 1.1. avem clasificarea rețelelor neuronale după următoarele criterii:

tipul arhitecturii;

algoritmul de învățare;

tipul variabilelor.

(Sursă: „Rețele neuronale artificiale”- Stelian Stancu, Alexandra Maria Constantin, pag 41.

2.2. Rețele neuronale pentru recunoaștere și clasificare

Organizarea sau clasificarea este cunoscută ca fiind recunoașterea asemănărilor și deosebirilor dintre date, fiind reprezentate de instanțe ale unor obiecte dintr-o serie de obiecte distincte. Într-un proces de clasificare obiectele sunt grupate în clase, după asemănările și deosebirile descoperite. De la atributele specifice fiecărui obiect formăm clase care corespund specificelor obiectelor. Obiectivul final este acela de a este acela de a perimite sistemului să identifice obiectele din jurul lui, pe baza proprietăților clasei respective.

În cadrul problemelor de clasificare, un sistem are de parcurs două etape:

clasificarea, în timpul căreia sistemul învață caracteristicile generale ale claselor de bază;

recunoașterea, sistemul suprapune caracteristicile unei instanțe cu al unora deja cunoscute și identifică dacă ii aparține instanța respectivă.

Toate agoritmurile de antrenare încearcă să modifice structura rețelei ca să realizeze o conexiune cât mai bună între ieșirile și intrările rețelei. Modelul acesta de antrenare este cunoscut sub numele de antrenare supravegheată.

Există numeroase situații practice, mai ales în problemele de clasificare când nu se cunoaște de la început răspunsul pe care ar trebui să îl dea rețeaua pentru un anume vector de intrare. În acest caz este de dorit ca rețeaua să recunoască singură caracteristicile datelor de intrare. Rețeaua trebuie să înțeleagă singură moduc în care organizează informația. Procesele acestea sunt cunoscute sub numele de învățare nesupravegheată și tratează probleme de organizare( clasificare).

În cazul proceselor de învățare nesupravegheată, procesul mai poarta denumirea și de zonare( în engleză clustering). Acestă denumire vine de la dispunerea punctelor corespunzătoare , sub formă de nori sau ciorchini, vectorilor de intrare în anumite zone,. În interiorul unei astfel de zone punctele sunt mai apropiate de ele în concordanță cu un centru comun.

2.2.1. Proiectarea clasificatorilor

A proiecta un clasificator înseamnă următoarele lucruri:

Să stabilim clasele de obiecte din mulțimea X a datelor de instruire;

Stabilirea prototipurilor claselor;

A da o regulă pentru alocarea unui obiect necunoscut în una din clasele precizate.

Capitolul 3. Cercetare de Marketing realizare aplicație de clasificare a băncilor în funcție de cursul valutar

3.1. Obiectivul cercetării:

Studiu asupra utilizatorilor de aplicații si a celor care urmăresc cursul valuar și eventuala implementare a unei astfel de aplicații care să clasifice băncile în funcție de cursul valutar.

Obiective secundare urmărite în urma cercetării:

– Cunoașterea gradului în care utilizatorii sunt mulțumiți de actuala calitate și flexibilitate a aplicațiilor deja existente;

– Determinarea frecvenței cu care grupul nostru de respondenți utilizează astfel de aplicații;

– Studierea preferinței utilizatorile referitoare la o aplicație pentru curs valutar și sistemul de operare pentru care să fie implementată.

3.2. Informații disponibile:

http://www.cursbnr.ro

3.2.1. Informații interne: Culese de pe www.cursbnr.ro.

Pe acest site avem acces la aplicații precum:

Curs Valutar BNR. Aceasta ne arată cum a crescut sau scăzut valoarea unei valute într-un interval de zile stabilit de noi;

Convertor Valutar. Această aplicație convertește o valută în orice altă valută dorim;

Grafic evoluție valute – Ne generează un grafic al evoluției unei valute pe mai multe zile.

Cotații valutare interbancare în timp real;

Curs de schimb valutar al băncilor – O aplicație asemănatoare cu ceea ce doresc să implementez eu, dar nu clasifică în funcție de toate valutele, doar după EUR, USD, GBP, CHF;

Arhivă Curs Bnr – O bază de date ce conține informații despre arhiva cursului valutar;

Preluare curs valutar BNR – CursBnr.ro pune la dispozitia administratorilor de site-uri un script de preluare a cursului valutar bnr care poate fi personalizat pentru fiecare caz în parte.

3.2.2. Informatii externe:

Sursa: http://curs-bnr.android.informer.com .

“ Curs BNR este o aplicație gratuită cu ajutorul careia putem prelua în timp real cotațiile valutare ale Bancii Nationale a Romaniei. Aplicația are și functie de convertor valutar și poate afișa istoricul cursului valutar.”

Sursa: http://apps.microsoft.com/windows/ .

“Aplicația Curs Valutar permite afișarea cursului valutar actual pentru principalele monede, dar și convertirea unei sume dintr-o monedă în alta. Aplicația are două ferestre, cea principala unde este afișat cursul valutar și cea a convertorului.”

3.2.3. Alte ipoteze ale cercetării:

– Oamenii au început din ce în ce mai mult să depindă de gadgeturi și din cauza aceasta sau dezvoltat din ce în ce mai multe aplicații;

– Cei mai mulți oameni pleacă în străinătate pentru a-și putea ajuta familia din țara sau pentru a putea trăi mai bine în altă parte;

– Se schimbă foarte des valute, iar aplicațiile deja existente au un minim de informații.

3.3. Alegerea tipului de studiu si a modului de lucru:

În vederea obținerii unor rezultate directe de la consumatori, am ales chestionarul ca mod de lucru și am folosit platforma Google Drive. Chestionarul conține 13 întrebări de tipul inchis( cu una sau mai multe variante de răspuns) și de tip deschis. Acesta poate fi văzut în anexele lucrării.

3.4. Dimensionare și formare eșantion ancheta

Eșantionul ales cuprinde tineri cu vârsta între 18-24 de ani. Am ales acest grup țintă, întrucât plecăm de la premisa că aceștia folosesc foarte de aplicații. În funcție de răspunsurile obținute, voi lua în considerare implementarea unei aplicații pentru curs valutar.

3.5. Conceperea instrumentului de proiectare și colectare a informațiilor

Numărul de respondenți a fost de 30, din care 14 de bărbați(46.7%) și 16 femei(53.3%).

3.6. Analiza datelor:

Am avut 29 de respondenți cu vârste între 18-24 de ani și unul între 25-34 de ani.

Majoritatea respondeților, 25 (83.3 %) dețin în posesie un laptop, 22( 73.3%) au spartphone și altele în propoție de aproximativ 30%.

Pe care dintre ele le folosiți cel mai des?

Trei respondeți au spus că laptop-ul, iar opt dintre aceștia smartphone-ul.

66.7 % din respondenți urmăresc cursul valutar înainte de a merge la una dintre bănci pentru a schimba valutele pe care le deține.

43.3 % din respondenți, în număr de 13 au spus că aplicațiile le ușurează mult munca.

27 de respondenți(90 % au considerat utilă o aplicație care să are bancă ce deține cel mai bun curs valutar în funcție de valută.

3.7. Concluzii:

Analizând datele obținute, am constat este bine gândită implementarea unei aplicații care realizeze clasificarea băncilor în funcție de cursul valutar, întrucât se urmărește des cursul valutar;

Pentru început voi implementa o aplicație pentru web, urmând ca mai apoi să o dezvolt și pentru Android și IOS.

Capitolul 4. Aplicație web în care sunt clasificate băncile din România în funcție de o anumită valută

În urma cercetării de Marketing realizată am constatat că sunt mulți oameni care obisnuiesc sa urmărească cursul valutar de la bănci și ar considera utilă o astfel de aplicație care să le arate ce bancă are cursul valutar cel mai avantajos pentru ei în funcție de valuta pe care vrea să o schimbe.

Am realizat aplicația în PHP cu ajutorul Notepad ++ și al serverului de web XAMPP de la Apache friends.

Am avut nevoie de patru ecrane.

În primul ecran se introduc toate valorile cursului valutar furnizate de către băncile din România, Alpha Bank, BRD, Raiffeisen Bank, BNR, Banca CARPATICA, BCR, ING, C.E.C, Banca Românească, Banca Transilvania și BANCPOST.

Figura 4.1. Screenshout al primului ecran al aplicației

În al doilea ecran se preiau și afișează datele din primul ecran și se afișează care este valoarea pentru lira sterlină.

Figura 4.2. Screenshout al celui de-al II-lea ecran al aplicației

În al III-lea ecran am pus un criteriu de selecție pentru ca utilizatorul să poată alege valuta pentru care vrea să afle valoarea cea mai avantajoasă și care bancă ar fi mai avantajoasă pentru el în schimbarea valutelor sale.

Figura 4.3. Screenshout al celui de-al III-lea ecran al aplicației

Iar în ecranul 4 prin clauza ORDER BY am ordonat băncile în funcție de valuta aleasă de acesta anterior.

Figura 4.4. Screenshout al celui de-al IV-lea ecran al aplicației

În Screenshout-ul de mai sus am clasificat băncile în funcție de lira sterlină.

Intrând în localhost la phpmyadmin mi-am creeat o baza de date( banci_romania) formată dintr-p tabelă(curs_valutar), formată din 31 de câmpuri reprezentând numele băncii și valutele.

Figura 4.5. Structura bazei de date în phpmyadmin

La numele băncii am tipul text, iar la valute am tipul float pentru ca sunt valori cu virgulă mobilă.

Pot face interogări și în phpmyadmin pe baza de date în bara SQL.

Figura 4.6. Interogare în phpmyadmin

Codul aplicației se află în aneza lucrării de diploma.

Capitolul 5 . Proiectarea unui clasificator inteligent pentru clasificarea cursului valutar din ianuarie, pentru USD, EUR, GBP

În proiectarea clasificatorului am aplicat pentru intrări PCA( Principal Component Analysis), prin care am aflat principalele caracteristici ale datelor în felul următor:

Argumente OUTPUT – iesire

Am normalizat matricea mea CursEURUSDGBP formată din următoarele date:

Data EUR GBP USD

1/3/2013 4.4153 5.4547 3.3683

1/4/2013 4.4251 5.452 3.4017

1/7/2013 4.4223 5.4462 3.3917

1/8/2013 4.4106 5.4075 3.3608

1/9/2013 4.4086 5.4173 3.3728

1/10/2013 4.3753 5.3612 3.3393

1/11/2013 4.3802 5.3197 3.301

1/14/2013 4.3814 5.2775 3.2761

1/15/2013 4.3894 5.2833 3.2882

1/16/2013 4.3364 5.2284 3.2596

1/17/2013 4.3351 5.1961 3.2431

1/18/2013 4.3373 5.1755 3.2484

1/21/2013 4.3481 5.188 3.2689

1/22/2013 4.3571 5.1738 3.2658

1/23/2013 4.3727 5.2034 3.2808

1/24/2013 4.3724 5.1969 3.2812

1/25/2013 4.3606 5.1241 3.2482

1/28/2013 4.3877 5.1318 3.2625

1/29/2013 4.3853 5.1356 3.2668

1/30/2013 4.3825 5.0989 3.2338

1/31/2013 4.3828 5.1114 3.2332

normc(CursEURUSDGBP)

ans =

0.2200 0.2264 0.2231

0.2205 0.2263 0.2253

0.2204 0.2260 0.2246

0.2198 0.2244 0.2226

0.2197 0.2248 0.2234

0.2180 0.2225 0.2211

0.2183 0.2208 0.2186

0.2183 0.2190 0.2169

0.2187 0.2193 0.2177

0.2161 0.2170 0.2159

0.2160 0.2157 0.2148

0.2161 0.2148 0.2151

0.2167 0.2153 0.2165

0.2171 0.2147 0.2163

0.2179 0.2160 0.2173

0.2179 0.2157 0.2173

0.2173 0.2127 0.2151

0.2186 0.2130 0.2160

0.2185 0.2131 0.2163

0.2184 0.2116 0.2141

0.2184 0.2121 0.2141

Am aflat caracteristicile principale ale datelor.

>> coeff = pca(ans)

coeff =

0.1605 0.7220 0.6730

0.8103 -0.4858 0.3278

0.5636 0.4927 -0.6630

Distanța dintre coeficienți.

>> wcoeff = pca(ans)

wcoeff =

0.1605 0.7220 0.6730

0.8103 -0.4858 0.3278

0.5636 0.4927 -0.6630

>> [latent,explained,score,tsquared] = pca(ans)

Vectorii valorile proprii ale matricei.

latent =

0.1605 0.7220 0.6730

0.8103 -0.4858 0.3278

0.5636 0.4927 -0.6630

Procentul de variație totală a coeficienților.

explained =

0.0097 -0.0003 0.0007

0.0109 0.0012 -0.0005

0.0103 0.0009 -0.0002

0.0078 0.0002 0.0002

0.0086 0.0004 -0.0003

0.0052 -0.0008 -0.0007

0.0024 -0.0010 0.0006

0.0000 -0.0010 0.0012

0.0007 -0.0004 0.0010

-0.0026 -0.0021 -0.0003

-0.0043 -0.0021 -0.0000

-0.0048 -0.0014 -0.0005

-0.0035 -0.0006 -0.0008

-0.0040 -0.0001 -0.0006

-0.0024 0.0004 -0.0003

-0.0026 0.0005 -0.0004

-0.0063 0.0005 -0.0004

-0.0053 0.0018 0.0000

-0.0051 0.0017 -0.0002

-0.0075 0.0013 0.0006

-0.0071 0.0010 0.0009

Scorurile componentelor principale din matrice.

score =

1.0e-04 *

0.3893

0.0129

0.0035

tsquared – vector coloană statistică

tsquared =

3.8042

4.8519

3.4895

1.7259

2.1530

2.4229

2.0855

4.6729

2.9540

3.8988

3.7811

2.7281

2.5797

1.4215

0.5491

0.9177

1.6101

3.1132

3.1063

3.9400

4.1947

Doarece wcoeff nu este o valoare ortodornată se calculează coefforth.

>> coefforth = inv(diag(std(ans)))* wcoeff

coefforth =

118.4386 532.6691 496.5673

159.2040 -95.4436 64.4101

157.3138 137.5270 -185.0473

>> y = ans;

rng('default'); % for reproducibility

ix = random('unif',0,1,size(y))<0.30;

y(ix) = NaN

y =

0.2200 NaN 0.2231

0.2205 0.2263 0.2253

NaN 0.2260 NaN

0.2198 0.2244 0.2226

0.2197 0.2248 0.2234

NaN 0.2225 0.2211

NaN 0.2208 0.2186

0.2183 0.2190 0.2169

0.2187 NaN NaN

0.2161 0.2170 0.2159

NaN NaN 0.2148

0.2161 NaN NaN

0.2167 NaN NaN

0.2171 NaN 0.2163

0.2179 0.2160 0.2173

NaN 0.2157 0.2173

0.2173 0.2127 0.2151

0.2186 0.2130 NaN

0.2185 NaN 0.2163

0.2184 0.2116 NaN

0.2184 0.2121 0.2141

În continuare am folosit Algortimul Scaled Conjugated Gradient

>> net = feedforwardnet(3,'trainscg');

>> net = train(net,CursEURUSDGBP,ans);

a = net(CursEURUSDGBP)

a =

0.2232 0.2233 0.2230

0.2238 0.2238 0.2241

0.2236 0.2236 0.2230

0.2220 0.2221 0.2227

0.2228 0.2231 0.2225

0.2212 0.2214 0.2208

0.2199 0.2199 0.2196

0.2189 0.2189 0.2186

0.2182 0.2181 0.2186

0.2166 0.2166 0.2166

0.2153 0.2153 0.2152

0.2163 0.2164 0.2162

0.2154 0.2154 0.2157

0.2161 0.2162 0.2159

0.2176 0.2176 0.2176

0.2181 0.2182 0.2179

0.2156 0.2156 0.2151

0.2158 0.2158 0.2158

0.2157 0.2156 0.2159

0.2147 0.2150 0.2139

0.2151 0.2151 0.2140

Am aflat caracteristicile rețelei.

>> train(net)

ans =

version: '8'

name: 'Feed-Forward Neural Network'

efficiency: [1×1 struct]

userdata: [1×1 struct]

numInputs: 1

numLayers: 2

numOutputs: 1

numInputDelays: 0

numLayerDelays: 0

numFeedbackDelays: 0

numWeightElements: 150

sampleTime: 1

biasConnect: [2×1 logical]

inputConnect: [2×1 logical]

layerConnect: [2×2 logical]

outputConnect: [0 1]

inputs: {[1×1 struct]}

layers: {2×1 cell}

biases: {2×1 cell}

outputs: {[] [1×1 struct]}

inputWeights: {2×1 cell}

layerWeights: {2×2 cell}

adaptFcn: 'adaptwb'

adaptParam: [1×1 struct]

divideFcn: 'dividerand'

divideParam: [1×1 struct]

divideMode: 'sample'

initFcn: 'initlay'

performFcn: 'mse'

performParam: [1×1 struct]

plotFcns: {'plotperform' 'plottrainstate' 'ploterrhist' 'plotregression'}

plotParams: {[1×1 struct] [1×1 struct] [1×1 struct] [1×1 struct]}

derivFcn: 'defaultderiv'

trainFcn: 'trainscg'

trainParam: [1×1 struct]

IW: {2×1 cell}

LW: {2×2 cell}

b: {2×1 cell}

revert: [1×1 struct]

gradientFcn: 'defaultderiv'

gradientParam: [1×1 struct]

Pentru creerea clasificatorului am folosit Pattern Recognition Tool( Figura 5.1.).

Figura 5.1. Pattern Reconizing Tool în Matlab

Am introdus intrările și target-ul meu format din două clase.( Figura 5.2.)

Figura 5.2. Intrările și target-ul

Am trecut la faza de antrenare, validare și testare.( Figura 5.3.)

Figura 5.3. Antrenarea, Validarea și Testarea.

Mi s-a deschis fereastra de antrenare a rețelei.( Figura 5.4.)

Figura 5.4. Fereastra de antrenare a rețelei.

Punctul cel mai bun de antrenare( Figura 5.5.)

Figura 5.5. Punctul cel mai bun de antrenare.

Figura 5.6. Gradientul și validarea.

Figura 5.7. Eroarea histogramei.

Am trecut la evaluarea rețelei.

Figura 5.8. Evaluarea rețelei.

La final mi-au fost date rezultatele pe care le-am salvat în Workspace. (Figura 5.9.)

Figura 5.9. Rezultate.

La ieșire am avut următoarele rezultate, de unde se vede ca cel mai mult in cele 21 de zile a crescut USD-ul, urmată de EURO și GBP. (Figura 5.10.)

Figura 5.10. Ieșirile rezultate.

Codul Matlab aferent se află în anexe și rezultatele obținute.

6. Concluzii și propuneri

Am ajuns la concluzia că Inteligența Artificială este din ce în ce mai utilizată în domenii ca Medicina, Economie etc, iar proiectarea unui clasificator pentru aplicațiile economice cu ajutorul Rețelelor Neuronale m-a ajutat și mai mult să îmi dezvolt gândirea de Inginer Economist, să gândesc o problemă atât din punct de vedere tehnic, cât și economic.

Inteligența Artificială înseamnă să înțelegi creierul uman din punct de vedere biologic și să îl transpui în neuroni artificiali și rețele neuronale. Mi s-a părut un domeniu frumos care merită aprofundat poate chiar într-un program de Master în cazul meu.

În urma Cercetării de Marketing am constat că este bună ideea implementării unei aplicații web în PHP pentru ordonarea băncilor din România în funcție de o anumită valută, întrucât respondenții au considerat-o utilă.

Intenționez să implementez după această aplicație web și o aplicație pentru Android și IOS, deoarece se utilizează din ce în ce mai mult smartphone-urile.

7. Anexe

*Obligatoriu

Top of Form

Sunteți: *

 femeie

 bărbat

Între ce limite de vârstă vă încadrați? *

 18-24 de ani

 25-34 de ani

 35-44 de ani

 45-55 de ani

 peste 55 de ani

Aveți rude plecate în străinătate? *

 da

 nu

Dacă da, în ce țari?

Obișnuiți să urmăriți cursul valutar de la toate băncile înainte de a merge să schimbați banii dvs. la una dintre ele? *

 da

 nu

Ce fel de gadgeturi aveți în posesia dvs.? *

 smartphone

 tableta

 laptop

 Altele: 

Pe care dintre ele le folosiți cel mai des? *

Ce Sisteme de Operare au pe ele? *

Cât de mult vă ușurează munca aplicațiile tot mai des dezvoltate în ultima vreme? *

 deloc

 puțin

 mult

 foarte mult

Ce aplicație folosiți cel mai des? *

( de exemplu: facebook, shazam etc.)

Cât de des mergeți la bancă pentru a schimba valute? *

 niciodată

 o dată pe zi

 o dată pe săptămână

 o dată pe lună

 la câteva luni

 o dată pe an

Considerați utilă o aplicație care să vă arate ce bancă are cursul valutar cel mai bun în funcție de valuta pe care doriți să o schimbați dvs.? *

 da

 nu

Ce site-uri accesați cel mai des? *

Codul PHP al aplicației web de la capitolul 4.

Ecranul 1:

<html>

<head>

<style type="text/css">

.clasa1{background-color:#FFFFEE;color:blue;font-size:12pt;border:2px solid cyan;}

p.clasa2{color:green}

table{border:3px double gray;}

input.clasa3{background-color:#0000FF;color:white;font-size:17pt;border:solid red 4px;position:relative;left:516px;}

input.clasa4{background-color:#0000FF;color:white;font-size:17pt;border:solid red 4px;position:relative;left:544px;}

.clasa5{color:blue;font-size:24pt;font-family:arial;}

.clasa6{color:blue;font-size:20pt;font-family:MONOTYPE CORSIVA;}

.clasa7{color:blue;font-size:16pt;font-family:arial;}

body{background-image:url(http://radiocluj.ro/wp-content/uploads/sites/8/2015/02/rate_banci.jpg);}

table{background-color:#99FFEE;}

.clasa8{position:relative;left:500px;}

.clasa9{color:black;font-size:22pt;font-family:MONOTYPE CORSIVA;}

.clasa10{color:white;font-size:16pt;font-family:calibri;}

.clasa11{color:pink;font-size:14pt;font-family:calibri;}

</style>

<title>Curs valutar </title>

</head>

<body>

<?php

$variabila1=10;

$variabila2=20;

define('variabila3',30);

$variabila2=30;

$variabila4=($variabila1+$variabila2)*variabila3;

echo $variabila4;

?>

<p class="clasa9" align="center"> Băncile din România și cursul lor valutar</p>

<p class="clasa11" align="center"> Selectați banca dumneavoastră și introduceți valoarile cursului valutar din aceasta zi</p>

<br><br>

<form action="Valuta2.php" method="post">

<table border="4" bordercolor="gray" align="center">

<caption>Informatii curs valutar</caption>

<tr> <th> Nume bancă</th>

<th><select name="numea" size="1">

<option>Alpha Bank</option>

<option>BRD</option>

<option>Raiffeisen Bank</option>

<option>BNR</option>

<option>Banca CARPATICA</option>

<option>BCR</option>

<option>ING</option>

<option>C.E.C.</option>

<option>Banca Romaneasca</option>

<option>Banca Transilvania</option>

<option>BANCPOST</option>

</select> </th>

</tr>

<tr> <th>Liră sterlină, GBP</th>

<th><input type="double" name="valutaa" size="4"> </th> </tr>

<tr> <th>EURO, EUR</th>

<th><input type="text" name="valutab" size="4"> </th> </tr>

<tr> <th>Dolarul american, USD</th>

<th><input type="text" name="valutac" size="4"> </th> </tr>

<tr> <th>Leva bulgărească, BGN</th>

<th><input type="text" name="valutad" size="4"> </th> </tr>

<tr> <th>Rubla rusească, RUB</th>

<th><input type="text" name="valutae" size="4"> </th> </tr>

<tr> <th>Leul moldovenesc, MDL</th>

<th><input type="text" name="valutaf" size="4"> </th> </tr>

<tr> <th>Dolarul australian, AUD</th>

<th><input type="text" name="valutag" size="4"> </th> </tr>

<tr> <th>Dolarul canadian, CAD</th>

<th><input type="text" name="valutah" size="4"> </th> </tr>

<tr> <th>Francul elvețian, CHF</th>

<th><input type="text" name="valutai" size="4"> </th> </tr>

<tr> <th>Coroana cehă, CZK</th>

<th><input type="text" name="valutaj" size="4"> </th> </tr>

<tr> <th>Coroană daneză, DKK</th>

<th><input type="text" name="valutak" size="4"> </th> </tr>

<tr> <th>Liră egipteană, LGP</th>

<th><input type="text" name="valutal" size="4"> </th> </tr>

<tr> <th>100 forinți maghiari, HUF</th>

<th><input type="text" name="valutam" size="4"> </th> </tr>

<tr> <th>100 yeni japonezi, JPY</th>

<th><input type="text" name="valutan" size="4"> </th> </tr>

<tr> <th>Coroana norvegiană, NOK</th>

<th><input type="text" name="valutao" size="4"> </th> </tr>

<tr> <th>Zlotul polonez, ZPL</th>

<th><input type="text" name="valutap" size="4"> </th> </tr>

<tr> <th>Coroana suedeză, SEK</th>

<th><input type="text" name="valutaq" size="4"> </th> </tr>

<tr> <th>Lira turcescă, TRY</th>

<th><input type="text" name="valutar" size="4"> </th> </tr>

<tr> <th>Randul sud-african, ZAR</th>

<th><input type="text" name="valutas" size="4"> </th> </tr>

<tr> <th>Realul brazilian, BRL</th>

<th><input type="text" name="valutat" size="4"> </th> </tr>

<tr> <th>Renminbi-ul chinezesc, CNY</th>

<th><input type="text" name="valutau" size="4"> </th> </tr>

<tr> <th>Rupia indiană, INR</th>

<th><input type="text" name="valutaw" size="4"> </th> </tr>

<tr> <th>100 Woni sud-coreeni, KRW</th>

<th><input type="text" name="valutax" size="4"> </th> </tr>

<tr> <th>Peso-ul mexican, MXN</th>

<th><input type="text" name="valutay" size="4"> </th> </tr>

<tr> <th>Dolarul neo-zeelandez, NZD</th>

<th><input type="text" name="valutaz" size="4"> </th> </tr>

<tr> <th>Dinarul sârbesc, RSD</th>

<th><input type="text" name="valuta1" size="4"> </th> </tr>

<tr> <th>Hryvna ucraineană, UAH</th>

<th><input type="text" name="valuta2" size="4"> </th> </tr>

<tr> <th>Dirhamul Emiratelor Arabe, AED</th>

<th><input type="text" name="valuta3" size="4"> </th> </tr>

<tr> <th>Gramul de aur, XAU</th>

<th><input type="text" name="valuta4" size="4"> </th> </tr>

<tr> <th>DST, XDR</th>

<th><input type="text" name="valuta5" size="4"> </th> </tr>

<tr> <th> Informatii</th>

<th colspan="2"> <input type="submit" value="Trimiteti informatiile" class="clasa1"></th>

<th><input type="reset" value="Stergeti" class="clasa1"> </th>

</tr>

</table>

</form>

</body>

</html>

Ecranul 2:

<html>

<head>

<style type="text/css">

.clasa1{background-color:#FFFFEE;color:blue;font-size:12pt;border:2px solid cyan;}

p.clasa2{color:green}

input.clasa3{background-color:#0000FF;color:white;font-size:17pt;border:solid red 4px;position:relative;left:516px;}

input.clasa4{background-color:#0000FF;color:white;font-size:17pt;border:solid red 4px;position:relative;left:544px;}

.clasa5{color:blue;font-size:24pt;font-family:arial;}

.clasa6{color:blue;font-size:20pt;font-family:MONOTYPE CORSIVA;}

.clasa7{color:blue;font-size:16pt;font-family:arial;}

body{background-image: url(http://radiocluj.ro/wp-content/uploads/sites/8/2015/02/rate_banci.jpg);}

table{background-color:#99FFEE;}

.clasa8{position:relative;left:500px;}

.clasa9{color:gray;font-size:20pt;font-family:MONOTYPE CORSIVA;}

.clasa10{color:white;font-size:16pt;font-family:calibri;}

</style>

<title>Curs valutar

</title>

</head>

<body>

<p class="clasa9" align="center"> Băncile din România și cursul lor valutar</p>

<p align="center" class="clasa10"> Un tabel cu informatii culese despre bănci și cursul lor valutar </p>

<br><br>

<?php

$a = 1.234;

$b = 1.2e3;

$c = 7E-10;

?>

<?php

$numea=$_POST['numea'];

?>

<?php

$avalutaa=$_POST['valutaa'];

$valutab=$_POST['valutab'];

$valutac=$_POST['valutac'];

$valutad=$_POST['valutad'];

$valutae=$_POST['valutae'];

$valutaf=$_POST['valutaf'];

$valutag=$_POST['valutag'];

$valutah=$_POST['valutah'];

$valutai=$_POST['valutai'];

$valutaj=$_POST['valutaj'];

$valutak=$_POST['valutak'];

$valutal=$_POST['valutal'];

$valutam=$_POST['valutam'];

$valutan=$_POST['valutan'];

$valutao=$_POST['valutao'];

$valutap=$_POST['valutap'];

$valutaq=$_POST['valutaq'];

$valutar=$_POST['valutar'];

$valutas=$_POST['valutas'];

$valutat=$_POST['valutat'];

$valutau=$_POST['valutau'];

$valutaw=$_POST['valutaw'];

$valutax=$_POST['valutax'];

$valutay=$_POST['valutay'];

$valutaz=$_POST['valutaz'];

$valuta1=$_POST['valuta1'];

$valuta2=$_POST['valuta2'];

$valuta3=$_POST['valuta3'];

$valuta4=$_POST['valuta4'];

$valuta5=$_POST['valuta5'];

?>

<form action="Valuta3.php" method="post">

<table border="4" bordercolor="blue" align="center">

<caption>Informatii privind cursul valutar</caption>

<tr> <th> Nume bancă</th>

<th> <?php echo $numea ; ?> </th>

</tr>

<tr> <th>Liră sterlină, GBP</th>

<th> <?php echo $avalutaa ;?></th></tr>

<tr> <th>EURO, EUR</th>

<th> <?php echo $valutab ;?></th></tr>

<tr> <th>Dolarul american, USD</th>

<th> <?php echo $valutac ;?></th></tr>

<tr> <th>Leva bulgărească, BGN</th>

<th> <?php echo $valutad ;?></th></tr>

<tr> <th>Rubla rusească, RUB</th>

<th> <?php echo $valutaf ;?></th></tr>

<tr> <th>Leul moldovenesc, MDL</th>

<th> <?php echo $valutag ;?></th></tr>

<tr> <th>Dolarul australian, AUD</th>

<th> <?php echo $valutah ;?></th></tr>

<tr> <th>Dolarul canadian, CAD</th>

<th> <?php echo $valutai ;?></th></tr>

<tr> <th>Francul elvețian, CHF</th>

<th> <?php echo $valutaj ;?></th></tr>

<tr> <th>Coroana cehă, CZK</th>

<th> <?php echo $valutak ;?></th></tr>

<tr> <th>Coroană daneză, DKK</th>

<th> <?php echo $valutal ;?></th></tr>

<tr> <th>Liră egipteană, LGP</th>

<th> <?php echo $valutam ;?></th></tr>

<tr> <th>100 forinți maghiari, HUF</th>

<th> <?php echo $valutan ;?></th></tr>

<tr> <th>100 yeni japonezi, JPY</th>

<th> <?php echo $valutao ;?></th></tr>

<tr> <th>Coroana norvegiană, NOK</th>

<th> <?php echo $valutap ;?></th></tr>

<tr> <th>Zlotul polonez, ZPL</th>

<th> <?php echo $valutaq ;?></th><tr>

<tr> <th>Coroana suedeză, SEK</th>

<th> <?php echo $valutar ;?></th></tr>

<tr> <th>Lira turcescă, TRY</th>

<th> <?php echo $valutas ;?></th></tr>

<tr> <th>Randul sud-african, ZAR</th>

<th> <?php echo $valutat ;?></th></tr>

<tr> <th>Realul brazilian, BRL</th>

<th> <?php echo $valutau ;?></th></tr>

<tr> <th>Renminbi-ul chinezesc, CNY</th>

<th> <?php echo $valutaw ;?></th></tr>

<tr> <th>Rupia indiană, INR</th>

<th> <?php echo $valutax ;?></th></tr>

<tr> <th>100 Woni sud-coreeni, KRW</th>

<th> <?php echo $valutay ;?></th></tr>

<tr> <th>Peso-ul mexican, MXN</th>

<th> <?php echo $valutaz;?></th></tr>

<tr> <th>Dolarul neo-zeelandez, NZD</th>

<th> <?php echo $valuta1 ;?></th></tr>

<tr> <th>Dinarul sârbesc, RSD</th>

<th> <?php echo $valuta2 ;?></th></tr>

<tr> <th>Hryvna ucraineană, UAH</th>

<th> <?php echo $valuta3;?></th></tr>

<tr> <th>Dirhamul Emiratelor Arabe, AED</th>

<th> <?php echo $valuta3;?></th><tr>

<tr> <th>Gramul de aur, XAU</th>

<th> <?php echo $valuta4;?></th></tr>

<tr> <th>DST, XDR</th>

<th> <?php echo $valuta5 ;?></th>

</tr>

<?php

$numea=$_POST['numea'];

echo "Lira sterlină este: ";

echo $avalutaa;

?>

<?php

$conexiune=mysql_connect("localhost","root","");

mysql_select_db("curs_valutar", $conexiune);

$sql="INSERT INTO `curs_valutar`.`banci_romania` (`nume_banca`,`lira_sterlina`,`euro`,`dolar_american`,`leva`,`rubla`,`leu_moldovenesc`,`dolar_australian`,`dolar_canadian`,`franc_elvetian`,`coroana_ceha`,`coroana_daneza`,`lira_egipteana`,`100_forinti_maghiari`,`100_yeni_japonezi`,`coroana_norvegiana`,`zlotul_polonez`,`coroana_suedeza`,`lira_turceasca`,`randul_sud_african`,`realul_brazilian`,`remimbi_chinezesc`,`rupia_indiana`,`100_woni_sud_coreeni`,`peso_mexican`,`dolar_neo_zelandez`,`dinar_sarbesc`,`hryvna_ucraineana`,`dirhamul_emiratelor_arabe`,`gramul_de_aur`,`DST`)

VALUES

('$numea', '$avalutaa', '$valutab', '$valutac', '$valutad', '$valutae', '$valutaf', '$valutag', '$valutah', '$valutai', '$valutaj', '$valutak', '$valutal', '$valutam', '$valutan', '$valutao', '$valutap', '$valutaq', '$valutar', '$valutas', '$valutat', '$valutau', '$valutaw', '$valutax', '$valutay', '$valutaz', '$valuta1', '$valuta2', '$valuta3', '$valuta4', '$valuta5' );";

if (!mysql_query($sql,$conexiune))

{

die('Error: ' . mysql_error());

}

else echo " ";

mysql_close($conexiune);

?>

<p class="clasa10">Cea mai avantajoasă valută este:</p>

<img src="lira_sterlina.jpg">

<tr> <th> Informatii</th>

<th colspan="2"> <input type="submit" value="Trimiteti informatiile" class="clasa1"></th>

<th><input type="reset" value="Stergeti" class="clasa1"> </th>

</tr>

</table>

</form>

</body>

</html>

Ecranul 3:

<html>

<head>

<style type="text/css">

clasa1{background-color:#FFFFEE;color:blue;font-size:12pt;border:2px solid cyan;}

p.clasa2{color:green}

input.clasa3{background-color:#0000FF;color:white;font-size:17pt;border:solid red 4px;position:relative;left:516px;}

input.clasa4{background-color:#0000FF;color:white;font-size:17pt;border:solid red 4px;position:relative;left:544px;}

.clasa5{color:blue;font-size:24pt;font-family:arial;}

.clasa6{color:blue;font-size:20pt;font-family:MONOTYPE CORSIVA;}

.clasa7{color:blue;font-size:16pt;font-family:arial;}

body{background-image: url(http://radiocluj.ro/wp-content/uploads/sites/8/2015/02/rate_banci.jpg);}

table{background-color:#99FFEE;}

.clasa8{position:relative;left:500px;}

.clasa9{color:gray;font-size:20pt;font-family:MONOTYPE CORSIVA;}

.clasa10{color:white;font-size:16pt;font-family:calibri;}

</style>

<title>Curs valutar</title>

</head>

<body>

<form action="Valuta4.php" method="POST">

<p class="clasa10">Click aici pentru a vedea inregistrarile din baza de date sortate dupa:</p>

<select name="criteriu">

<option>lira_sterlina</option>

<option>euro</option>

<option>dolar</option>

<option>leu_moldovenesc</option>

<option>rubla</option>

<option>dolar_australian</option>

<option>dolar_canadian</option>

<option>franc_elvetian</option>

<option>coroana_ceha</option>

<option>coroana_daneza</option>

<option>lira_egipteana</option>

<option>100_forinti_maghiari</option>

<option>100_yeni_japonezi</option>

<option>coroana_norvegiana</option>

<option>zlotul_polonez</option>

<option>coroana_suedeza</option>

<option>lira_turceasca</option>

<option>realul_brazilian</option>

<option>remimbi_chinezesc</option>

<option>rupia_indiana</option>

<option>100_woni_sud_coreeni</option>

<option>peso_mexican</option>

<option>dolar_neo_zelandez</option>

<option>dinar_sarbesc</option>

<option>hryvna_ucraineana</option>

<option>dirhamul_emiratelor_arabe</option>

<option>gramul_de_aur</option>

<option>DST</option>

</select>

<input type="submit" value="Selectati criteriul">

</form>

</body>

</html>

Ecranul 4:

<html>

<head>

<style type="text/css">

clasa1{background-color:#FFFFEE;color:blue;font-size:12pt;border:2px solid cyan;}

p.clasa2{color:green}

input.clasa3{background-color:#0000FF;color:white;font-size:17pt;border:solid red 4px;position:relative;left:516px;}

input.clasa4{background-color:#0000FF;color:white;font-size:17pt;border:solid red 4px;position:relative;left:544px;}

.clasa5{color:blue;font-size:24pt;font-family:arial;}

.clasa6{color:blue;font-size:20pt;font-family:MONOTYPE CORSIVA;}

.clasa7{color:blue;font-size:16pt;font-family:arial;}

body{background-image: url(http://radiocluj.ro/wp-content/uploads/sites/8/2015/02/rate_banci.jpg);}

table{background-color:#99FFEE;}

.clasa8{position:relative;left:500px;}

.clasa9{color:gray;font-size:20pt;font-family:MONOTYPE CORSIVA;}

.clasa10{color:white;font-size:20pt;font-family:MONOTYPE CORSIVA;}

</style>

<title>Curs Valutar</title>

</head>

<body>

<?php

$criteriu=$_POST['criteriu'];

$conexiune=mysql_connect("localhost","root","");

mysql_select_db("curs_valutar", $conexiune);

$rezultattt=mysql_query("SELECT * FROM banci_romania ORDER BY $criteriu DESC" , $conexiune);

mysql_close($conexiune);

echo "<table> <tr><td> Nume bancă</td> <td>Liră sterlină, GBP</td><th>EURO, EUR</th><th>Dolarul american, USD</th><th>Leva bulgărească, BGN</th><th>Rubla rusească, RUB</th><th>Leul moldovenesc, MDL</th><th>Dolarul australian, AUD</th><th>Dolarul canadian, CAD</th><th>Francul elvețian, CHF</th><th>Coroana cehă, CZK</th><th>Coroană daneză, DKK</th><th>Liră egipteană, LGP</th><th>100 forinți maghiari, HUF</th><th>100 yeni japonezi, JPY</th><th>Coroana norvegiană, NOK</th><th>Zlotul polonez, ZPL</th><th>Coroana suedeză, SEK</th><th>Lira turcescă, TRY</th><th>Randul sud-african, ZAR</th><th>Realul brazilian, BRL</th><th>Renminbi-ul chinezesc, CNY</th><th>Rupia indiană, INR</th><th>100 Woni sud-coreeni, KRW</th><th>Peso-ul mexican, MXN</th><th>Dolarul neo-zeelandez, NZD</th><th>Dinarul sârbesc, RSD</th><th>Hryvna ucraineană, UAH</th><th>Dirhamul Emiratelor Arabe, AED</th><th>Gramul de aur, XAU</th><th>DST, XDR</th>";

$row=mysql_fetch_array($rezultattt);

while ($row=mysql_fetch_array($rezultattt))

{ echo "<tr>";

echo "<td>" .$row['nume_banca']." </td>";

echo" <td> " .$row['lira_sterlina']." </td>";

echo" <td> " .$row['euro']."</td>";

echo" <td> " .$row['dolar_american']." </td> ";

echo" <td> " .$row['leva']." </td> ";

echo" <td> " .$row['rubla']." </td> ";

echo" <td> " .$row['leu_moldovenesc']." </td> ";

echo" <td> " .$row['dolar_australian']." </td> ";

echo" <td> " .$row['dolar_canadian']." </td> ";

echo" <td> " .$row['franc_elvetian']." </td> ";

echo" <td> " .$row['coroana_ceha']." </td> ";

echo" <td> " .$row['coroana_daneza']." </td> ";

echo" <td> " .$row['lira_egipteana']." </td> ";

echo" <td> " .$row['100_forinti_maghiari']." </td> ";

echo" <td> " .$row['100_yeni_japonezi']." </td> ";

echo" <td> " .$row['coroana_norvegiana']." </td> ";

echo" <td> " .$row['zlotul_polonez']." </td> ";

echo" <td> " .$row['coroana_suedeza']." </td> ";

echo" <td> " .$row['lira_turceasca']." </td> ";

echo" <td> " .$row['randul_sud_african']." </td> ";

echo" <td> " .$row['realul_brazilian']." </td> ";

echo" <td> " .$row['remimbi_chinezesc']." </td> ";

echo" <td> " .$row['rupia_indiana']." </td> ";

echo" <td> " .$row['100_woni_sud_coreeni']." </td> ";

echo" <td> " .$row['peso_mexican']." </td> ";

echo" <td> " .$row['dolar_neo_zelandez']." </td> ";

echo" <td> " .$row['dinar_sarbesc']." </td> ";

echo" <td> " .$row['hryvna_ucraineana']." </td> ";

echo" <td> " .$row['dirhamul_emiratelor_arabe']." </td> ";

echo" <td> " .$row['gramul_de_aur']." </td> ";

echo" <td> " .$row['DST']." </td> ";

echo "</tr>"; }

echo "</table>";

?>

<a href="Valuta1.php">

<p align="center" class="clasa10"> Click pentru a va reintoarce la pagina 1</p></a>

</body>

</html>

Cod Matlab clasificator

normc(CursEURUSDGBP)

coeff = pca(ans)

wcoeff = pca(ans)

[latent,explained,score,tsquared] = pca(ans)

coefforth = inv(diag(std(ans)))* wcoeff

y = ans;

rng('default'); % for reproducibility

ix = random('unif',0,1,size(y))<0.30;

y(ix) = NaN

net.trainFcn = 'trainscg'

net = feedforwardnet(3,'trainscg');

net = train(net,CursEURUSDGBP,ans);

a = net(CursEURUSDGBP)

train(net)

% Rezolvarea unei problem de clasificare cu o Rețea Neuronală

% Script generat de NPRTOOL

% Creat duminică iunie 21 17:07:47 EEST 2015

%

% Acest script definește următoarele variabile:

%

% CursEURUSDGBP – date de intrare.

% CursEURUSDGBPtarget – date de target.

inputs = CursEURUSDGBP;

targets = CursEURUSDGBPtarget;

% Crearea unei rețea neuronală pentru o problemă de clasificare

hiddenLayerSize = 10;

net = patternnet(hiddenLayerSize);

% Divizarea datelor pentru antrenare, validare și testare

net.divideParam.trainRatio = 70/100;

net.divideParam.valRatio = 15/100;

net.divideParam.testRatio = 15/100;

% Antrenarea rețelei

[net,tr] = train(net,inputs,targets);

% Testarea rețelei

outputs = net(inputs);

errors = gsubtract(targets,outputs);

performance = perform(net,targets,outputs)

% Vizualizarea rețelei

view(net)

% Grafice

% Aceste comenzi arată mai multe grafice.

%figure, plotperform(tr)

%figure, plottrainstate(tr)

%figure, plotconfusion(targets,outputs)

%figure, plotroc(targets,outputs)

%figure, ploterrhist(errors)

Bibliografie

[1] “Rețele neuronale. Teorie și aplicații” – D.Dumitrescu, Hariton Costin, Editura Teora, București, 1996;

[2] “Prelucrarea inteligentă a informațiilor multidisciplinare pentru prognoze adaptive în contextual globalizării” – Dumitru Iulian Năstac, Editura Muzeului Național al Literaturii Române, București, 2013;

[3] “Rețele neuronale artificiale. Prelucrarea avansată a datelor”- Dumitru Iulian Năstac, Editura Printech, București, 2002;

[4] “Rețele neuronale artificiale”- Stelian Stancu, Alexandra Maria Constantin, Editura ASE, București, 2014;

[5] “Tehnici de optimizare. Aplicații numerice.” – Cristian Pătrășcoiu, Editua Matrix ROM, București, 2008;

[6] “A neuro-clasification model for socio-technical systems” – Iulian Năstac, Angelica Bacivarov, Adrian Costea pentru revista “Romanian Journal of Economic Forecasting 3/2009”;

[7] Sursă: http://www.mathworks.com/help/nnet/ug/cluster-with-self-organizing-map-neural-network.html#bss4b_l-5, accesat în data de 29.05.2015, ora 18:47;

[8] http://www.cursbnr.ro/curs-valutar-bnr, accesat în data de 6.06.2015, ora 14:08;

[9] https://www.alphabank.ro/ro/rate/rate_si_dobanzi.php, accesat în data de 6.06.2015, ora 13:38;

[10] https://www.brd.ro/instrumente-utile/curs-valutar-si-dobanzi-de-referinta/, accesat în data de 6.06.2015, ora 14:00;

[11] https://www.raiffeisen.ro/curs-valutar, accesat în data de 6.06.2015, ora 14:03;

[12] https://www.carpatica.ro/index.php?option=com_content&id=291&Itemid=366, accesat în data de 6.06.2015, ora 14:15;

[13] https://www.bcr.ro/ro/curs-valutar, accesat în data de 6.06.2015, ora 14:21;

[14] https://www.cec.ro/curs-valutar.aspx,accesat în data de 6.06.2015, ora 14:46;

[15] https://www.banca-romaneasca.ro/instrumente-utile/curs-valutar/, accesat în data de 6.06.2015, ora 14:49;

[16] https://www.bancpost.ro/Bancpost/Financiare/Istoric-Curs-Valutar, accesat în data de 6.06.2015, ora 15:02;

[17] https://www.ing.ro/ing/curs-valutar.html?width=330&height=480, accesat în data de 6.06.2015, ora 15:15;

[18] “Roumanian Journal Of Economic Forecasting”

[19] “Artificial Intelligence” – Blay Whitby, Editura Oneworld Publications, 2003.

[20] “ Pattern Classification – With Computer Manual ” – Editura John Wiley And Sons Ltd, 2004.

[21] “ Neural Networks” – Phil Picton, Editura Palgrave Macmillan, 2000.

[22] “ Introduction To Neural Networks” – Kevin Gurney, Editura Taylor&Francis Ltd, 1997.

[23] “Elemente de inteligenta artificiala si prolog – Teorie si aplicatii” – Petre Anghelescu, Editura MATRIX ROM, București 2010.

Similar Posts