Orodha ya maudhui:

Sistema Autônomo Localizador De Vazamentos: Hatua 11
Sistema Autônomo Localizador De Vazamentos: Hatua 11

Video: Sistema Autônomo Localizador De Vazamentos: Hatua 11

Video: Sistema Autônomo Localizador De Vazamentos: Hatua 11
Video: WEBINAR - Detecção de Vazamento de Gases e ar Comprimido - Realização Getrotech/Fluke 2024, Novemba
Anonim
Sistema Autônomo Localizador De Vazamentos
Sistema Autônomo Localizador De Vazamentos

Mfumo huu unajumuisha watu wengi, ikiwa ni pamoja na kusoma na kuandika kwa kutumia vifaa, vifaa vya utaftaji vifaa vya utaftaji wa simu, vifaa vya kutafakari hakuna mtu peke yake, mtu anayetambulika kwa jina moja, na mchakato wa kufanya hivyo unaweza kupata uma kwa njia ya neva, unaweza kufanya hivyo kwa sababu unashughulikia uma tubulação.

O processamento destes dados ni realizado por algoritmos instalados na DRAGONBOARD 410c. Os dados também são enviados para um serviço na nuvem, answerável por auxiliar no processo de Integência Artificial do projeto.

Hii ni sehemu ya watu wanaofanya kazi kwa njia ya Hackaton Qualcomm, ambao ni TecnoFACENS na Kituo cha Engenharia de Sorocaba (FACENS), washiriki wa programu hii watahitimu wanafunzi wa shule hiyo, Felipe Xavier, Lucas de Sousa Rodrigues, Reli. Gomes Polo e Ronaldo P. Gomes Polo. Também inashirikiana kufanya projeto o aluno Daniel de Castro Pacheco graduateando ya engenharia mecânica na Universidade Newton Paiva de Belo Horizonte. Ondoa maoni yako kwa wakati unaofaa kumaliza masomo ya mecatrônica da FACENS, Lucas Nunes Monteiro na Felipe Crispim da Silva Salvagnini.

Hatua ya 1: Lista De Materiais

Orodha ya Materiais
Orodha ya Materiais

Para realização deste projeto, os seguintes materiais foram utilizados:

1 Arduino Kutokana

1 Jukwaa 410c

2 Madereva kwa motor de corrente continua contendo cada um:

4 Transistores BC548

4 Diodos 1n4007

4 Inazuia 4k7Ω ¼ W

1 Dereva kwa servo motor contendo:

1 Transistores BC548

1 Diodos 1N4007

1 Inazuia 4k7Ω ¼ W

1 Panya USB

1 Teclado USB

1 Ufuatiliaji

1 Cabo HDMI

1 Robô De Esteiras - Plataforma Zumo

1 Mini kuhifadhi mafuta ya mafuta

1 Servo motor 9g

Hatua ya 2: Adaptação Mecânica

Image
Image

Para a aquisição dos dados pelo sensor piezoelétrico, faz se needário, o desenvolvimento de um dispositivo com pinhão e cremalheira, conforme desenhos anexados, neste caso as peças foram fabricadas por uma impressora 3D, devido ao fato de se tratar de um protótipo tempo de execução, fixou-se o dispositivo na plataforma zumo, utilizando fita dupla uso, conforme vídeo.

Hatua ya 3: Acionamento Dos Motores

Obtenção Do Áudio
Obtenção Do Áudio

Para executar a movimentação dos motores do robô ZUMO e do dispositivo de captura, fez-se needária a montagem de dois drivers for os motores de corrente continua e um driver for o servo motor, conforme as figuras acima, sendo a primeira figura o driver para um motor de corrente continua ea segunda o dereva kwa um servo motor.

Hatua ya 4: Obtenção Do Áudio

Para obtenção do espectro de áudio das vibrações do solo, foi utilizado um dispositivo desenvolvido como parte do TCC de Engenharia Mecatrônica dos graduateandos Lucas Nunes Monteiro e Felipe C. da Silva Salvagnini, maiores detalhes sobre o TCC e sobre oceivo barua pepe [email protected].

Utoaji wa vifaa vya utaftaji -meno ya utaftaji umeme piezoelétrico na uma nafasi ya kufanya kazi kwa sababu ya utaftaji wa habari na nguvu ya kufanya dhambi.

Kama masafa ya mara kwa mara kwa sababu ya kiwango cha 100Hz na 800Hz. Para isso o dispositivo de sensoriamento foi configurado com uma frequência de amostragem de 3 kHz para que sejam respeitada as condições do teorema de amostragem de Nyquist, onde a frequency of the aquisição deve estar pelo menos duas vezes acima das frequências.

A aquisição é habilitada e desabilitada através da interrupção do Arduino DUE.

Hatua ya 5: Configuração Do Arduino DUE (linguagem C)

Configuração Do Arduino DUE (lugha Cm)
Configuração Do Arduino DUE (lugha Cm)

Devido a grande quantidade de dados, cerca de 3000 pontos por segundo, do to inteiro de 32 bits, gerados pelo disposion de sensoriamento and needários for processament dos dos algoritos na DRAGONBOARD 410c, vifaa vya utumiaji wa Arduino KUTOKA kwa uso wa uso wa uma ingia analance ya maini kwa njia ya mchakato, ni muhimu zaidi kwa sababu ya Shield ya interface Grove Seeed Sensor Mezzanine instalado na DRAGONBOARD 410c, ikiwa ni pamoja na microcontrolador ATmega 328, ni rahisi kutumia njia hii kwa ajili ya kufanya hivyo.

O Arduino KUTOKA kwa usanidi wa mpokeaji wa comandos enviados da plataforma QUALCOMM DRAGONBOARD 410c kupitia serial comunicação.

Kama ações configuradas no Arduino foram:

Kutambua aquisição dos dados;

Transmitir os dados obtidos kwa KIWANGO 410c;

Fuata programu:

# ni pamoja na # fafanua Mfano wa Mfano wa 3000 #fafanua DAC_Kuingiza A0

#fafanua HUDUMA 7

#fafanua PosServoMin 4 #fafanua PosServoMax 6 #fafanua Kipindi 60 unsigned int Scont = 0, SNow = PosServoMin; unsigned long int DAC [Numb_Sampuli], ind = Mfano_Sampuli; tupu TC3_Handler () {TC_GetStatus (TC1, 0); ikiwa (ind <Numb_Sampuli) DAC [ind ++] = AnalogRead (DAC_Input); ikiwa (Scont

1); // 50% mzunguko wa ushuru

TC_SetRC (tc, kituo, rc); TC_Start (TC, kituo); tc-> TC_CHANNEL [kituo]. TC_IER = TC_IER_CPCS | TC_IER_CPAS; // habilita os registradores tc-> TC_CHANNEL [kituo]. TC_IDR = ~ (TC_IER_CPCS | TC_IER_CPAS); // desabilita os registradores NVIC_EnableIRQ (irq); // habilita interrupção}

kuanzisha batili ()

{Serial.begin (115200); pinMode (DAC_Input, INPUT); TimerStart (TC1, 0, TC3_IRQn, 1500); // Init Timer // TC_Stop (TC1, 0); pinMode (SERVO, OUTPUT); }

kitanzi batili ()

{/ * // wakati (! Serial.available ()); char rc; // = Serial.read (); indice = 0; ikiwa (rc == 0) {wakati (! Serial.available ()); rc = mfululizo.read (); kubadili (rc) {kesi 1: indice = 0; wakati (! Serial. haipatikani ()); wakati ((rc = Serial.read ())! = 0xFF) {indice << = 8; indice + = rc; wakati (! Serial. haipatikani ()); } Serial.print (0); Printa ya serial (2); SendNumber (DAC [indice]); Serial.print (0xFF); kuvunja; kesi 3: wakati (! Serial.available ()); ikiwa ((Serial.read ()) == 0xFF) {SNow = PosServoMax; kuchelewesha (500); ind = 0; // TC_Start (TC1, 0); wakati (ind <Numb_Sampuli); // TC_Stop (TC1, 0); SNow = PosServoMin; kuchelewesha (500); Printa ya serial (0); Rangi ya serial (4); Serial.print (0xFF); } kuvunja; }} mwingine ikiwa (rc == '2') {Serial.print ("Test Servo Motor / n"); wakati (! Serial. haipatikani ()); rc = mfululizo.read (); ikiwa (rc == '1') {Serial.print ("Njia 1 / n"); SNow = PosServoMax; } ikiwa (rc == '2') {Serial.print ("Njia ya 2 / n"); SNow = PosServoMin; }} * / SNow = PosServoMax; kuchelewesha (100); SNow = PosServoMin; kuchelewesha (100); }

Hatua ya 6: Interfaceamento Das Tecnologias

Interfaceamento Das Tecnologias
Interfaceamento Das Tecnologias

Para a comunicação dos dados entre o Arduíno DUE ea DRAGONBOARD 410c, inicialmente utilizou-se a interface of figura acima, or que to do to have the executar, ento optou-se pelo uso de uma interface USB CDC entre Arduino DUE ea DRAGONBOARD 410c, que needitaria da recompilação do KERNEL da DRAGONBOARD 410c, que não se fez por causa do curto tempo disponível.

Hatua ya 7: Configuração Da DRAGONBOARD 410c (Python)

Sanidi da DRAGONBOARD 410c (Chatu)
Sanidi da DRAGONBOARD 410c (Chatu)

Foi configurada para enviar ao Arduino DUE os comandos for realizar a aquisição de dados e transmitir os dados obtidos. Segue código abaixo.

Kuchunguza: Utumiaji wa matumizi bila código, na funcionou devido aos níveis de tensão utilizados pelo Arduíno DUE e o Mezzanine serem incompatíveis. Kwa kutumia vifaa vya interface vya USB, ni muhimu kufanya kazi kwa KERNEL na DRAGONBOARD 410c kwa sababu ya kituo hiki kinachoweza kutekelezwa kwa njia ya mawasiliano.

ingiza pandas za kuagiza muda kama vile pd kuagiza numpy kama np

# Configuração da conexão mfululizo

ser.

fungua.

chapa ('Ingiza amri zako hapa chini. / r / nIngiza "toka" ili uondoke kwenye programu.')

pembejeo = 1

wakati 1: pembejeo = ingizo (">>") ikiwa pembejeo == 'toka': ser.close () exit () elif input == 'soma': ser.write (0) # Envia o comando para o Arduino DUE tambulisha a coleta dos dados ser.write (1) # Envia o comando para o Arduino DUE transmitir os dados coletados

orodha =

kwa mimi katika anuwai (3000):

andika (i / 256) ser.] << 8 atual + = cc = ser.read (1) lista.append (atual)

Hatua ya 8: INTERPRETAÇÃO DOS ARQUIVOS DE AUDIO

INTERPRETAÇÃO DOS ARQUIVOS DE AUDIO
INTERPRETAÇÃO DOS ARQUIVOS DE AUDIO

Para poder realizar uma primeira análise dos dados obtidos através do sensor, se fez needária a convertão dos arquivos no formato WAV, fornecidos pelos alunos autores do TCC e colaboradores do projeto, para valores numéricos, que são utilizados nos algoritmos de anáos. Utaftaji wa habari hii ni pamoja na mpango wa algorithm ya PYTHON 3 kwa kila kitu cha WAV na kwa sababu ya kufanya CSV. O algoritmo utilizado segue abaixo na em anexo para download.

Tumia mfumo huu kuwa wa maana kwa sababu ya kufanya kazi, na kwa hivyo Arduino DUE na dhamira za enzi za baba zinatokana na idadi ya hesabu.

# uandishi: utf-8

# Vitabu na sauti kwa csv

# MÓDULOS UTILIZADOS

kuagiza kuagiza wimbi numpy kama np kuagiza pandas kama pd kuagiza matplotlib.pyplot kama plt

# FUNÇÃO PARA CONVERTER WAV EM DADOS FANYA ESPECTRO E SALVAR CSV

def audio_to_csv (file_name): wave_file = wave.open (file_name + '. wav', 'rb') data_size = wave_file.getnframes () sample_rate = wave_file. ishara = np.fromstring (waveData, dtype = 'int32') Muda = np.linspace (start = 0, stop = data_size / sample_rate, num = data_size, endpoint = True) df = pd.concat ([pd. DataFrame (ishara), pd. DataFrame (Muda)], mhimili = 1) df.to_csv (file_name + '.csv', index = False) kurudi df

# CARREGANDO DATA FRAME COM OS DADOS FANYA AUDIO

file_name = 'Solo_com_Vazamento' df_vazamento = audio_to_csv (file_name) df_vazamento.columns = ['amp', 'time'] file_name = 'Solo_sem_Vazamento' df_sem_vazamento = audio_to_csv (file_name) dfo_m '

# GRÁFICO FANYA ESPECTRO DE AUDIO

takwimu, (ax1, ax2) = plt. viwanja (nrows = 2, ncols = 1, figsize = (20, 10)) ax1.plot (df_vazamento ['time'], df_vazamento ['amp'] ax1.set_title ('Solo com Vazamento', fontdict = {'fontsize': 20, 'fontweight': 'bold'}) ax1.set_xlabel ('Tempo [s]', fontdict = {'fontsize': 16}) ax1.set_ylim ([-4e8, 4e8]) ax2.plot (df_sem_vazamento ['time'], df_sem_vazamento ['amp'] ax2.set_title ('Solo sem Vazamento', fontdict = {'fontsize': 20, 'fontweight': 'bold' }) ax2.set_xlabel ('Tempo [s]', fontdict = {'fontsize': 16}) ax2.set_ylim ([- 4e8, 4e8]) figure.tight_layout (h_pad = 5) plt.show ()

Hatua ya 9: Análise Visual Do Sinal

Análise Visual Je, Sinal
Análise Visual Je, Sinal
Análise Visual Je, Sinal
Análise Visual Je, Sinal
Análise Visual Je, Sinal
Análise Visual Je, Sinal

PYTHON 3 inaleta mabadiliko kutoka kwa Fourier, kwa sababu hii ni kazi ya kufanya kazi ya kufanya dhambi kwa muda mrefu na kwa muda mrefu, kwa sasa kunaweza kutafakari kama anuwai ya mara kwa mara, uwezo wa hali ya juu, ni pamoja na sinema ya maji. Pela análise visual do gráfico da transformada de Fourier um profissional com conhecimentos específicos poderá identificar a existência de algum vazamento na tubulação. Estes gráficos servirão para validação das análises realizadas pelo algoritmo de detecção automática.

Limitando o eixo das frequências entre 100Hz na 800Hz, fica claro a existéncia de vazamentos quando se observam distúrbios nesse range of frequências.

# uandishi: utf-8 # Módulos utilizados para processamento da transformada de Fourier

kuagiza pandas kama pd kuagiza numpy kama np kuagiza wimbi kutoka matplotlib kuagiza pyplot kama plt # Taxa de amostragem em Hz Ts = 1.0 / Fs; # Intervalo de amostragem y = pd.concat (df_list) t = y ['wakati'] # Vetor de tempos y = y ['amp'] # Vetor de amplitudes n = len (y) # Comprimento do sinal k = np. arange (n) T = n / Fs frq = k / T frq = frq [masafa (n // 2)] Y = np.fft.fft (y) / n Y = Y [masafa (n // 2)] tmp = pd. DataFrame () tmp ['amp'] = abs (Y) tmp ['freq'] = frq max_lim = max (tmp ['amp'] [(tmp ['freq']> = 100) na (tmp ['freq'] <= 800)]) mtini, shoka = plt. viwanja (2, 1, figsize = (20, 10)) shoka [0]. shamba (t, y) shoka [0].set_xlabel ('Wakati') shoka [0].set_ylabel ('Amplitude') shoka [1].plot (frq, abs (Y), 'r') shoka [1].set_xlim ([100, 800]) shoka [1].set_ylim ([0, max_lim]) shoka [1].set_xlabel ('Freq (Hz)') shoka [1].set_ylabel ('| Y (freq) |') plt. onyesha () kurudi frq, abs (Y) time '] delta = mwisho-init ikiwa init * 44100> len (df) au mwisho * 44100> len (df): init = (len (df) / 44100) -delta ikiwa init = 100) & (df [' freq '] <= 800)] mx = imepangwa (df [' amp ']) chapa ("Média das amplitudes:", np.round (np.mean (mx))) chapa ("Percentuais em relação a média das amplitudes.") chapa ("100 maiores amplitudes", np.mean (mx [-100):]) // df ['amp']. maana () * 100, "%", sep = "") chapa ("50 maiores amplitudes:", np.mean (mx [-50:]) // df ['amp']. maana () * 100, "%", sep = "") chapa ("10 maiores amplitudes:", np.mean (mx [-10:]) // df ['amp']. maana () * 100, "%", sep = "") chapa ("Maior amplitude:", np.mean (mx [-1:]) // df ['amp']. mean () * 100, " % ", sep =" ") soma_csv ('Solo_com_Vazamento', 2, 10) # Mfano wa gráficos para vazamentoread_csv ('Solo_sem_Vazamento', 2, 10) # Mfano wa gráficos para sem vazamento

Hatua ya 10: Algoritmo Em R Para Extração Das Sifa Dos Dados

Algoritmo Em R Para Extração Das Sifa Dos Dados
Algoritmo Em R Para Extração Das Sifa Dos Dados
Algoritmo Em R Para Extração Das Sifa Dos Dados
Algoritmo Em R Para Extração Das Sifa Dos Dados

Utilityou-se um algoritmo em R for realizar o processamento and extração das features (características) dos dados obtidos.

Este primeiro algoritmo realiza uma extração identificada, onde ni lazima tufanye kazi kwa njia moja kwa moja kwa njia ya redio ya utaftaji wa programu, ikiwa ni pamoja na matokeo ya matokeo ya utaftaji wa huduma kwa ajili ya utaftaji wa huduma za neva.

Kwa sababu hii, mfumo wa operesheni unakamilishwa kwa njia maalum ya kufanya kazi kwa njia tofauti, ikiwa ni pamoja na kutambuliwa kwa jina moja, utaftaji wa alama kama sifa zinazoweza kutambuliwa.

Vipengele vya Estas ou caraterísticas são propriedades acústicas compostas por varias informações referentes ao espectro de áudio capturado, abaixo seguirá uma descrição (em inglês) destas características.

Hii ni sehemu ya mpango wa kutoa hati ya GitHub na njia inayofaa ya kuunganisha kiungo, kwa hivyo unaweza kufanya hivyo kama mtu anayefanya hivyo.

Programu yako inaweza kutumika kwa njia ya ubadilishaji bure, pakua tafsiri ya R Studio.

Sifa za ziada:

  • maanafreq: wastani wa mzunguko (katika kHz)
  • sd: kupotoka kwa kawaida kwa masafa
  • wastani: masafa ya wastani (katika kHz)
  • Q25: quantile ya kwanza (kwa kHz)
  • Q75: quantile ya tatu (kwa kHz)
  • IQR: anuwai ya interquantile (katika kHz)
  • skew: skewness (tazama maelezo katika maelezo ya specprop)
  • kurt: kurtosis (angalia maelezo katika maelezo ya specprop)
  • sp.ent: entropy ya kupendeza
  • sfm: upole wa macho
  • mode: mzunguko wa mode
  • centroid: frequency centroid (angalia specprop)
  • kilele: masafa ya kilele (masafa yenye nguvu nyingi)
  • maanafun: wastani wa mzunguko wa kimsingi uliopimwa kwa ishara ya sauti
  • minfun: kiwango cha chini cha mzunguko wa kimsingi hupimwa kwa ishara ya sauti
  • maxfun: kiwango cha juu cha msingi kimepimwa kwa ishara ya sauti
  • meandom: wastani wa masafa makubwa yanayopimwa kwa ishara ya sauti
  • akili: kiwango cha chini cha masafa makubwa yanayopimwa kwa ishara ya sauti
  • upeo: kiwango cha juu cha masafa makubwa yanayopimwa kwa ishara ya sauti
  • dfrange: anuwai ya masafa makubwa yanayopimwa kwa ishara ya sauti
  • modindx: faharisi ya moduli. Imehesabiwa kama tofauti iliyokusanywa kabisa kati ya vipimo vya karibu vya masafa ya kimsingi yaliyogawanywa na masafa ya masafa
  • lebo: kuvuja au bila_kuvuja

Algoritmo usado:

pakiti <- c ('tuneR', 'seewave', 'fftw', 'caTools', 'randomForest', 'warbleR', 'panya', 'e1071', 'rpart', 'xgboost', 'e1071') ikiwa (urefu (setdiff (vifurushi, majina ya majina (imewekwa. vifurushi ()))>> 0) {install.packages (setdiff (vifurushi, majina ya jina (imewekwa. vifurushi ()))}}

maktaba (tuneR)

maktaba (seewave) maktaba (caTools) maktaba (rpart) maktaba (rpart.plot) maktaba (randomForest) maktaba (warbleR) maktaba (panya) maktaba (xgboost) maktaba (e1071)

specan3 <- function (X, bp = c (0, 22), wl = 2048, kizingiti = 5, parallel = 1) {# Kutumia usindikaji sambamba: maktaba (devtools), install_github ('nathanvan / parallelsugar') if (class (X) == "data.frame") {if (all (c ("sound.files", "selec", "start", "end")% in% colnames (X))) {start <- as.numeric (unlist (X $ start)) end <- as.numeric (unlist (X $ end)) faili za sauti <- as.character (unlist (X $ sound.files)) selec <- as. tabia (unlist (X $ selec))} mwingine acha (weka (weka (c ("sauti za faili", "selec", "anza", "mwisho") [! (c ("faili za sauti", "selec", "start", "end")% in% colnames (X))], collapse = ","), "column (s) haipatikani katika fremu ya data"))} mwingine stop ("X sio fremu ya data" # ikiwa kuna NA katika mwanzo au mwisho wa kuacha ikiwa (yoyote (ni.na (c (mwisho, anza)))) acha ("NA zinazopatikana mwanzoni na / au mwisho") #kama mwisho au mwanzo sio nambari ya kukomesha ikiwa ((darasa (mwisho)! yoyote (mwisho - kuanza <0)) simama (weka ("Mwanzo ni wa juu kuliko en d katika ", urefu (ambao (mwisho - mwanzo20)) simama (weka (urefu (ambao (mwisho - anza> 20))," chaguzi (zaidi ya sekunde 20 ")) chaguzi (show.error.messages = TRUE = # bp sio vector au urefu! 2) simama ("'bp' lazima iwe nambari ya urefu wa 2")} # onyo la kurudi ikiwa sio faili zote za sauti zilipatikana fs <- list.files (path = getwd (), pattern = ". Wav $", ignore.case = TRUE) ikiwa (urefu (kipekee (faili za sauti

processFolder <- function (folderName) {# Anza na data tupu.frame. data <- data.frame () # Pata orodha ya faili kwenye folda. orodha ya (fileName katika orodha) {row <- data.frame (fileName, 0, 0, 20) data <- rbind (data, safu mlalo)} # Weka majina ya safu wima. majina (data) <- c ('faili za sauti', 'selec', 'anza', 'end' setwd (foldaName) # Faili za mchakato. acoustics <- specan3 (data, parallel = 1) # Rudi kwenye folda ya mzazi. setwd ('..') sauti za sauti}

jinsia currentPath <- getwd () fileName <- basename (filePath) njia <- dirname (filePath) # Weka saraka ili usome faili. setwd (njia) # Anza na data tupu.frame. data <- data.frame (fileName, 0, 0, 20) # Weka majina ya safu. majina (data) <- c ('file.files', 'selec', 'start', 'end') # Faili za mchakato acoustics <- specan3 (data, parallel = 1) # Rudisha njia. setwd (currentPath) tabiri (genderCombo, newdata = acoustics)}

# Mzigo data

kuvuja <- processFolder ('caminho para o pasta com sampuli de áudio com vazamento') bila_vuja

# Weka lebo.

lebo ya kuvuja $ 1 - 1 bila_kuvuja $ studio <- 2 data <- rbind (kuvuja, bila_kuvuja) data $ label <- factor (data $ label, labels = c ('leakage', 'without_leakage'))

# Ondoa nguzo ambazo hazitumiki.

data $ muda <- NULL data $ sound.files <- NULL data $ selec <- NULL data $ peakf <- NULL

# Ondoa safu zilizo na NA.

data <- data [kamili. kesi (data),]

# Andika orodha ya csv.

write.csv (data, file = 'features.csv', sep = ',', row.names = F)

Hatua ya 11: Rede Neural

Rede Neural
Rede Neural

Dhana ya kufanya uso de uma rede neural, ni ya kutambuliwa kwa hali ya kiotomatiki inayotokana na hali ya watoto.

Kutumia tena matumizi ya neva ni kufanya MLP (Multilayer Perceptron), hii ni mfano wa kutoa maoni ya baba kwa utambulisho wa utambulisho na upeanaji wa utaftaji wa modeli bila sistema inayoweza kutambuliwa kwa utambulisho wa kitambulisho cha kufanya sinali, utafute habari juu ya habari.

Kwa hivyo, lazima tujue uma fikra za watoto, kuingia katika orodha ya wahusika katika orodha ya habari inayoweza kutekelezwa kwa jina la mkutano mpya wa melhora-la. Kwa sababu ya kutambuliwa kwa neno hili kunaweza kutekelezwa katika kitabu cha habari, kwa sababu ya ujumbe mfupi juu ya mtu anayetafakari juu ya mpango wa kutafakari juu ya njia tofauti ambazo zinastahili kutekelezwa.

Para os testes realizados o modelo obteve um desempenho muito bom, alcançando na maioria dos testes uma taxa de acerto de 100%, como pode ser observado na imagem anexa.

Mfumo huu ni utumiaji wa matumizi ya mitihani na njia mpya ya kurudia na kusoma tena kwa njia ya maandishi. Hakuna sistema de detecção um algoritmo um pouco diferente seria usado, pois ele realizaria o treino ou receberia um modelo já treinado da nuvem ou de alguma outra fonte and com esse modelo realizaria as predições para cada leitura realizada.

# uandishi: utf-8

kuagiza pandas kama pd

kuagiza numpy kama np kutoka sklearn.model_selection kuagiza train_test_split kama tts kutoka sklearn.neural_network kuagiza MLPClassifier kama MLP kutoka sklearn.metrics kuagiza classification_report

# Leitura dos dados hufanya CSV

df = pd.read_csv ('features.csv') # Separação das entradas df_X = df [df.columns [: len (df.columns) -1] # Filtrando kama entradas df_X = df_X

# Separando dados kwa treino na mtihani

X_train, X_test, Y_train, Y_test = tts (df_X, df_Y, test_size = 0.1)

# Criando modelo de rede neural

modelo = MLP (alpha = 0.0001, learning_rate_init = 0.0001, hidden_layer_size = (50, 50, 50, 50), max_iter = 10000, uanzishaji = 'tanh', solver = 'lbfgs')

# Treinando modelo

modelo.fit (X_train, Y_train) matokeo = modelo.predict (X_test)

# Imprimindo matokeo

ripoti = cr (Y_test, matokeo) mkeka = cm (y_pred = matokeo, y_true = Y_test) chapisha ("Matriz de confusão") chapa (mat, end = "\ n / n") chapa ("Relatório de Classificação") chapa (ripoti)

Ilipendekeza: