Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1893 connectés 

 


Utilisez-vous du machine learning dans votre job ?




Attention si vous cliquez sur "voir les résultats" vous ne pourrez plus voter

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  25  26  27  ..  128  129  130  131  132  133
Auteur Sujet :

[Topic Unique] Machine Learning & Data Science

n°5026720
Bébé Yoda
Posté le 10-01-2018 à 09:11:54  profilanswer
 

Reprise du message précédent :
Hello je vais passer un entretien bientôt pour un poste en data.
C'est très accès Time series et Spark.
Ils savent que j'ai jamais touché à Spark et proposent de me former en interne mais j'aimerais bosser un peu avant l'entretien manière de montrer que je suis motivé (et pas avoir l'air trop con si on en parle).

 

Vous auriez des suggestions de tutos/MOOC vraiment bien faits ?

 

Idem sur les Times séries ?

mood
Publicité
Posté le 10-01-2018 à 09:11:54  profilanswer
 

n°5026749
guigui84b
Posté le 10-01-2018 à 11:10:33  profilanswer
 

Bébé Yoda a écrit :

Hello je vais passer un entretien bientôt pour un poste en data.
C'est très accès Time series et Spark.
Ils savent que j'ai jamais touché à Spark et proposent de me former en interne mais j'aimerais bosser un peu avant l'entretien manière de montrer que je suis motivé (et pas avoir l'air trop con si on en parle).
 
Vous auriez des suggestions de tutos/MOOC vraiment bien faits ?
 
Idem sur les Times séries ?


 
 
 
ah spark et timeseries .. mon reve  :love:  
 
en spark perso j'ai fait Data Science and Engineering with Spark XSeries chez edx .. plutôt très bien fait, en python on voit pas mal de choses différentes avec un peu de ml à la fin. il y a 3 modules, je ne sais pas si c'est ouvert en ce moment ou si c'est des sessions
sinon pas mal de ressource sur databricks : https://community.cloud.databricks.com/ tu peux faire tourner tes notebooks et pas mal de notebooks de demo, c'est les notebooks utilisés dans le xseries
 
timeseries il y avait un post au dessus avec pas mal de ressource, tu peux aussi regarder les db utilisées en timeseries
Influxdb très hype en ce moment , c'est ce que j'utilise, une startup française www.warp10.io que j'ai vu sur un salon avec un produit assez costaud

Message cité 1 fois
Message édité par guigui84b le 10-01-2018 à 11:11:44
n°5026865
Tidom
Posté le 11-01-2018 à 07:07:56  profilanswer
 

Bébé Yoda a écrit :

Hello je vais passer un entretien bientôt pour un poste en data.
C'est très accès Time series et Spark.
Ils savent que j'ai jamais touché à Spark et proposent de me former en interne mais j'aimerais bosser un peu avant l'entretien manière de montrer que je suis motivé (et pas avoir l'air trop con si on en parle).
 
Vous auriez des suggestions de tutos/MOOC vraiment bien faits ?
 
Idem sur les Times séries ?


 
On croise les doigts  [:zigg]

n°5026928
Bébé Yoda
Posté le 11-01-2018 à 14:20:07  profilanswer
 

guigui84b a écrit :


 
 
 
ah spark et timeseries .. mon reve  :love:  
 
en spark perso j'ai fait Data Science and Engineering with Spark XSeries chez edx .. plutôt très bien fait, en python on voit pas mal de choses différentes avec un peu de ml à la fin. il y a 3 modules, je ne sais pas si c'est ouvert en ce moment ou si c'est des sessions
sinon pas mal de ressource sur databricks : https://community.cloud.databricks.com/ tu peux faire tourner tes notebooks et pas mal de notebooks de demo, c'est les notebooks utilisés dans le xseries
 
timeseries il y avait un post au dessus avec pas mal de ressource, tu peux aussi regarder les db utilisées en timeseries
Influxdb très hype en ce moment , c'est ce que j'utilise, une startup française www.warp10.io que j'ai vu sur un salon avec un produit assez costaud


Tidom a écrit :


 
On croise les doigts  [:zigg]


Merci à vous deux :)
 
Entre temps j'ai décroché un deuxième entretien (plutôt deeplearning/tensorflow celui là)

n°5028365
o_BlastaaM​oof_o
Posté le 21-01-2018 à 16:40:29  profilanswer
 

Pour se marrer en ce dimanche après-midi et lancer le débat sur l'afflux massif de "data scientists" sur le marché et leur présumé niveau de (in)compétence, je vous propose un petit exemple rencontré au boulot.
Le contexte : le bout de code Python ci-dessous a été écrit par un "data scientist" junior, tout droit sorti de l'école et embauché après son stage de fin d'études. Je rappelle que je bosse dans une grande banque française.
 
Voici donc l'objet du scandale. J'ai changé les noms de variables dans un souci de simplicité. a est la variable d'entrée, il s'agit d'un dataframe d'environ 800k observations.
 

Code :
  1. b = a.sort(['ID'],ascending=True)
  2. b.reset_index(inplace=True, drop=True)
  3. b['NID']=np.zeros(len(b))
  4. i=1
  5. j=0
  6. while i<len(b):
  7.     if b['ID'][i]==b['ID'][i-1]:
  8.         b['NID'][i]=j
  9.         i=i+1
  10.     else:
  11.         b['NID'][i]=j+1
  12.         j=j+1
  13.         i=i+1


 
Il m'a fallu quelques dizaines de secondes pour comprendre à quoi sert ce bout de code qui, bien évidemment, a été écrit sans le moindre commentaire pertinent.  
Je mets la réponse ci-dessous, pour les flemmards.
 

Spoiler :

Il s'agit d'un code qui anonymise un identifiant client : il remplace l'identifiant par sa position dans la liste des identifiants uniques apparaîssant dans le dataset.


 
Inutile de dire que quiconque n'étant pas en mesure de comprendre ce que fait ce code ou pourquoi il ne faut pas procéder ainsi ne peut se considérer comme data scientist à mon sens.
 
Evidemment, le deuxième effet kisscool, c'est que ce code rame à mort. Le traitement prend de mémoire entre 1h30 et 2h alors qu'avec la bonne méthode, il serait possible de faire la même chose en quelques secondes.
 
edit : c'est encore pire que je ne le pensais : 0,19 secondes pour faire la même chose avec la bonne méthode :lol:

Message cité 3 fois
Message édité par o_BlastaaMoof_o le 21-01-2018 à 16:48:04
n°5028366
Bébé Yoda
Posté le 21-01-2018 à 16:59:43  profilanswer
 

Alors j'ai bien compris qu'il créait une nouvelle colonne pour stocker une nouvelle ID.
Mais en effet le truc le plus choquant, c'est cette boucle while. Pas besoin d'avoir fait beaucoup de python pour savoir que ça allait ramer à mort :D
De mémoire si tu prends une pauvre boucle et qu'à la place tu fais proprement avec numpy ou pandas tu peux gagner jusqu'à un facteur 300 ou 400.
 
Quand je pense qu'on m'a refusé sur certains postes, supposément parce qu'un petit jeune sorti d'école serait plus efficace ... [:pharoahe monch:7]  
 
(bon je dis pas que je suis super fort, mais c'est quand même le genre de code que je ferais jamais)

n°5028375
o_BlastaaM​oof_o
Posté le 21-01-2018 à 18:53:33  profilanswer
 

Sérieusement ?

n°5028383
o_BlastaaM​oof_o
Posté le 21-01-2018 à 19:12:50  profilanswer
 

En MATLAB, ça va ressembler à la chose suivante :

 
Code :
  1. [~,b.NID] = ismember(a.ID, unique(a.ID))


Message édité par o_BlastaaMoof_o le 21-01-2018 à 19:13:09
n°5028384
Bébé Yoda
Posté le 21-01-2018 à 19:14:05  profilanswer
 

Tiens si tu veux j'ai écrit un petit article sur le sujet :  
 


 
Les boucles for en python c'est ultra lent, et si tu vectorise le truc avec numpy c'est beaucoup plus rapide.
 
Là tu as un dataframe pandas, tu pourrais appliquer je suppose directement une transformation sur la première colonne genre comme ça : https://pandas.pydata.org/pandas-do [...] apply.html

n°5028387
Rasthor
Posté le 21-01-2018 à 19:18:41  profilanswer
 

Bébé Yoda a écrit :

Tiens si tu veux j'ai écrit un petit article sur le sujet :  
 


 
Les boucles for en python c'est ultra lent, et si tu vectorise le truc avec numpy c'est beaucoup plus rapide.
 
Là tu as un dataframe pandas, tu pourrais appliquer je suppose directement une transformation sur la première colonne genre comme ça : https://pandas.pydata.org/pandas-do [...] apply.html


This.  [:clooney16]

mood
Publicité
Posté le 21-01-2018 à 19:18:41  profilanswer
 

n°5028392
o_BlastaaM​oof_o
Posté le 21-01-2018 à 19:23:41  profilanswer
 

En fait je crois que je vais m'en servir comme question d'entretien :o
 
Ca tombe bien, j'en ai un mardi :o

n°5028393
Bébé Yoda
Posté le 21-01-2018 à 19:27:17  profilanswer
 


 
J'ai dit une bêtise ?
 
Edit: par exemple, plus détaillé là https://hackernoon.com/speeding-up- [...] 80e939bed3

Message cité 1 fois
Message édité par Bébé Yoda le 21-01-2018 à 19:28:51
n°5028396
o_BlastaaM​oof_o
Posté le 21-01-2018 à 19:35:23  profilanswer
 

Y a eu du delete :o

n°5028400
Bébé Yoda
Posté le 21-01-2018 à 20:04:00  profilanswer
 

Ouf :)

 

Me voilà rassuré.

 

En tout cas j'ai retenu qu'en python il faut dans la mesure du possible bannir les boucles. Leçon numéro 1.

 

PS : si vous embauchez dans vos boîtes ça m'intéresse. Je suis pas plus mauvais que vos étudiants fraîchement diplômés :o

n°5028401
Rasthor
Posté le 21-01-2018 à 20:04:08  profilanswer
 

Bébé Yoda a écrit :

J'ai dit une bêtise ?

Non, bien au contraire!
 


 
Oui, j'avais ecrit une betise. :D
 
Mais y'a moyen de faire propre avec une seule ligne, en usant de diff(), eq(), np.where() ou quelque chose du genre.

n°5028402
o_BlastaaM​oof_o
Posté le 21-01-2018 à 20:08:39  profilanswer
 

Rasthor a écrit :


 
Oui, j'avais ecrit une betise. :D
 
Mais y'a moyen de faire propre avec une seule ligne, en usant de diff(), eq(), np.where() ou quelque chose du genre.


Note que je ne suis pas pour autant un extrémiste de la minimisation du nombre de lignes de code :o
 
Tant que le code reste efficace et pas trop verbeux, moi ça me va bien.
Parfois, écrire des opérations complexes en peu de lignes produit un code difficile à déchiffrer et donc à maintenir. Du coup, il faut généralement l'accompagner d'un paquet de lignes de commentaires, au final on n'y gagne pas grand chose :jap:

n°5028404
Rasthor
Posté le 21-01-2018 à 20:40:39  profilanswer
 

o_BlastaaMoof_o a écrit :


Note que je ne suis pas pour autant un extrémiste de la minimisation du nombre de lignes de code :o
 
Tant que le code reste efficace et pas trop verbeux, moi ça me va bien.
Parfois, écrire des opérations complexes en peu de lignes produit un code difficile à déchiffrer et donc à maintenir. Du coup, il faut généralement l'accompagner d'un paquet de lignes de commentaires, au final on n'y gagne pas grand chose :jap:


L'avantage d'utiliser les fonctions fournies avec python/pandas/numpy, c'est qu'on est sur qu'elles sont optimisees, du moins que le code qu'on pourrait produire soi-meme.

n°5028405
Bébé Yoda
Posté le 21-01-2018 à 20:47:55  profilanswer
 

C'est vrai, surtout quand on maîtrise pas du tout C et compagnie comme moi :D

 

Après comme dit plus haut, à performances égales un code plus compact est pas forcément plus "utile" au final.

n°5028430
Profil sup​primé
Posté le 21-01-2018 à 22:45:16  answer
 

Bonjour aux pros de la data,
 
J'ai eu la semaine dernière une intro à python et j'ai un petit exo qui me prends bien la tete.
 
Tout d'abord, nous devons créer une liste aléatoire de N candidats qui ont comme choix "A" "B" "C" ou "D"
 
A l'aide du code suivant j'ai réussi à calculer le nombre d'occurrences de chaque modalité:
 

Code :
  1. import random
  2. candidats = ["A","B","C","D"]
  3. nombre_bulletins=10
  4. compteurs={"A":0,"B":0,"C":0,"D":0}
  5. votes=[]
  6. for i in range(nombre_bulletins):
  7.     votes.append(random.choice(candidats))
  8.    
  9. for v in votes:
  10.     compteurs[v] = compteurs[v] + 1
  11. print(votes)
  12. print(compteurs)


 
Il me faut maintenant passer par le parallélisme et calculer le gain de temps pour une liste de candidats de très grande taille.
Je n'ai que très peu d'idées, je sais à peine ce qu'est le parrallèlisme ( je n'ai pas une formation d'informatique ...)
J'ai cru comprendre qu'il fallait que je divise ma liste par le nombre de processeurs ce qui m'a aboutit à ce code :

Code :
  1. import multiprocessing as mp
  2. print(mp.cpu_count())
  3. x=nombre_bulletins // nombre_processeurs
  4. print(x)
  5. morceaux =[]
  6. for i in range(nombre_processeurs):
  7.     morceaux.append(votes[i*x:(1+i)*x])
  8. morceaux


 
A partir de la, pour calculer le nombre d'occurrence de chaque modalité et le gain de temps je suis bloqué ..
 
Si quelqu'un a une solution je lui en serais très reconnaissant :D


Message édité par Profil supprimé le 21-01-2018 à 22:48:11
n°5028431
Profil sup​primé
Posté le 21-01-2018 à 22:55:20  answer
 

Tu prends ta liste de départ, tu divises en x sous listes avec x tin nombre de threads. Tu écris une fonction qui compte les
A, b, c, d pour une liste donnée. Tu passes tes x sous listes à la fonction en parallèle avec pool ou multithreading. Tu forces ton code à attendre la fin des x sous comptes. Tu additionnes les résultats des x threads. Enjoy.

 

Autre solution: pandas avec un group by sum. 2 lignes de code en comptant l'import


Message édité par Profil supprimé le 21-01-2018 à 23:03:53
n°5028433
o_BlastaaM​oof_o
Posté le 21-01-2018 à 23:01:00  profilanswer
 

En MATLAB, tu avais juste à remplacer ton deuxième for par un parfor et c'était torché.
Dommage que tu n'utilises pas MATLAB :o

n°5028438
Profil sup​primé
Posté le 21-01-2018 à 23:14:55  answer
 

Donc j'ai réussi a écrire ma fonction pour compter les ABCD:

Code :
  1. def compter(votes):
  2.     compteurs = {}
  3.     for c in candidats:
  4.         compteurs[c] = 0
  5.     for v in votes:
  6.         compteurs[v] = compteurs[v] + 1
  7.     return compteurs


Pour appliquer la fonction pool j'ai essayé ca

Code :
  1. pool = mp.Pool()
  2. tickets = []
  3. for m in morceaux:
  4.     tickets.append(pool.apply_async(compter, [m]))


 
Après je vois mal comment sommer via pandas je connais pas bien ce package :/
 
Et pour calculer le gain de temps vs un calcul sans parallélisme ?

Message cité 1 fois
Message édité par Profil supprimé le 21-01-2018 à 23:27:33
n°5028449
Profil sup​primé
Posté le 22-01-2018 à 07:28:55  answer
 

 

Ta fonction va donner un nombre de vote égal pour chaque candidat, égal à la taille de ta sous liste...

 

Après regarde les exemples pour pool sur python une fois ta fonction écrite c'est juste une ligne de code que tu peux récupérer directement

n°5028799
Rasthor
Posté le 23-01-2018 à 21:44:34  profilanswer
 

Fundamentals of Data Visualization
http://serialmentor.com/dataviz/index.html
 
 
Ca peut etre utile pour faire vos graphs (indépendamment du langage utilisé).  [:doc_prodigy]

n°5028804
Plix
Posté le 23-01-2018 à 22:02:26  profilanswer
 

Affreux ce code  d'"anonymisation"  :sweat:  :sweat:

 

Il faudrait qu'il passe un peu de temps à parcourir l'api de pandas et numpy pour progresser...

 

Par curiosité c'est quel type de profil ?

n°5028848
nawker
vent d'est
Posté le 24-01-2018 à 10:06:47  profilanswer
 

Si même linkedin me dit que je dois postuler à des tafs machine learning et data science dans la nouvelle cogip de démo [:frog sad:3]
Sur mesure apparemment [:kerjiel:1]


---------------
"genre il voulait 2 coktail avec du cidre qui valait 2€, y'en avait plus mais il restait un coktail avec du "vin" au même prix, le mec voulait pas de ce cocktail...j'ai réussi à lui faire accepter en lui donnant en plus un morceau de camembert" Gypssix
n°5028850
Rontgen
Posté le 24-01-2018 à 10:10:51  profilanswer
 

C'est pas déconnant, il y a énormément de physiciens qui se reconvertissent dans la data science ou le ML

n°5028852
Bébé Yoda
Posté le 24-01-2018 à 10:39:00  profilanswer
 

Rontgen a écrit :

C'est pas déconnant, il y a énormément de physiciens qui se reconvertissent dans la data science ou le ML

 

J'ai passé un entretien hier pour rejoindre une équipe de 13 gars avec des profils variés. 2 physiciens, 1 biologiste, 1 financier. On trouve de tout :)

n°5028883
blacksad
Posté le 24-01-2018 à 16:17:39  profilanswer
 

Question sans doute un brin HS, mais parmi les topics que je connais c'est sans doute le plus approprié.
 
J'ai une série de données échantillonnées avec un pas de temps inférieur à la seconde.
Pour les stocker et les utiliser plus facilement, je veux faire des moyennes à des pas de temps supérieurs (y compris des formats "bâtards" ): 1min, 15min, 1heure, 1jour.
 
Les dates des valeurs moyennes sont stockées sous forme de POSIX yyyy-mm-dd hh:mm:ss.
 
Question : si on prend par exemple des moyennes à 1heure, comment dois-je noter la date de la valeur représentant la moyenne des valeurs allant de "2018-01-25 11:00:00" à "2018-01-25 11:59:59" ?
A. "2018-01-25 11:00:00"  
B. "2018-01-25 11:30:00"
 
Moi je penche pour la A mais ma chef veut du B...  
Je sais bien que le chef a toujours raison, mais moi j'ai toujours vu la A, et en plus la B est super galère à coder (imaginez ce que ça donne avec les pas de temps de 15min :pt1cable: )
 
Y a-t-il une convention écrite quelque part, un doc, un site web d'une grande institution qui explique leur standard pour qu'on puisse trancher sur le cas le plus fréquent ?

n°5028886
Rontgen
Posté le 24-01-2018 à 17:07:50  profilanswer
 

Perso je suis plutot d'accord avec la solution B
Si tu utilises la solution A, tu auras deux valeurs différentes pour 11:00, ca peut introduire des confusions
 
Mais bon, c'est juste une convention donc c'est pas tres important :o

n°5028899
Rasthor
Posté le 24-01-2018 à 18:09:44  profilanswer
 

J'ai un petit probleme:

 

J'ai 10 echantillons, annote de A a J.
Pour chaque echantillon, j'ai 10'000 mesures.
Chaque echantillons, j'ai une variable reponse, en %, de 0 a 100.

 

A   99%   +0.9 +0.6 -0.6 0.9 ...
B   50%   +0.5 +0.2 -0.7 0.7 ...
C   13%   +0.1 -0.6 -0.6 0.4 ...

 


Si je donne un 11eme echantillons, K, qui a aussi 10'000 mesures, j'aimerais pouvoir predire le % en retour.

 

Donc on est clairement dans un cadre regression lineaire multiple.

 

Maintenant, parmis mes 10'000 variables, certaines seront utiles pour le modele, et d'autres non.

 

Comment pourrais-je sortir les variables utiles pour avoir un modèle optimale ?
Par exemple la première (0.9, 0.5, 0.1)est fortement corrélée avec la variable réponse, tandis que la 3eme (-0.6, -0.7, -0.6) pas du tout.

 

Je pense partir sur un bête test de corrélation Spearman, pour sortir les variables qui sont le plus correlees, et base mon modele la-dessus. Un avis ? :??:


Message édité par Rasthor le 24-01-2018 à 18:10:38
n°5028912
Rontgen
Posté le 24-01-2018 à 19:06:20  profilanswer
 

Tu es dans le cas d'une régression, mais pas forcément linéaire, c'est toi qui décide du modèle
Mais bon, effectivement avec seulement 10 échantillons, c'est probablement le meilleur choix

 

Ce que tu proposes a du sens mais est un peu manuel alors que tu peux directement estimer ce genre de choses lors du fitting du modèle

 

Si tu entraines un modèle linéaire avec des variables non corrélées avec ta valeur cible, normalement elles auront naturellement un coefficient nul (enfin peut être pas avec 10 échantillons)
Tu peux régulariser aussi explicitement en pénalisant la norme L2 des coeffs, ça s'appelle la ridge regression
Tu peux aussi pénaliser une norme plus robuste que la L2 (cherche Lasso regression), qui va avoir tendance à annuler les petits coeffs (donc à éliminer completement les variables pas très importantes)

 

Ah oui et sinon, 10k mesures par échantillon c'est beaucoup
Tu peux aussi peut être utiliser une technique de réduction de dimensions genre PCA pour visualiser tes 10 échantillons dans une base adaptée

 

Je ne sais pas quel langage tu utilises mais toutes ces méthodes sont en général disponibles facilement


Message édité par Rontgen le 24-01-2018 à 19:10:38
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  25  26  27  ..  128  129  130  131  132  133

Aller à :
Ajouter une réponse
 

Sujets relatifs
Recherche d'emploi[Topik Unique] Les girls de la section E&E
Avez vous des problèmatiques sur le Big Data ?Master Finance et Stratégie de Science Po après des études de droit ?
Je veux travailler dans les Big DATAOrientation pour Data Science & Recherche Opérationnelle
[Topic Unique] Concours ingénieur ENAC/IESSA : 30 postes [Topic Unique] EIVP
[Topic Unique] L'Aylite !!! 
Plus de sujets relatifs à : [Topic Unique] Machine Learning & Data Science


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR