Seite 16 von 17 ErsteErste ... 6121314151617 LetzteLetzte
Ergebnis 376 bis 400 von 408

Thema: IT-Talents.de Code Competitions

  1. #376

    Re: IT-Talents.de Code Competitions

    Zitat Zitat von Roin Beitrag anzeigen
    Hallo Jan-Dirk,

    Dann habe ich direkt nochmal einen persönlichen Wunsch, oder sogar zwei Wünsche:
    Ist es möglich am ersten des Monats oder zumindest am ersten Werktag eines Monats auf der Website mitzuteilen, ob eine Code Competition für den Monat angesetzt ist oder nicht? Die letze war jetzt im Juni, der Juli wurde ausgesetzt, im August hat offensichtlich allerdings wieder keine gestartet. Da wäre eine kleine Info auf eurer Website ganz schön.


    Der zweite Wunsch betrifft die Themenauswahl: Ich habe damals hier das erste Thema zu eurer ersten Code-Competition, dieser DNA-Analyse eröffnet und dadurch hat sich das hier so entwickelt. Ich würde gerne mehr Themen haben, die sich mit der Auswertung von Daten beschäftigt. Oder irgendwelchen Berechnungen oder sowas. Das ist für mich persönlich spannender als diverse Aufgaben mit "Grafikdesign", doch da bin ich vielleicht auch einfach anders gestickt als manch andere Teilnehmer.

    MfG.
    Danke für das Feedback!
    Ja, das mit der Information, ob bzw. welche Code Competition stattfindet, lässt sich auf jeden Fall einrichten.

    Vielen Dank auch für das Feedback zu den Themengebieten. Wir versuchen hier immer einen Mix zu finden, der über das Jahr verteilt möglichst jedes Talent einmal (oder bestenfalls mehrfach ) anspricht.
    Letztlich evaluieren wir auch anhand der Abgabezahlen, welche Thematiken eher gut ankommen, welche eher schleppender sind.

    Ich spoilere hier aber einfach schon ein bisschen und freue mich, dass die nächste Code Competition im September sich mit Machine Learning und damit mit Datenauswertung und Berechnung befassen wird. Ich bin zuversichtlich, dass Euch das ansprechen wird. Das Thema wird nicht ganz ohne sein, wie ich finde aber mega spannend

    Beste Grüße aus Bielefeld
    Jan-Dirk
    Für diesen Beitrag bedanken sich theSplit, darksider3, Cybergreek

  2. #377

    Re: IT-Talents.de Code Competitions

    Neue Competition ist draußen!
    Machine Learning
    Habs mal überflogen - klingt ganz cool. Ich werde auf jeden Fall versuchen, mitzumachen.
    Für diesen Beitrag bedankt sich theSplit

  3. #378
    Freier Denker
    Registriert seit
    Jul 2013
    Beiträge
    453

    IT-Talents Challange September 2018: Maschine Learning

    @MingsPing: Hast du recht. Klingt an sich ganz nett. Wenn man die erwähnten Frameworks bereits kennt, hat man das auch in ein bis zwei Stunden zusammengetickert. Falls man diese noch nicht kennt, muss man natürlich etwas mehr reinstecken, weil man sich nunmal einlesen muss.
    Man kann natürlich auch versuchen seinen komplett eigenen Algorithmus zu entwerfen, der Deep-Learning nachmacht. Generell eine ganz spannende Sache. Ich hoffe, ich habe da mal ein bisschen Zeit für.
    Ich werde wohl eine Lösung mit Tensorflow implementieren. Falls ich dazu Zeit habe und vielleicht sogar noch etwas mehr Zeit über habe, würde ich auch gerne mal versuchen bei diesen Daten einen eigenen kleinen Lern-Algorithmus zu entwerfen.

    --- [2018-09-02 15:41 CEST] Automatisch zusammengeführter Beitrag ---

    Wie eben schon von @MingsPing: erwähnt, gibt es eine neue Code Competition. Hier dann der Beitrag zum antickern.

    ------------

    IT-Talents Challange September 2018: Maschine Learning
    "Hilf dabei, den Straßenverkehr sicherer zu machen: Welcher Unfall ist wie gefährlich?"
    https://www.it-talents.de/...09-2018

    Preise:
    1. Platz - 500 €
    2. Platz - 400 €
    3. Platz - 300 €

    Zeitlicher Ablauf:
    Abgabetermin: 30. September 2018 - 23:59Uhr
    Auswertung: Oktober/November 2018
    Siegerehrung: Dezember 2018

    Programmiersprachen/Frameworks:
    • Alle gängigen Plattformen und Programmiersprachen.
    • Tensorflow und Pytorch explizit erwünscht (nicht zwingend gefordert)


    Als Form der Lösung ist erlaubt:
    • Webanwendung
    • Desktopanwendung
    • mobile App (Android oder iOS)

    Die Verwendung von Frameworks (insbesondere tensorflow und pytorch) ist erlaubt.

    Grundlagen, Hinweise und Tipps zur Umsetzung und zum Aufbau und Anforderungen entnehmt bitte der Wettbewerbsseite.

    Natürlich können Fragen auch hier gestellt werden.

    Kurz zusammengefasst, was getan werden soll:
    Schreibe einen Algorithmus, der eine vorgegebene CSV-Datei (etwa 15k Datensätze mit jeweils 13 (14 mit ID) Feldern) einlesen kann. Anhand dieser Daten soll er "lernen". Anschließend soll er eine CSV-Datei mit Test-Dateien durcharbeiten und eine "Ergebnis"-CSV ausgeben, mit der entsprechenden Unfall-ID und dem errechneten Schweregrad des Unfalls.
    Für diesen Beitrag bedankt sich theSplit
    Geändert von drfuture (06.09.18 um 13:59 Uhr) Grund: grün grün grün

  4. #379

    Re: IT-Talents.de Code Competitions

    Ich würde auch erst einmal einen eigenen Algorithmus bauen wollen, und falls Zeit bleibt, mich in die Frameworks einarbeiten und dann schauen, wie gut/schlecht mein Algorithmus gegen den des Frameworks abschneidet.

    Ideen:

    Spoiler: 


    1.
    Ohne viel nachgedacht zu haben, versuche ich es mal mit einem ganz billigen neuronalen Netz (hab ich noch nie gemacht, aber zur Übung ganz gut):
    Es hat nur zwei Layer, Eingang: 13 Neuronen für jedes Feld, Ausgang: 3 Neuronen, "leicht", "mittel", "schwer". Das wird wohl zu simpel sein, aber noch hab ich keine Ahnung von NN und wie sich diese "Zwischenlayer" (hidden?) auswirken.

    2.
    Ich werde den gegebenen Datensatz nicht komplett als Trainingsdaten benutzen, sondern einen Teil als Überprüfung behalten, um zu schauen, wie "gut" der Algorithmus voraussagt.
    Vielleicht könnten wir, die Lust dazu haben, uns ja sogar drauf einigen, wie die Aufteilung ist, sodass wir unsere Voraussagen vergleichen können!

    So viel Brainstorming erstmal von mir, ich bin gespannt auf eure Vorschläge.

  5. #380
    Freier Denker
    Registriert seit
    Jul 2013
    Beiträge
    453

    Re: IT-Talents.de Code Competitions

    Also ich muss sagen, dass ich mich mit beidem noch nicht ausreichend auseinander gesetzt habe, damit ich da auf die schnelle 10 Zeilen schreibe.

    Nur generell, wie ich daran gehen würde:
    Alle Datensätze nach spalten analysieren. Häufig sind da ja Worte als Werte angegeben wie beispielsweise "Fahrer", "Passagier" oder so. Da muss man natürlich wissen, wie viele verschiedene Werte eine Spalte annehmen kann, um das vielleicht in irgendwas Zahlentechnisches umzuwandeln. Entweder einfach durchnummerieren oder als Bruchteil von 1 angeben. Kommt im Wesentlichen auf das Gleiche hinaus.

    Zu einem Neuronalen Netz (Tensorflow ist ja auch nichts anderes):

    Spoiler: 


    Es wäre vermutlich sinnig ein InputLayer zu haben, in das die 12 Inputs hineingehen. Ein Hindenlayer, vielleicht sogar zwei Hiddenlayer könnten sinnig sein. Zum Einen gibt es Infos zu dem "Ort, der Zeit sowie Wetterverhältnisse". Ich bin mir nicht sicher, ob da ein Layer vollkommen ausreichen würde.
    Würde ich die Daten manuell analysieren wollen, würde ich das in etwa wie folgt machen:
    • Jahreszeit bestimmen
    • Tageszeit (vielleicht auch irgendwie sowas wie Arbeitszeiten oder so berücksichtigen)
    • Wetterverhältnisse
    • und dann den Rest, also wer verletzt wurde.

    Damit könnte man sowas wie "Risikofaktoren" für den Unfall bestimmen und diese dann gemeinsam verrechnen, wie schlimm der Unfall dann vermutlich ist.

    Ob das natürlich aufgehen würde, kann ich natürlich nicht sagen.



    EDIT:Code und Bilder durch aktuelle Version ersetzt.

    Einmal mein Code, um die paar Grafiken in aus dem zweiten Spoiler zu erstellen. Damit kann bestimmt der ein oder andere was anfangen bezüglich Daten einlesen und so.
    Und jup - hübsch ist derzeit sicherlich was anderes.

    Spoiler: 

    Code (Python):
    1. ############  main ############
    2. # Imports of own files
    3. from helperfunctions import selectFile, parseEnglishDate, parseGermanDate, parseTime
    4.  
    5. ## CSV Import
    6. import csv
    7.  
    8. ## MatplotLib ##
    9. import matplotlib.pyplot as plt
    10. ## Dates ##
    11. import matplotlib.dates as mdates
    12. import datetime
    13.  
    14. from collections import Counter, OrderedDict
    15.  
    16.  
    17. # This function generates a few graphs which displayes the injuries over a specific parameter
    18. def showDiagrams():
    19.     print("Please select the training CSV file.\n")
    20.     selectedFile = selectFile()
    21.     if not selectedFile:
    22.         print("No valid file selected.")
    23.         return
    24.  
    25.     headers = []
    26.     seperatedParams = {}
    27.  
    28.    
    29.     with open(selectedFile) as csvFile:
    30.         data = csv.DictReader(csvFile)
    31.  
    32.         # header should be:
    33.         #
    34.         #'',
    35.         #'Strassenklasse',
    36.         #'Unfalldatum',
    37.         #'Alter',
    38.         #'Unfallklasse',
    39.         #'Unfallschwere', #### This one will be displayed
    40.         #'Lichtverhältnisse',
    41.         #'Verletzte Personen',
    42.         #'Anzahl Fahrzeuge',
    43.         #'Bodenbeschaffenheit',
    44.         #'Geschlecht',
    45.         #'Zeit (24h)',
    46.         #'Fahrzeugtyp',
    47.         #'Wetterlage'
    48.  
    49.         # Seperate parameters
    50.  
    51.         headers = data.fieldnames
    52.         for header in headers:
    53.             seperatedParams[header] = []
    54.  
    55.         #i = 0
    56.         for row in data:
    57.             for header in headers:
    58.                 seperatedParams[header].append([row[header], row['Unfallschwere']])
    59.        
    60.     # Seperate each list by the seconds column ('Unfallschwere')
    61.     for header in headers:
    62.         # Columns we do not need to display
    63.         if header in ['', 'Unfallschwere']:
    64.             continue
    65.  
    66.         print ("Processing " + header)
    67.        
    68.         sortedParams = {}
    69.         for line in seperatedParams[header]:
    70.  
    71.             if header == 'Unfalldatum':
    72.                 # We use year 2016 to just use the day and month (and be able to use "Schaltjahr")
    73.                 if "." in line[0]:
    74.                     line[0] = parseGermanDate(line[0], 2016)
    75.                 elif "-" in line[0]:
    76.                     line[0] = parseEnglishDate(line[0], 2016)
    77.             elif header == 'Zeit (24h)':
    78.                 time = parseTime(line[0])
    79.                 if time:
    80.                     line[0] = datetime.datetime.combine(datetime.date.today(), time)
    81.                 else:
    82.                     continue
    83.             elif header == 'Lichtverhältnisse':
    84.                 line[0] = line[0].replace(' ', "\n")
    85.             elif header in ['Alter', 'Verletzte Personen', 'Anzahl Fahrzeuge']:
    86.                 line[0] = int(line[0])
    87.            
    88.            
    89.             if line[1] not in sortedParams:
    90.                 sortedParams[line[1]] = []
    91.             sortedParams[line[1]].append(line[0])
    92.  
    93.         resortedParams = {}
    94.         for tmp in sortedParams:
    95.             resortedParams[tmp] = sorted(sortedParams[tmp])
    96.         sortedParams = resortedParams
    97.  
    98.         # Now we can generate the image we need want to display
    99.         fig, ax = plt.subplots()
    100.         fig.autofmt_xdate()
    101.        
    102.         axes = []
    103.  
    104.         for l1 in sortedParams:
    105.             arrays = {}#OrderedDict()
    106.             for el in sortedParams[l1]:
    107.                 if el not in arrays:
    108.                     arrays[el] = 0
    109.                 arrays[el] += 1
    110.                
    111.             if header in ['Alter', 'Verletzte Personen', 'Anzahl Fahrzeuge', 'Unfalldatum', 'Zeit (24h)']:
    112.                 if header == 'Unfalldatum':
    113.                     ax.get_xaxis().set_major_formatter(mdates.DateFormatter('%d.%m'))
    114.                 elif header == 'Zeit (24h)':
    115.                     ax.get_xaxis().set_major_formatter(mdates.DateFormatter('%H:%M'))
    116.                    
    117.                 axes.append(ax.plot(arrays.keys(), arrays.values()))
    118.             else:
    119.                 axes.append(ax.bar(arrays.keys(), arrays.values(), align='center'))
    120.             ax.set_ylabel("Occurences")
    121.             ax.set_xlabel(header)
    122.             ax.tick_params(axis='x', rotation=70)
    123.            
    124.         if header in ['Alter', 'Verletzte Personen', 'Anzahl Fahrzeuge', 'Unfalldatum', 'Zeit (24h)']:
    125.             new_axes = []
    126.             for a in axes:
    127.                 new_axes.append(a[0])
    128.             axes = new_axes
    129.            
    130.         ax.legend(axes, sortedParams.keys())
    131.        
    132.         plt.grid()
    133.         plt.gcf().tight_layout()
    134.         plt.savefig(header + ".png", bbox_inches = 'tight')
    135.         #plt.show()
    136.  
    137. ############ helperfunctions.py ############
    138. ## CSV Import
    139. from os import listdir
    140.  
    141. ## FileDialog ##
    142. import tkinter as tk
    143. from tkinter import filedialog
    144.  
    145. ## Dates ##
    146. import datetime
    147.  
    148. ## variables ##
    149. englishMonth = {'Jan':1, 'Feb':2, 'Mar':3, 'Apr':4, 'May':5, 'Jun':6, 'Jul':7, 'Aug':8, 'Sep':9, 'Oct':10, 'Nov':11, 'Dec':12}
    150. germanMonth  = {'Jan':1, 'Feb':2, 'Mrz':3, 'Apr':4, 'Mai':5, 'Jun':6, 'Jul':7, 'Aug':8, 'Sep':9, 'Okt':10, 'Nov':11, 'Dez':12}
    151.  
    152. ## Functions ##
    153.  
    154. def selectFile():
    155.     root = tk.Tk()
    156.     root.withdraw()
    157.  
    158.     file_path = filedialog.askopenfilename()
    159.     return file_path
    160.  
    161.  
    162. def parseEnglishDate(dt, optionalYear = None):
    163.     # %d-%b-%y
    164.     if not "-" in dt:
    165.         print("Invalid time for the function: ", dt)
    166.         return
    167.     pos = dt.find('-')
    168.     day = int(dt[:pos])
    169.     pos2 = dt.find('-', pos+1)
    170.     month = dt[pos + 1:pos2]
    171.     year = dt[pos2 + 1:]
    172.     if optionalYear:
    173.         year = optionalYear
    174.     return datetime.date(year, englishMonth[month], day)
    175.  
    176. def parseGermanDate(dt, optionalYear = None):
    177.     # %d. %b.
    178.     if not "." in dt:
    179.         print("Invalid time for the function: ", dt)
    180.         return
    181.     pos = dt.find('.')
    182.     day = int(dt[:pos])
    183.     pos = dt.find(' ')
    184.     month = dt[pos + 1:-1]
    185.     year = 2018
    186.     if optionalYear:
    187.         year = optionalYear
    188.     return datetime.date(year, germanMonth[month], day)
    189.  
    190. def parseTime(t):
    191.     # %H%M
    192.     if len(t) == 3:
    193.         hours = t[:1]
    194.         minutes = t[1:]
    195.     elif len(t) == 4:
    196.         hours = t[:2]
    197.         minutes = t[2:]
    198.     else:
    199.         #print("Invalid time for this function: ", t)
    200.         return
    201.     return datetime.time(int(hours), int(minutes))
    Damit kann man zumindest die Daten schonmal darstellen. Und ich vermute, dass alle, die Python nutzen wollen, da auch ein bisschen Code rausziehen können.


    Was ich anmerken möchte: Die Datensätze haben nicht immer das gleiche Format und sind teilweise unvollständig oder schlichtweg fehlerhaft (Zeit).
    Das ist in der realität zwar so, doch ich finde es macht die Coding-Challenge nur unnötig aufwendig, da "Daten vorher aufhübschen" nicht zu dem eigentlichen Problem gehört, finde ich.

    Hier nochmal meine Erkenntnisse in einigen Grafiken:

    Spoiler: 

    Klicke auf die Grafik für eine größere Ansicht 

Name:	Unfallklasse.png 
Hits:	20 
Größe:	23,8 KB 
ID:	52202Klicke auf die Grafik für eine größere Ansicht 

Name:	Zeit (24h).png 
Hits:	20 
Größe:	47,7 KB 
ID:	52224Klicke auf die Grafik für eine größere Ansicht 

Name:	Unfalldatum.png 
Hits:	19 
Größe:	85,9 KB 
ID:	52220Klicke auf die Grafik für eine größere Ansicht 

Name:	Lichtverhältnisse.png 
Hits:	16 
Größe:	37,9 KB 
ID:	52218Klicke auf die Grafik für eine größere Ansicht 

Name:	Fahrzeugtyp.png 
Hits:	20 
Größe:	40,4 KB 
ID:	52216Klicke auf die Grafik für eine größere Ansicht 

Name:	Anzahl Fahrzeuge.png 
Hits:	17 
Größe:	24,0 KB 
ID:	52214Klicke auf die Grafik für eine größere Ansicht 

Name:	Wetterlage.png 
Hits:	16 
Größe:	38,7 KB 
ID:	52211Klicke auf die Grafik für eine größere Ansicht 

Name:	Verletzte Personen.png 
Hits:	17 
Größe:	28,2 KB 
ID:	52222Klicke auf die Grafik für eine größere Ansicht 

Name:	Strassenklasse.png 
Hits:	20 
Größe:	38,4 KB 
ID:	52219Klicke auf die Grafik für eine größere Ansicht 

Name:	Geschlecht.png 
Hits:	20 
Größe:	21,0 KB 
ID:	52217Klicke auf die Grafik für eine größere Ansicht 

Name:	Bodenbeschaffenheit.png 
Hits:	18 
Größe:	28,6 KB 
ID:	52215Klicke auf die Grafik für eine größere Ansicht 

Name:	Alter.png 
Hits:	18 
Größe:	38,8 KB 
ID:	52213

    Falls mir jemand sagen kann, wie ich bei diskreten Werten diese Balkendiagramme nebeneinander machen kann: Immer her damit. Ich habe es gesucht und einfach nicht gefunden.
    Geändert von Roin (03.09.18 um 02:34 Uhr) Grund: Alten Code und Bilder aufgrund von Dublizierung entfernt

  6. #381
    Freier Denker
    Registriert seit
    Jul 2013
    Beiträge
    453

    Re: IT-Talents.de Code Competitions

    Ich habe angefangen ein ganz einfaches Neuronales Netz mit zwei Layern zu implementieren. Das übersetzen der ganzen Werte in Zahlen war erstmal ne ganze Menge Tipparbeit...
    Jetzt habe ich allerdings ein Problem mit Python:
    Code (Python):
    1. def sigmoid(x, derive=False):
    2.     if derive:
    3.         return x*(1-x)
    4.     return 1/(1 + np.exp(-x))
    Wenn ich da mein numpy-Array reinwerfe kriege ich IMMER ein RuntimeWarning: overflow encountered in exp.
    Dabei habe ich zuerst mein Array mit normalen Werten befüllt gehabt (also Werte zwischen 0 und irgendwas Richtung 1500). Da ich gedacht habe, dass da vielleicht ein Problem bei besteht, habe ich mein Array dann Spaltenweise normalisiert - also nur noch Werte zwischen 0 und 1. Immernoch der gleiche Fehler. Derzeit weiß ich da leider nicht weiter. Hat da jemand anderes einen Tipp für mich?

    EDIT:
    Wenn ich den Fehler einfach ignoriere, dann setzt er entsprechende Werte automatisch auf 0, was auch richtig ist, da lim(1/large) gegen 0 geht.

    Mit meinem 2-Layer Netzwerk kriege ich von insgesamt 15221 Trainingsdatensätzen nur 1781 falsche Ergebnisse. Das entspricht einer Genauigkeit von 88,29%.
    Dabei habe ich alle Werte wie sie in dem Datensatz sind genommen und jeweils durchnummeriert (nach einer Sortierung der Werte von mir).
    Mein Trainingdurchlauf war nur EIN MAL über den Datensatz. Mehrfaches drüberlaufen hat keine Verbesserung mehr gebracht (habe ich etwa was falsch gemacht?).

    Spoiler: 

    Nächste Idee (1):
    Ein weiteres Layer einführen. Dadurch könnte sich schon die Komplexität positiv für mich auswirken.

    Nächste Idee (2):
    Andernfalls wollte ich vielleicht noch sowas wie die Zeiten etwas komprimieren und zum Beispiel auf Stunden runden oder beispielsweise aus den Lichtverhältnissen oder der Wetterlage mehrere Input-Parameter machen, da dort ja mehrere Informationen drinstecken, die in dem Text derzeit einfach zu komprimiert verschlüsselt sind, um dies effektiv in Zahlen abbilden zu können.

    Ein Problem, dass ich allgemein sehe mit der Durchnummerierung von den Text-Werten: Ich nutze nur eine Funktion, die effektiv Zahlen miteinander multipliziert. Allerdings wären bei diesem Problem vermutlich auch Ungleichungen sinnvoll. Also sowas wie 'Wert > 0,5 ? 1: 0' oder so. Allerdings nicht bei allen Parametern.

    Komplexe Idee (3):
    Ich habe mir überlegt die Daten aus einem Datensatz weiter aufzuteilen. beispielsweise möchte ich alles was mit dem Wetter zu tun hat in ein Array extrahieren (beachte (2)) und so weiter. Diese Arrays möchte ich dann nicht in ein gemeinsames Layer werfen, sondern in voneinander getrennte Layer, damit ich bis zum nächsten Layer dann verschiedene Aktivierungsfunktionen für die Neuronen nutzen kann. Anschließend würde ich die Ergebnisse dieser Operationen wieder zu einem weiteren Layer zusammenführen und von dort aus ein Ergebnis bestimmen lassen.
    Leider habe ich aktuell die Befürchtung, dass dabei mein Können überschritten wird. Das Aufbauen der Layer und Gewichte ist dabei nicht das Problem. Das ist Tipparbeit aber nicht übermäßig schwierig. Ich denke aber, dass ich es nicht hinkriegen würde, die Fehlerkorrektur, also das eigentliche Lernen, da vernünftig einzubauen. Möchte sich jemand mit mir Zusammentun und da einmal drüber quatschen?
    Geändert von Roin (06.09.18 um 14:22 Uhr)

  7. #382
    Bot #0384479 Avatar von BurnerR
    Registriert seit
    Jul 2013
    Beiträge
    3.857
    ngb:news Artikel
    1

    Re: IT-Talents.de Code Competitions

    Geil.
    Wenn irgend geht mache ich diesmal auch mit.
    Muss nur noch diese eine kleine Sache A und B machen. Und C. Aber diesmal könnte es wirklich, wirklich sein, dass ich Gelegenheit habe :-D.
    Für diesen Beitrag bedanken sich theSplit, MingsPing, Roin

  8. #383
    1998

    Veteran

    (Threadstarter)

    Avatar von theSplit
    Registriert seit
    Aug 2014
    Beiträge
    4.615
    ngb:news Artikel
    1

    Re: IT-Talents.de Code Competitions

    Guten Morgen,

    ich hab keine Ahnung was ihr da tut, aber macht weiter!

    Neurale Netze und Machine-learning sind mir persönlich zu komplex, als das ich dass verstehen könnte... aber ich wünsche euch allen viel Erfolg bei der Competiton!

    Und Danke @ MingsPing dass du die Challenge hier bekannt gegeben hast und @Roin fürs "ausführlich machen".
    Gruß theSplit
    @ I might be sober. The good things... the bad things... all I ever know is here! @
    +++ thunderNote +++ Thom's Inventarverwaltung +++ Pi-Thread +++ IT-Talents Code Competitions +++ NGB-Statistik Opt-Out/Anonymisierung +++ Stonerhead +++ Add-on Flag Cookies +++ Google Image Directlinks +++ dwrox.net

  9. #384
    Freier Denker
    Registriert seit
    Jul 2013
    Beiträge
    453

    Re: IT-Talents.de Code Competitions

    @theSplit:
    So kompliziert sind Neuronale Netze und Machine-Learning eigentlich gar nicht.
    Es ist im Endeffekt nur Matritzenrechnung, die dir sowas wie Python mit numpy größtenteils abnimmt.

    Eine schöne Erklärung mit ein paar Codezeilen als Beispiel habe ich mal verlinkt.
    Da fehlt allerdings der Teil mit dem selbst optimieren. Das habe ich aus einem anderen Tutorial übernommen.
    Dennoch würde ich mich wie oben in dem Spoiler geschrieben, über etwas Hilfe bei meinem komplexen Ansatz freuen.

  10. #385

    Re: IT-Talents.de Code Competitions

    Konnte leider noch kaum was implementieren .
    Finde es auch nervig, dass Fehler in den Daten sind (bzw. sie auch nicht einheitlich sind), sehe es wie du @Roin, im Real-Life muss man damit natürlich rechnen, aber bei ner Competition mit nem kleinen Zeitrahmen, wo es eigentlich um was anderes geht... .
    Vielleicht komm ich am WE bissl dazu.

  11. #386
    Freier Denker
    Registriert seit
    Jul 2013
    Beiträge
    453

    Re: IT-Talents.de Code Competitions

    @BurnerR: Hattest du zufällig schon eine Gelegenheit zum Ausprobieren?
    @MingsPing: Konntest du inzwischen schon irgendwas zusammen tickern?

    Ich bin weiterhin nicht weiter gekommen. Ich habe da ein zwei-Layer Netzwerk. Muss allerdings noch das mit dem Ausgeben der Datei schreiben und bestenfalls das Netzwerk irgendwie speichern / laden können.
    Ich weiß allerdings nicht, ob ich dafür noch Zeit finde. Könnte also sogar sein, dass ich nicht rechtzeitig abgeben kann.

  12. #387
    Bot #0384479 Avatar von BurnerR
    Registriert seit
    Jul 2013
    Beiträge
    3.857
    ngb:news Artikel
    1

    Re: IT-Talents.de Code Competitions

    Zitat Zitat von Roin Beitrag anzeigen
    @BurnerR: Hattest du zufällig schon eine Gelegenheit zum Ausprobieren?
    Es wird wieder nichts. Ich wollte so gern. Aber es lag so viel Arbeit an, das keine Kapazitäten für was anderes blieb. Und jetzt hab ich erstmal Urlaub.

  13. #388
    Freier Denker
    Registriert seit
    Jul 2013
    Beiträge
    453

    Re: IT-Talents.de Code Competitions

    Ich habe eben nochmal 10 Minuten gefunden. Ich kann jetzt mein Netzwerk speichern, laden und auch ein Ergebnis ausgeben lassen.
    Problem: Ich kriege IMMER Unfallschwere 1 raus, ich vermute mal, da ist das Netwerk von mir einfach extrem dumm...

    --- [2018-09-22 15:33 CEST] Automatisch zusammengeführter Beitrag ---

    Selbst mit einem 3Layer Netwerk (12->24->3) komme ich IMMER nur auf Ergebnis von 1 (leichter Verletzung)

    --- [2018-09-22 15:47 CEST] Automatisch zusammengeführter Beitrag ---

    Noch eine Info: Wenn ich versuche auf nur ein Output-Neuron zu gehen kriege ich eine Genauigkeit von gerade mal 10% hin.. Irgendwas mache ich wohl falsch. Zudem: Normalerweise trainiert man die Netzwerke, indem man mehr als 1 Mal die Daten draufwirft. Komischerweise bin ich nach dem ersten Durchlauf aber bereits auf meiner Endgenauigkeit. Danach verändert sich nichts mehr...


    Ich kriege bereits nach der Ersten Wiederholung 13495 Treffer für die Trainingsdaten. Aber irgendwie... Keine Ahnung was ich da flasch gemacht habe. Anscheinend habe ich die Daten so normalisiert, dass die automatisch auf "leichte Verletzung" eingestellt werden, egal was die Input-Daten später sagen.

    Das Netzwerk lernt einfach "leicht passt voll oft. Das nehme ich jetzt immer". Ist ja nicht so dumm, aber hilft mir leider genau gar nicht.

    --- [2018-09-22 17:21 CEST] Automatisch zusammengeführter Beitrag ---

    Ich habe auch unterschiedliche Input-Varianten versucht. Wenn ich die Daten weiter aufsplitte ändert sich am Ergebnis einfach mal genau nix.
    Das beste Ergebnis erlange ich mit 3 Output-Neuronen. Allerdings sagen die dann immer, egal was reinkommt, dass es eine leichte Verletzung ist. Ich versteh den Fehler leider auch nicht.
    Größtes Problem könnte die minimal approximierte Aktivierungsfunktion sein. Aufgrund von großen Zahlen (trotz Normierung auf 1...) kachelt da sonst alles ab und bekommt overflow-Fehler. Deswegen habe ich bei Zahlen, die gegen 0 tendieren würden, bei der Berechnung, auf 0 approximiert. Aber ob es wirklich daran liegt?
    Geändert von Roin (22.09.18 um 16:34 Uhr)

  14. #389

    Re: IT-Talents.de Code Competitions

    Hey,

    ich hab es zumindest mal geschafft, eine Umgebung zu basteln, die die Daten aufbereitet.
    Jetzt muss ich also "nur noch" ein geeignetes NN-Layout wählen und es laufen lassen.
    Bin mal gespannt, wie viel Zeit dieses "nur noch" benötigen wird... . Heute schaffe ich es nicht mehr. Hoffentlich unter der Woche oder noch am kommenden WE.

    @Roin: Da ich keine Ahnung von NN habe, kann ich Dir leider nicht wirklich helfen. Aber, dass sich Dein NN schon nach dem ersten Durchlauf nicht mehr verändert ist schon seltsam.
    Da es viel öfter leichte/mittlere Verletzungen gibt, wird wohl das NN falsch trainiert. Wie gesagt, ich kenn mich nicht aus, aber vielleicht kannst Du da an den Bias-Werten herumschrauben. Ich meine auch gelesen zu haben, dass man den Trainingsdaten so ne Art "Wichtigkeit" mitgeben kann, da könntest den Trainingsdaten mit Label "3" ne hohe Wichtigkeit verpassen.
    Und zu Letzt: Meine Input-Neuronen sind nun viel mehr als 12. Habe sowas wie "Bodenbeschaffenheit" aufgesplittet, pro Item ein eigenes Neuron, also quasi
    0 trocken
    0 nass / feucht
    1 Schnee
    0 Überflutung
    falls der Datensatz "Schnee" als Bodenbeschaffenheit hatte.
    Sinn dahinter: wenn man die irgendwie normiert und dann 0-0.2 = trocken, 0.2-0.4 = nass etc., dann entsteht (künstlich) eine Ordnung, bzw. ein Zusammenhang, der ggf gar nicht vorhanden ist. Noch besser ersichtlich bei "Unfallklasse".

    Viel Spaß weiterhin

    --- [2018-09-23 14:17 CEST] Automatisch zusammengeführter Beitrag ---

    Zitat Zitat von BurnerR Beitrag anzeigen
    Und jetzt hab ich erstmal Urlaub.
    Ist doch perfekt! ;-)
    Leg los, die Zeit reicht noch.
    Für diesen Beitrag bedankt sich theSplit

  15. #390
    Freier Denker
    Registriert seit
    Jul 2013
    Beiträge
    453

    Re: IT-Talents.de Code Competitions

    Ich habe das Zwischenzeitlich auch mal vollkommen aufgesplittet und am Ende 40 Neuronen etwa gehabt, die als Input dienen. Aber nach meiner Implementierung lernt der da einfach genau eine Runde und dann verändert sich effektiv nichts mehr. Und nach meinem Ansatz (ich benutze ja kein Tensorflow oder so) habe ich auch keinen Bias und auch keine Gewichtung für die seltenen Ereignisse.

    Das werde ich wohl bei der Abgabe anmerken. Aber derzeit sieht es einfach so aus, als wenn ich da gewaltig was falsch gemacht habe.
    Ich wüsste aber auch nicht, wie ich das besser hinkriegen sollte.

    Wirklich mehr Zeit werde ich da nun auch nicht reinwerfen. Ist halt keine gute Lösung. Vielleicht können die mir ja sagen, was ich da so falsch gemacht habe. Vielleicht habe ich da auch nur eine einzelne Berechnung falsch gemacht ...

    Bin ein wenig gefrustet davon. Aber wie gesagt, die Zeit ist es mir aktuell einfach nicht wert.

  16. #391
    1998

    Veteran

    (Threadstarter)

    Avatar von theSplit
    Registriert seit
    Aug 2014
    Beiträge
    4.615
    ngb:news Artikel
    1

    Re: IT-Talents.de Code Competitions

    @Roin: Ich meine du solltest ne Nacht oder zwei drüber schlafen, vielleicht fällt dir dann ne Lösung ein für das Problem, aus Erfahrung kann ich sagen, etwas Abstand zu einem Problem hilft ab und an, weil man dann aus dem "alten Denken" etwas herauskommt. Ehrlich

    Ich könnte auch mal etwas versuchen, Zeit habe ich aktuell auch etwas, nur hab ich halt "0" (in Worten Null) Ahnung von Neuralen Netzen oder den entsprechenden Bibliotheken und Tools oder wie man so etwas aufbaut.

    Ich glaube mit Python ist ja Scipy (+- Pandas) führend in dem Bereich. Aber vielleicht kann man da auch etwas eigenes machen? Ich bin etwas überfragt und unterschätze vermutlich die Komplexität ein wenig von sowas.... aber nen Versuch wäre es wert.
    Gruß theSplit
    @ I might be sober. The good things... the bad things... all I ever know is here! @
    +++ thunderNote +++ Thom's Inventarverwaltung +++ Pi-Thread +++ IT-Talents Code Competitions +++ NGB-Statistik Opt-Out/Anonymisierung +++ Stonerhead +++ Add-on Flag Cookies +++ Google Image Directlinks +++ dwrox.net

  17. #392
    Freier Denker
    Registriert seit
    Jul 2013
    Beiträge
    453

    Re: IT-Talents.de Code Competitions

    @theSplit: Ich warte mit der Abgabe bis ein oder zwei Tage vor Schluss, aber ich bin wenig zuversichtlich. Ich habe das mit dem Lernen bereits ganz zu Anfang festgestellt, aber keine Lösung bisher gefunden.

  18. #393
    1998

    Veteran

    (Threadstarter)

    Avatar von theSplit
    Registriert seit
    Aug 2014
    Beiträge
    4.615
    ngb:news Artikel
    1

    Re: IT-Talents.de Code Competitions

    Erst mal ein Plot* (mit Hinweis zu den Zahlen!) um die "grobe" Verteilung zu sehen:

    Spoiler: 




    *Bisher erfolgt dabei keine Unterteilung des Straßenklasse nach "Gefahrenzone", ähnlich auch bei den Lichtverhältnissen, Bodenbeschaffenheit und Zeit, wie auch Fahrzeugtyp und Wetterlage oder Uhrzeit - die sind zwar vorhanden und entsprechend belegt, aber die Schlüssel haben noch keine Gewichtung in irgendeiner Form.
    Alle anderen Daten sind soweit "geeicht" auf dem Plot.

    Was ich jetzt noch versuchen wollen würde, die Schlüssel die jetzt noch fehlen in Grade zu unterteilen - heißt "Bundesstraße" = 4, "Landesstraße" = 3 usw... bis die Schlüssel alle eine "Wertigkeit" haben, damit diese ausgewertet werden können nach "Schweregrad" oder "Bedingung".
    Wobei anzumerken ist, vielleicht ist es gar nicht so wichtig dass so zu machen, im Grunde reicht schon die Information des "Durchschnitts", "Standards", "Minimum", und "Maximum" um dann die entsprechenden Schüssel "zu positionieren". Das könnte aber auch nach hinden losgehen das automatisch zu "Punkten", da nicht gesagt ist das "Schnee" oder "Nass / Feucht" einmal niedriger Wert (leichter) oder höheres Aufkommen von Unfällen (schwerer) ergibt. Könnte sein, muß nicht.

    Muß mir dazu noch Gedanken machen

    Edit:


    Scheint ich habe 'perfekte' Vorhersagen:

    Spoiler: 

    Einmal eine ConfusionMatrix und eine Aufschlüsslung:


    Ergebnis mit den Testdaten (überblick Unfallschwere):

    Spoiler: 

    Geändert von theSplit (25.09.18 um 08:27 Uhr) Grund: Plot aktualisiert + Vorhersagen + Ergebnis
    Gruß theSplit
    @ I might be sober. The good things... the bad things... all I ever know is here! @
    +++ thunderNote +++ Thom's Inventarverwaltung +++ Pi-Thread +++ IT-Talents Code Competitions +++ NGB-Statistik Opt-Out/Anonymisierung +++ Stonerhead +++ Add-on Flag Cookies +++ Google Image Directlinks +++ dwrox.net

  19. #394
    Freier Denker
    Registriert seit
    Jul 2013
    Beiträge
    453

    Re: IT-Talents.de Code Competitions

    Wie bereits zuvor erwähnt hat mein Code leider irgendwo einen Fehler was das eigentliche Lernen betrifft. Ich bin da auch ganz anders rangegangen als theSplit.
    Ich habe dennoch mal meine Lösung eingereicht. Zwar mit entsprechendem Kommentar, dass da was kaputt ist aber vielleicht können die mir ja sagen, wo das Problem ist.
    Ich würde natürlich gerne nach dem Abgabetermin eine Lösung von euch sehen. Mein Code ist ziemlich chaotisch und wird auf nahezu keinem Gebiet überhaupt über 3/10 Punkten kommen. Allerdings habe ich auch keine Zeit mehr auf refactoring oder sonstiges verwendet. Ich habe rumprobiert, um den Code zu fixen, war dabei allerdings nicht erfolgreich und entsprechend gefrustet.

  20. #395
    1998

    Veteran

    (Threadstarter)

    Avatar von theSplit
    Registriert seit
    Aug 2014
    Beiträge
    4.615
    ngb:news Artikel
    1

    Re: IT-Talents.de Code Competitions

    So, ich muss doch nochmal korrigieren, das Ergebnis wäre für den ersten Anlauf auch zu perfekt (Danke @Roin für den Hinweis! )

    Da ich mir mit meiner Vorhersage nicht sicher war, habe ich nun etwas mehr ausprobiert.

    Ein Algorithmus kommt schon relativ gut dabei weg und es gibt folgende Score auf die Testdaten:
    Code (Python):
    1. # 15k Einträge Datensatz mit Testdatensatz "gegengeprüft":
    2. Results: 12138 hits, 3083 miss (79.75% score)
    3.  
    4. # Die Predictions
    5. {1.0: 13620, 2.0: 256, 3.0: 1345}
    6.  
    7. # Korrekt Treffer im Datensatz
    8. {1: 12092, 2: 37, 3: 9}
    Knappe 80% Trefferquote, schon nicht schlecht für den Anfang, aber das muß ja noch nichts heißen... aktuell benutze ich "default" einstellungen.
    Ich wollte zwar noch individuell das Gewicht auf die Spalten (Columns) legen, aber irgendwie scheitere ich just noch daran.

    Aktuell nutze ich sk.learn. - Falls also jemand nen Tip hat wie man "class_weigths" setzt, nur her damit
    Für diesen Beitrag bedankt sich Roin
    Gruß theSplit
    @ I might be sober. The good things... the bad things... all I ever know is here! @
    +++ thunderNote +++ Thom's Inventarverwaltung +++ Pi-Thread +++ IT-Talents Code Competitions +++ NGB-Statistik Opt-Out/Anonymisierung +++ Stonerhead +++ Add-on Flag Cookies +++ Google Image Directlinks +++ dwrox.net

  21. #396

    Re: IT-Talents.de Code Competitions

    So, hab's auch mal geschafft, das ganze umzusetzen.

    Hab die Daten in
    - 13000 Trainingsdaten
    - 2221 Testdaten
    aufgeteilt.

    Mit den Trainingsdaten wurde nun ein erstes Netzwerk trainiert.

    Das Netzwerk angewandt auf die Trainingsdaten:
    Code (PowerShell):
    1.  
    2. Von  11519 leichten Unfaellen richtig vorhergesagt:  11474   Prozent:  99.609344
    3. Von  1388 mittleren Unfaellen richtig vorhergesagt:  183   Prozent:  13.184438
    4. Von  93 schweren Unfaellen richtig vorhergesagt:  19   Prozent:  20.430107
    5. Genauigkeit gesamt:  89.815384
    6.  
    Jedoch auf die Testdaten angewandt nur:
    Code (PowerShell):
    1.  
    2. Von  1976 leichten Unfaellen richtig vorhergesagt:  1953   Prozent:  98.83603
    3. Von  230 mittleren Unfaellen richtig vorhergesagt:  8   Prozent:  3.4782608
    4. Von  15 schweren Unfaellen richtig vorhergesagt:  0   Prozent:  0.0
    5. Genauigkeit gesamt:  88.293564
    6.  
    Mir gefällt nicht, dass die schweren/mittleren Unfälle kaum erkannt werden (vor allem in den Testdaten sehr schlecht, und da ist's ja eigentlich wichtig...). Ist wohl der Grund, den ich oben schon mal als Antwort auf @roin genannt habe.
    Mal gucken, ob/wie ich das noch verbessern kann.
    Für diesen Beitrag bedanken sich theSplit, Roin

  22. #397
    1998

    Veteran

    (Threadstarter)

    Avatar von theSplit
    Registriert seit
    Aug 2014
    Beiträge
    4.615
    ngb:news Artikel
    1

    Re: IT-Talents.de Code Competitions

    @MingsPing: Mal eine Frage, hast du "Zufällig" 2000 Samples ausgewählt die du testest, oder sind das einfach die letzten "2000" ?

    Wenn ich dir einen Tip geben kann (so viel glaube ich schon zu wissen ) - Trainiere dein Netzwerk mit allen 15k Einträgen. Danach, greifst du 2000 Samples raus, entweder zufällig oder zum testen einen festen Ausschnitt.

    Es kann theoretisch sein, das in den letzten 2000 Samples wichtige Trainingsdaten enthalten sind bzw. Konstellationen der Daten - die dir ansonsten fehlen.
    Deshalb, ruhig mit 100% Trainieren, und dann einfach X rausgreifen die man vorhersagen will.

    Ich habe es so gemacht, ich habe zum Beispiel die Testdaten einmal verdoppelt um 0.5 zu üben und 0.5 zu prognostizieren bzw. zu validieren, also die gleichen Daten nochmal.
    Gruß theSplit
    @ I might be sober. The good things... the bad things... all I ever know is here! @
    +++ thunderNote +++ Thom's Inventarverwaltung +++ Pi-Thread +++ IT-Talents Code Competitions +++ NGB-Statistik Opt-Out/Anonymisierung +++ Stonerhead +++ Add-on Flag Cookies +++ Google Image Directlinks +++ dwrox.net

  23. #398
    Freier Denker
    Registriert seit
    Jul 2013
    Beiträge
    453

    Re: IT-Talents.de Code Competitions

    So. Die Abgabe ist rum.
    Hier mal mein bisschen Code.

    Wie bereits erwähnt vermutlich fehlerhaft. Zudem nicht wirklich gut kommentiert oder aufgeräumt. Das wäre passiert, sobald alles funktioniert.
    Abgabe.rar
    Geändert von Roin (02.10.18 um 00:38 Uhr) Grund: Anonymisierung

  24. #399

    Re: IT-Talents.de Code Competitions

    Sry
    Für diesen Beitrag bedankt sich Roin

  25. #400
    1998

    Veteran

    (Threadstarter)

    Avatar von theSplit
    Registriert seit
    Aug 2014
    Beiträge
    4.615
    ngb:news Artikel
    1

    Re: IT-Talents.de Code Competitions

    Na gut, dann will ich auch mal....

    Python 3 + Pandas + Sklearn + Numpy + Matplotlib
    Angehängte Dateien Angehängte Dateien
    Gruß theSplit
    @ I might be sober. The good things... the bad things... all I ever know is here! @
    +++ thunderNote +++ Thom's Inventarverwaltung +++ Pi-Thread +++ IT-Talents Code Competitions +++ NGB-Statistik Opt-Out/Anonymisierung +++ Stonerhead +++ Add-on Flag Cookies +++ Google Image Directlinks +++ dwrox.net

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •