Aplicacao web em JavaScript que treina uma rede neural com TensorFlow.js e calcula a probabilidade de inadimplencia a partir de um documento (CPF/CNPJ).
Demonstrar um fluxo completo de Machine Learning no front-end:
- carregamento de dados de treino em JSON;
- treinamento de modelo no navegador (Web Worker + TensorFlow.js);
- predicao de risco para perfis PF e PJ;
- explicacao dos principais fatores que elevam ou reduzem o risco.
- Treinamento manual do modelo via botao
Treinar Modelo. - Atualizacao de progresso de treino e logs por epoca.
- Predicao por documento (aceita CPF/CNPJ com ou sem mascara).
- Classificacao de risco em
baixo,mediooualto. - Exibicao de fatores explicativos (impacto e severidade).
- Integracao com
tfjs-vispara visualizacao do treino.
Tela principal do sistema:
Tela de treinamento do modelo:
Tela de resultado da probabilidade:
- JavaScript (ES Modules)
- TensorFlow.js
- Web Workers
- Bootstrap 5
- BrowserSync (script de desenvolvimento)
index.html: layout principal da aplicacaostyle.css: estilos da interfacesrc/index.js: ponto de entrada e injecao de dependenciassrc/controller/: orquestracao de treino, preditor, worker e tfjs-vissrc/view/: renderizacao de UI (treino, entrada, resultado e visor)src/service/RiskProfileService.js: acesso aos dados e normalizacao de documentosrc/workers/modelTrainingWorker.js: treino/predicao com TensorFlow.jssrc/events/: barramento de eventos da aplicacaodata/risk-training.json: base de treino com rotulolabelInadimplentedata/risk-profiles.json: base de perfis para consulta
- Instale as dependencias:
npm install- Inicie o servidor de desenvolvimento:
npm start- Abra:
http://localhost:3000
No workspace existe a task Start Default Probability System, que executa npm start e sobe o projeto na porta 3000.
- Clique em
Treinar Modelo. - Aguarde a mensagem de treino concluido.
- Informe um CPF/CNPJ presente em
data/risk-profiles.json. - Clique em
Calcular Probabilidade. - Analise probabilidade, nivel de risco e fatores explicativos.
- Tipo: rede neural densa (
tf.sequential). - Entrada: 13 features numericas normalizadas (0-1).
- Arquitetura:
Dense(32, relu) -> Dense(16, relu) -> Dense(1, sigmoid). - Treino:
adam(0.01),binaryCrossentropy,accuracy,epochs=80,batchSize=16. - Saida: probabilidade de inadimplencia entre
0e100%.
Regra de classificacao:
< 0.33:baixo>= 0.33 e < 0.66:medio>= 0.66:alto
Campos utilizados no modelo:
ageincomecompanyYearspaymentHistoryScorepreviousDelayscreditUtilizationmonthlyRevenuedebtRatiocashFlowScoreaverageTicketchurnRatemrrcustomerCount
No arquivo de treino, cada registro tambem deve conter:
labelInadimplente(0ou1)
- A consulta de risco so funciona apos o treinamento.
- Se o documento nao existir na base de perfis, a interface mostra erro.
- O projeto e educacional e usa base local em JSON (sem persistencia em backend).


