Wednesday 27 September 2017

Fsharp Mobile Media


Se si vuole assolutamente una libreria, si poteva guardare a questa domanda oppure per cercare altre domande su statistiche librerie on. Here è un'implementazione di quickselect E 'previsto tempo O n e nel caso peggiore O n 2 L'unica restrizione sul tipo è che sono comparable. I utilizzato continuazioni per renderlo ricorsiva in coda ho provato a scrivere le chiamate in un modo che assomiglia a una semplice chiamata ricorsiva Invece di let x, corpo yfab ho usato fab divertimento xy - corpo potrebbe essere semplificato un poco con il CPS monad. I m ancora lavorando groking la cosa F - cercando di capire come pensare in F piuttosto che tradurre da altre lingue che know. i ve recentemente pensato i casi in cui si don t avere un 1 1 carta tra il prima e dopo i casi in cui cade down. One esempio di questo è in movimento medie, dove di solito si avrà len-n 1 risultati per una lista di lunghezza len quando la media su n items. For i guru là fuori, questo è un buon modo per farlo utilizzando coda pizzicato da Jomo Fisher. Forse un modo migliore sarebbe quello di implementare una MovingAverageQueue ereditando dalla Fifo. asked 17 novembre 08 al 11 12.Ho dovuto dichiarare come lasciare media mobile ns seguenti galleggiante al fine di mettere questo in un modulo di utilità, lontano dal luogo di chiamata, per placare il sistema di tipi per quanto posso dire, questo funziona solo con carri, a causa di una limitazione dei crediti MSDN posso sostituire che con di utilizzare questo su una sequenza di int, ma che dà un errore diverso Brian, si può riformulare questo rispondere a lavorare in contesti generici, in modo che che possa funzionare con seq-di-ogni-aritmetico-tipo, senza inferenza di tipo Warren giovane 27 giugno 13 al 19 04.I a precisare che il mio bisogno di questa funzione media mobile è quello di ottenere una breve finestra di 30ish su una sequenza di numeri interi che sono quasi tutti di milioni, quindi non ho bisogno in virgola mobile Anche una sola cifra a destra del punto decimale è di alcuna utilità pratica nella mia applicazione Conversione miei interi alla FP e la risultato di nuovo a int solo per placare la libreria standard F doesn t appello Warren giovane 27 giugno 13 al 19 30.If che non si preoccupano delle prestazioni, allora si può calcolare una media mobile efficiente utilizzando qualcosa di simile a questo assumendo che stiamo calcolando una media mobile su una parte dura 3 giorni window. The su questo sta tenendo sul precedente esercizio totale e il numero di N-finestra mi si avvicinò con la seguente code. This versione isn t così bello guardare il codice Haskell, ma dovrebbe evitare i problemi di prestazioni associati con ricalcolare la vostra finestra su ogni eseguirlo mantiene un totale corrente e tiene i numeri precedentemente utilizzato in una coda, quindi dovrebbe essere molto fast. Just per divertimento, ho scritto un semplice benchmark. If si preoccupa per le prestazioni e come il codice elegante quindi provare. utilizzando FSUnit possiamo testare it. the trick dell'algoritmo è la prima somma dei primi n numeri e poi mantenere un totale corrente aggiungendo la testa della finestra e sottraendo la coda della finestra la finestra scorrevole si ottiene facendo un self zip sulla sequenza, ma con il secondo argomento di Advanced Zip dalla finestra size. At la fine della pipeline che abbiamo appena dividere il totale parziale dalla scansione finestra size. Note è proprio come piega ma cediamo ogni versione dello stato in una sequenza. una soluzione ancora più elegante se possibley con calo di prestazioni è quello di rendere l'osservazione che, se azzeriamo pad sequenza don t bisogno di calcolare l'iniziale sum. There potrebbe essere una performance colpire a causa del secondo indiretto legato alla confezione dei due sequenze, ma forse non è significativo a seconda delle dimensioni del window. answered 31 agosto 12 alla 8 06.Tomas Petricek. Searching di nuovi modi di pensare in programmazione lavorare con data. I ritengono che il lavoro più interessante non è quello solving problemi difficili, ma quello che cambia il modo in cui pensiamo il mondo seguo questa convinzione nel mio lavoro sugli strumenti scientifici dei dati, la programmazione funzionale e l'insegnamento F, nella mia ricerca linguaggi di programmazione e cerco di capirlo attraverso la filosofia di science. I m di lavoro a fare data-driven narrazione più semplice, più aperto e riproducibile al di Alan Turing Institute. I m autore di libri F definitivi e librerie open-soruce Offro la mia formazione F e servizi di consulenza nell'ambito del fsharpWorks. I pubblicato articoli sulla teoria del contesto Consci lingue, fornitori di tipo, ma anche la filosofia di caratteristiche e miglioramenti in science. New Deedle v1 0.As Howard Mansell già annunciati sul blog BlueMountain Tech programmazione abbiamo rilasciato ufficialmente la versione 1 0 di Deedle Nel caso in cui non avete sentito parlare di Deedle ancora, è una libreria per l'analisi interattiva dei dati e l'esplorazione Deedle funziona alla grande sia con C ed F esso prevede due principali strutture di dati di serie per l'utilizzo di dati e serie storiche e la struttura per lavorare con le collezioni di serie pensare file CSV, tabelle di dati, ecc. la cosa bella Deedle è che è stato diventando una biblioteca di base che rende possibile integrare una vasta gamma di diverse componenti dei dati scientifici, ad esempio, il provider di tipo R funziona bene con Deedle e così fa F Charting Siamo già stati anche lavorando sull'integrazione tutti questi in un unico pacchetto chiamato FsLab ma di questo parleremo la prossima time. In questo post del blog, ho ll avere un rapido sguardo a un paio di nuove funzionalità in Deedle e il corrispondente tipo R rilascio fornitore annuncio Howard s ha un altro elenco dettagliato ma voglio solo dare un paio di esempi e commentare brevemente improvemens prestazioni abbiamo did. What s nuovo in Deedle. Perhaps la differenza più visibile nella nuova versione è che molte delle funzioni vengono rinominati abbiamo pensato che prima v1 0 , abbiamo avuto la possibilità unica di ottenere il diritto di denominazione, così abbiamo fatto un sacco di Rinominare per assicurarsi che tutto sia coerente, ad esempio, alcune funzioni di serie e un po 'di colonna utilizzato una sorta usati e gli altri l'ordine e così via Questo ora dovrebbero essere puliti fino Allo stesso modo, abbiamo fissato una serie di discrepanze tra Series e modules. Additions telaio per Deedle API. Aside da rinominare, abbiamo anche aggiunto un paio di funzioni utili, ad esempio, il campione homepage confronta razione di sopravvivenza per le diverse classi di passeggeri Questo può ora essere fatto ancora più facilmente utilizzando PivotTable. The gruppi di funzionamento le righe secondo le due chiavi e quindi esegue l'aggregazione utilizzando la funzione specificata qui Questo è un'operazione comune e così abbiamo deciso di rendere il più semplice possibile continuiamo inoltre a esporre le operazioni sia come F funzioni in moduli e come C esempio - Friendly methods. Another dove abbiamo fatto molti miglioramenti è statistics. The primo miglioramento è che è ora possibile specificare colonna chiave durante il caricamento di dati da un file CSV di nuovo, questo è molto comune La stessa funzione è disponibile durante il caricamento di dati da una sequenza di oggetti using. The prossima cosa nuova è il modulo Stats Questo è il nuovo luogo per tutte le funzioni relative alle statistiche e calcoli numerici abbiamo trovato che l'aggiunta di ulteriori funzioni per i moduli della serie e frame è stato un po 'di confusione, così abbiamo spostato tutte le funzioni statistiche in un unico luogo Questo è ancora più importante ora che abbiamo aggiunto ulteriori funzioni curtosi, asimmetria, varianza e abbiamo aggiunto altri modi per calcolare lo spostamento e l'espansione di Windows per ulteriori informazioni vedere le statistiche telaio e serie page. Improved documentation. Finally , uno dei punti di forza di Deedle è che ha un eccellente documentazione Questo è ora ancora più il caso, perché abbiamo lucidato la documentazione generata automaticamente dai commenti Markdown nel codice sorgente in particolare, per le tre principali modules. Series modulo fornisce funzioni per lavorare con i valori della serie di dati individuali e serie temporali Questo include operazioni quali il campionamento, le trasformazioni, l'accesso ai dati e il modulo more. Frame fornisce le funzioni che sono simili a quelli del modulo della serie, ma operano su tutto il frame di dati è possibile trasformare, allineare e unire cornici, eseguire varie operazioni modulo re-indicizzazione etc. Stats implementa funzioni statistiche standard di media, varianza, curtosi, asimmetria, ecc sopra serie, finestre, finestre in espansione e molto altro ancora Il modulo contiene funzioni per entrambe le serie e frames. What in movimento s nuovo in R provider. Together con una nuova versione di Deedle, abbiamo anche aggiornato il provider di tipo R ci sono un paio di miglioramenti che rendono i lavori di installazione molto better. The da NuGet non più contare su script di installazione di PowerShell, così si può lavorare su Mono e quando si utilizza il Restore Pacchetti feature. The tipologia comunica con R attraverso un processo separato, quindi è più stabile e sarà anche farci chiamare versione a 64 bit di R. These sono miglioramenti tecnici, ma molto importanti Tuttavia , abbiamo aggiunto anche una bella nuova funzione che rende ancora più facile per mescolare R e digitare F. RData provider. In R, è possibile salvare gli ambienti aree di lavoro in file Questo è utile se si desidera archiviare i risultati di alcune analisi interattivo fatto in R Ma l'ambiente, wouldn t sarebbe bello se si potesse fare un po 'di analisi dei dati in R e quindi salvare i dati in un file e caricarlo facilmente da F in un tipo di sicurezza way. This è esattamente quello che si ottiene con la RDATA tipo di provider Let s dire che ho il file che contiene il set di dati salvato mtcars sotto le vetture nome insieme con un mpg lista e un valore di mpgMean posso write. If si guardano le tipologie, si vedrà che è di tipo flottante ed è di tipo stringa telaio , stringa il fornitore di tipo R utilizza i plugin installati, come il plugin Deedle per trovare il tipo F più appropriato per esporre i dati e quindi le vetture frame di dati R è esposto automaticamente come Deedle frame. This ci permette rapidamente di gruppo i valori in base al numero di cilindri cilindri e quindi calcolare miglia per gallone in media mpg per ciascuno dei gruppi che utilizzano F Charting, il risultato appare come this. Deedle prestazioni improvements. In questa versione di Deedle, abbiamo trascorso qualche tempo sul miglioramento delle prestazioni la prima versione è stata progettata con le prestazioni in mente e le parti interne permettono di implementare le operazioni in modo efficiente, ad esempio in F, è abbastanza facile scrivere codice in modo che i dati vengono memorizzati in blocchi di memoria continuo Tuttavia, ci sono stati un certo numero di luoghi in cui una qualche funzione Deedle appena usato il più semplice modo stupido per ottenere le cose done. This è stato bello, perché cerchiamo di costruire rapidamente un sofisticato e facile da usare API, ma ci sono stati casi in cui le cose erano semplicemente troppo lento Quindi, il miglioramento delle prestazioni è uno sforzo continuo e se si trova un caso d'uso in cui Deedle è lento, invii una issue. Measuring performance. To assicurarsi che siamo in grado di monitorare le prestazioni, ho creato abbastanza semplice strumento che ci permette di misurare le prestazioni automaticamente Questo è attualmente disponibile nel mio ramo lo strumento viene avviato tramite uno script falso e misura l'esecuzione di tutti i test in un file specificato I test servono anche come test di unità per l'attributo example. The PerfTest specifica che la funzione è una prova di efficienza e permette inoltre di specificare il numero di iterazioni in modo che si corre più volte test rapidi, ma i test lenti solo pochi times. Absolute performance. I fatto due semplici analisi della performance il primo grafico mette a confronto la nuova versione del Deedle con la versione precedente disponibile su numeri NuGet. The rappresentano il numero totale di millisecondi necessari per eseguire il test Si noti che la X asse è limitata a 10 secondi, ma alcuni dei test effettivamente prendere più utilizzando la vecchia versione Inoltre, alcuni test hanno solo valore quando si utilizza la nuova versione - questo è perché stanno usando la funzione che è nuovo in v1 paio di punti 0.A vale la pena mentioning. Some dei notevoli miglioramenti sono quando si unisce serie - questo vale anche per l'adesione di fotogrammi ad esempio, quando si applicano operazioni numeriche Abbiamo anche aggiunto il sovraccarico di Merge su telai che possono unire più serie in una sola volta, che è significativamente più veloce e permette di unire ad esempio, 1000 cornici, che in precedenza era troppo slow. There è una serie di miglioramenti nelle operazioni di Resample nuovo, questo è solo un esempio di un aumento di velocità più generale che interessa anche a finestre e la suddivisione in blocchi functions. Relative performance. In il grafico precedente, è un po ' difficile da vedere che cosa è il più grande miglioramento delle prestazioni Nella seguente tabella, i test vengono scalati in modo che le prestazioni utilizzando la versione originale 0 9 12 viene utilizzato come 100 e le prestazioni con la nuova versione è indicata in percentuale in modo da tagliare 10sec fino a 5 secondi mostra come 50.Again, è possibile vedere una serie di interessanti things. The più grande aumento di velocità è in accesso serie galleggiante tramite serie di oggetti Questo è il caso quando si accede a una colonna su un telaio usando che restituisce una serie di valori ObjectSeries K Perché noi non si conosce il tipo di singole colonne, noi li versa serie contenenti valori obj Nella nuova versione, questa realtà non la casella valori e quindi convertire la serie torna alla serie K, galleggiante è essenzialmente non-op. We ha fatto anche un po 'di lavoro sul miglioramento raggruppamento e le operazioni correlate, così, ad esempio, il campione homepage è ora circa due volte più veloce C'è ancora un sacco di spazio per migliorare, ma come potete vedere, abbiamo ri lavorando sodo su this. The operazioni di giunzione e fusione sono circa 6 volte più veloce, ma per fondere questo è ancora più significativo se si ri fusione di più test frames. The che ho incluso qui non sono affatto completa Essi rappresentano semplicemente un paio di casi di test che stavo lavorando Tuttavia, con le misurazioni delle prestazioni in atto , dovremmo essere in grado di utilizzare questo sempre più spesso Quindi, se si dispone di un caso interessante, presentare una richiesta di pull l'aggiunta di un test. The prestazioni 1 0 rilascio di Deedle è una tappa importante Sebbene Deedle è stato intorno dal novembre e è stato utilizzato internamente da BlueMountain, il 1 0 rilascio significa che la biblioteca sta diventando sempre più stabile e pronta per gli altri a adopt. Of Naturalmente, c'è sempre spazio per migliorare ci sono operazioni che potrebbero essere più veloce si prega di rapporto, ci sono funzioni che dovrebbe essere aggiunto si prega di suggerire loro e ci sono probabilmente alcuni bug rimanenti ho segnato alcuni problemi come up-per-palio in caso si volesse contribuire directly. Another cosa importante Deedle è che si tratta di un componente fondamentale intorno al quale siamo in grado di costruire un impressionante stack di scienza dati Se si ri interessati e registrarsi su e seguire questo blog per più information. There sono molte persone che hanno contribuito alla Deedle e fornitore di R, ma i progetti wouldn t esiste senza Howard Mansell e Adam Klein a BlueMountain Un sacco di R lavoro fornitore è stato fatto da David Charboneau Thanks. type Ambiente membro statico stringa CommandLine statica membro stringa CurrentDirectory con get, set statico membro Exit exitCode int - unità membro statico ExitCode int con gET, impostare stringa del nome ExpandEnvironmentVariables membro statica - stringa membro statico FailFast messaggio stringa - unità 1 sovraccarico unità GetCommandLineArgs membro statica - stringa membro statico GetEnvironmentVariable variabile stringa - stringa 1 sovraccarico unità GetEnvironmentVariables membro statica - IDictionary 1 sovraccarico membro statico GetFolderPath cartella SpecialFolder - stringa 1 sovraccarico tipo annidato SpecialFolder tipo nested SpecialFolderOption. property string. Multiple articoli namespace FSharp. val shouldEqual aa - bb - unit. val int titanica frame, string. Multiple modulo articoli Telaio .-------------------- tipo di telaio membro statico lettore ReadReader IDataReader - int cornice, stringa membri CustomExpanders statici tipo di dizionario, Func obj, ss tipo stringa obj statica Lista NonExpandableInterfaces Member membro statico NonExpandableTypes HashSet tipo .-------------------- tipo di telaio TRowKey, TColumnKey richiede l'uguaglianza e la parità di interfaccia IDynamicMetaObjectProvider interfaccia INotifyCollectionChanged interfaccia IFsiFormattable interfaccia IFrame nuova nomi seguenti TColumnKey colonne seguenti ISeries TRowKey - TRowKey Telaio, TColumnKey privato di dati nuovo rowIndex iIndex TRowKey columnIndex iIndex TColumnKey IVector IVector - TRowKey Telaio, TColumnKey membro addColumn ISeries serie colonna TColumnKey TRowKey - membro mobile a colonna AddColumn serie TColumnKey ss V - unità di membro AddColumn serie colonna TColumnKey ISeries TRowKey ricerca Lookup - unità di membro AddColumn colonna TColumnKey serie ss V di ricerca Lookup - nome unit. Full, .----------- --------- nuova nomi seguenti TColumnKey colonne seguenti ISeries TRowKey - TRowKey Telaio, TColumnKey. static percorso membro hasHeaders stringa bool inferTypes bool inferRows int schema maxRows stringa cultura separatori stringa stringa int - int Telaio, hasHeaders stringa membri static bool inferTypes bool inferRows int schema stringa maxRows stringa cultura separatori stringa int - int Telaio, stringa membro statico stringa stringa di percorso indexCol hasHeaders bool inferTypes bool inferRows int maxRows stringa cultura separatori stringa schema stringa int - Telaio R, stringa richiede equality. val pivot rowGrp R - ObjectSeries C - Rnew - colGrp R - ObjectSeries C - Cnew - op telaio R, C - T - cornice cornice R, C - telaio Rnew, Cnew richiede l'uguaglianza e la parità e l'uguaglianza e la fila ObjectSeries equality. val string. member colonna K - R colonna di membro K fallback R - articoli R. Multiple Val valore stringa T - string. type bool Boolean. val countRows cornice cornice R, C - int richiede l'uguaglianza e la equality. static cornice membro telaio R, C r C c C op Funz telaio R , C, T - Telaio R, C richiede l'uguaglianza e la parità membro r TColumnKey c TRowKey TColumnKey op telaio, TColumnKey - T - Telaio R, C richiede l'uguaglianza e la parità e uguaglianza e equality. val DateTime MSFT telaio, articoli string. Multiple tipo DateTime struct nuova Int64 zecche - DateTime 10 sovraccarichi membro aggiungere valore TimeSpan - DateTime valore AddDays membri float - DateTime valore AddHours membri float - DateTime valore AddMilliseconds membri float - DateTime valore AddMinutes membri float - DateTime AddMonths membri mesi int - DateTime valore AddSeconds membri float - DateTime gli valore AddTicks Int64 - DateTime valore AddYears membri int - end DateTime DateTime .-------------------- 0 altri sovraccarichi DateTime zecche Int64 unità 0 altri sovraccarichi DateTime zecche Int64, tipo DateTimeKind unità 0 altri sovraccarichi DateTime int anno, il mese int, unità giornata int 0 altri sovraccarichi DateTime int anno, il mese int, giorno int, unità calendario 0 altri sovraccarichi DateTime int anno, il mese int, giorno int, ora int, minuto int, secondo int unità 0 altri sovraccarichi DateTime int anno, il mese Int, giorno Int, ora Int, minuto Int, secondo Int, tipo unità DateTimeKind 0 altri sovraccarichi DateTime int anno, il mese int, giorno int, ora int, minuto int, secondo int, calendario unità 0 altri sovraccarichi DateTime int anno, il mese Int, giorno Int, ora Int, minuto Int, secondo Int, unità millisecondo int 0 altri sovraccarichi DateTime int anno, il mese int, giorno int, ora int, minuto int, secondo int, millisecondo int , tipo DateTimeKind unità 0 altri overloads. type Statistiche statico membro conteggio cornice cornice R, C - serie C, int richiede l'uguaglianza e la parità membro statico contano serie serie K, V - int richiede l'uguaglianza statica serie membro expandingCount serie K, galleggiante - serie K , galleggiante richiede l'uguaglianza statica serie membro expandingKurt serie K, galleggiante - serie K, galleggiante richiede l'uguaglianza membro statico serie expandingMax serie K, galleggiante - serie K, galleggiante richiede l'uguaglianza membro statico expandingMean serie serie K, galleggiante - serie K, galleggiante richiede l'uguaglianza statica serie expandingMin membro della serie K, galleggiante - serie K, galleggiante richiede l'uguaglianza membro statico serie expandingSkew serie K, galleggiante - serie K, galleggiante richiede l'uguaglianza statica serie membro expandingStdDev serie K, galleggiante - serie K, galleggiante richiede l'uguaglianza membro statico serie expandingSum serie K , galleggiante - serie K, galleggiante richiede equality. static dimensioni membro int - serie serie K, galleggiante - serie K, galleggiante richiede equality. static serie membro della serie K, galleggiante - serie K, galleggiante richiede membro equality. static cornice cornice R, C - serie C, galleggiante richiede l'uguaglianza e la parità statica serie membro della serie K, galleggiante - galleggiante richiede equality. type unità membro Clone Array - obj membro CopyTo array di tipo indice Array int - unità 1 sovraccarico unità membro GetEnumerator - IEnumerator dimensione membro GetLength int - int membro dimensione GetLongLength int - Int64 membro GetLowerBound dimensione int - int membro GetUpperBound dimensione int - int membro GetValue ParamArray indici int - obj 7 sovraccarichi membro inizializzare unità - unità membro IsFixedSize bool. val gamma media T - T richiede utente e membro DivideByInt e membro getZero. val groupRowsByInt colonna C - cornice cornice R, C - telaio int R, C richiede colonna uguaglianza e getCol equality. val C - cornice cornice R, C - serie R, V richiede l'uguaglianza e equality. static livello di membro K - L - serie Series K, galleggiante - Serie L, galleggiante richiede l'uguaglianza e equality. val T2 FST tuple T1 - articoli T1.Multiple modulo Serie .-------------------- membri statici tipo Series I valori ofNullables ss Nullable A0 - Serie Int, a0 richiede costruttore di default e tipo di valore e a0 ValueType membri statico ofObservations osservazioni ss A0 A1 - Serie A0, A1 richiede un'uguaglianza statica ofOptionalObservations membri osservazioni opzione K a1 ss - Serie K, a1 richiede l'uguaglianza membro statico ofValues ​​valori seguenti A0 - Serie int, a0 .-------------------- tipo Serie K, V richiede l'uguaglianza interfaccia IFsiFormattable ISeries K nuove coppie seguenti KeyValuePair K, V - Serie K, V nuove chiavi ss K valori ss V - serie K, V nuovo indice iIndex K vettore IVector V vectorBuilder IVectorBuilder IndexBuilder IIndexBuilder - Serie K, V membro dopo lowerExclusive K - Serie K, membro V aggregato aggregazione aggregazione K observationSelector Funz DataSegment Series K, V, KeyValuePair TNewKey, OptionalValue R - Serie TNewKey, R richiede membro uguaglianza aggregato aggregazione aggregazione K keySelector Funz DataSegment Serie K, V, TNewKey valueSelector Funz DataSegment Serie K, V, OptionalValue R - Serie TNewKey, R richiede l'uguaglianza unità membro AsyncMaterialize - Async Serie K, V membro prima upperExclusive K - Serie K, nome V. Full, .-------------------- nuove coppie ss K, V - Serie K, V nuove chiavi ss K valori ss V - serie K, V nuova K vettore IVector V - serie K, V. Val osservazioni serie serie K, T - ss KT richiede equality. val int r1 serie, nome float. Full Deedle-v1 r1.VAL osservazioni serie ss ab - serie a, B richiede equality. val int r2 serie, nome float. Full Deedle-v1 r2.val r3 serie int, nome float. Full Deedle-v1 r3.val Merge lunga serie 3 non ordinata 300k ripetendo unità Unisci - unit. Full nome Deedle-v1 Merge 3 non ordinata 300k lunga serie di ripetere Merge. member ParamArray otherSeries serie K, V - serie K, V otherSeries membri seguenti serie K, V - serie K, membro V otherSeries serie K, V - Serie K, V membro un'altra serie K, V comportamento UnionBehavior - Serie K, V.

No comments:

Post a Comment