Strumenti Utente

Strumenti Sito


distribuzione_delle_frequenze_in_scala_logaritmica

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisione Revisione precedente
Prossima revisione
Revisione precedente
distribuzione_delle_frequenze_in_scala_logaritmica [2021/10/25 14:09]
65.21.180.48 versione precedente ripristinata (2021/06/02 21:27)
distribuzione_delle_frequenze_in_scala_logaritmica [2021/10/29 21:22] (versione attuale)
deleteme versione precedente ripristinata (2021/06/02 21:38)
Linea 2: Linea 2:
  
 Il codice seguente traccia il grafico della distribuzione delle frequenze in scala logaritmica. Le rr. 16-17 creano un 'subplot' denominato 'ax'; le rr.18-19 definiscono la scala di questo elemento come logaritmica; la r. 20 traccia, in blu, i punti relativi ai valori di frequenza osservati. Il codice seguente traccia il grafico della distribuzione delle frequenze in scala logaritmica. Le rr. 16-17 creano un 'subplot' denominato 'ax'; le rr.18-19 definiscono la scala di questo elemento come logaritmica; la r. 20 traccia, in blu, i punti relativi ai valori di frequenza osservati.
-Le righe 21-23 tracciano, in rosso, una retta che corrisponde al modello ideale secondo la legge di Zipf con parametri //C//=5850,7 e //a//=1,03372.+Le righe 21-23 tracciano, in rosso, una retta che corrisponde al modello ideale secondo la legge di Zipf con parametri //C//=5850,7 e //a//=1,03372 (vedi sotto).
 <code python distribuzione_logaritmica.py> <code python distribuzione_logaritmica.py>
 import re import re
Linea 30: Linea 30:
 Dovrebbe prodursi un grafico di questo tipo: Dovrebbe prodursi un grafico di questo tipo:
 {{ :zipf.png?nolink |}} {{ :zipf.png?nolink |}}
 +----
 +Il codice seguente ricava i parametri //C//=5850,7 e //a//=1,03372 attraverso la tecnica della regressione lineare. Per eseguire questo script è necessario aver installato il modulo scikit-learn mediante il comando **pip install sklearn** (Windows) o **pip3 install sklearn** (MacOs e Linux).
 +<code python regressione_lineare.py>
 +import re
 +import numpy as np
 +from sklearn.linear_model import LinearRegression
 +with open('testi/collodi_pinocchio.txt', mode='r', encoding='iso-8859-1') as f: 
 + testo = f.read()
 +testo=testo[1704:]
 +testo=re.sub("'","' ", testo)
 +testo=re.sub('[\.,;:\-?!]{1}','',testo)
 +testo=testo.lower()
 +testo=testo.split()
 +fd=[testo.count(i) for i in set(testo)]
 +fd.sort(reverse=True)
 +V=len(set(testo))
 +Y=np.array([np.log(i) for i in fd])
 +X=np.array(list(np.log(i) for i in range(1,V+1))).reshape((-1, 1))
 +model = LinearRegression().fit(X, Y)
 +C=np.exp(model.intercept_)
 +a=model.coef_[0]*-1
 +print('C:', C)
 +print('a:', a)
 +</code>
distribuzione_delle_frequenze_in_scala_logaritmica.1635170942.txt.gz · Ultima modifica: 2021/10/25 14:09 da 65.21.180.48