8

Sto ricercando la possibilità di avviare un progetto di data mining che includerà calcoli intensivi e trasformazione dei dati e dovrebbe essere relativamente semplice da scalare.C'è qualche motivo per preferire la programmazione funzionale per i progetti di data mining?

Nella vostra esperienza, la scelta del linguaggio di programmazione è critica per il progetto in questione?

Ad esempio, se sto già lavorando su un ambiente JVM, dovrei preferire Clojure su Java normale? L'ambiente funzionale garantisce una scalabilità più semplice? Migliori prestazioni?

Metti da parte altri fattori come la familiarità con la lingua, la toolchain, ecc. Nella tua esperienza, la scelta della lingua è critica?

+3

I fattori "messi da parte" * sono * critici. Se inizi a imparare Clojure solo per questo progetto, non riuscirai ad applicare la sua forza - nel qual caso potresti limitarti ad es. Java - o perdere così tanto tempo che sarebbe davvero fantastico per questo compito compensare il tempo perso. – delnan

risposta

16

Ci sono alcuni buoni motivi per scegliere la programmazione funzionale per i progetti di data mining.

  1. Solitamente progetti di data mining coinvolgono algoritmi e matematica (rispetto ad altri tipi di sistemi) che possono essere più facilmente espressa in programmazione funzionale
  2. dati progetti minerari comporterebbe funzioni aggregate - che sono meglio nella programmazione funzionale , diciamo Clojure
  3. Dati I programmi di data mining sarebbero anche più adatti al parallelismo - sicuramente dati parallelismo e potrebbe anche essere compito il parallelismo, ancora una volta un forte di programmazione funzionale
  4. E linguaggi funzionali come Clojure può interfacciarsi con java comunque per I/O, il file in lettura e scrittura
  5. ho pensare si può imparare facilmente la catena di strumenti ; non è così diverso e quindi non dovrebbe essere un fattore.

stavo chiedendo la stessa domanda che mi e venuto con un grande sì per Clojure - sto ancora pensando attraverso il modo di includere R nel mix.

+1

Inoltre, le operazioni di data mining possono essere viste come una catena di trasformazioni di dati, Qualcosa su cui i linguaggi di programmazione funzionale sono molto bravi. –

+4

Guarda Incanter come R ma in Clojure. – nickik

2

Nessun motivo particolare. Scegli la lingua con cui ti senti più a tuo agio.

Vedere la risposta a similar question about natural language processing. Penso che alcune delle caratteristiche che le persone pensano che le lingue oscure siano adatte all'IA sono davvero controproducenti.

+0

"Penso che alcune delle caratteristiche che le persone pensano che le lingue oscure siano adatte all'IA sono davvero controproducenti.<< Per favore, puoi approfondire questo, preferibilmente con esempi? – missingfaktor

+0

@missingfaktor: Guarda la risposta a cui mi sono collegato. –

0

Spesso le soluzioni di programmazione funzionale sono più scalabili.

+0

Ancora più spesso, non lo sono. –

3

Utilizza il linguaggio più potente con cui ti trovi a tuo agio.

In ogni caso, se si desidera ottenere scalabilità è necessario disporre di un'implementazione di riduzione della mappa che consenta di parallelizzare e raccogliere i risultati.