Muster Suche und Erkennung mit Python.

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
KC25m
User
Beiträge: 65
Registriert: Freitag 14. Juli 2006, 12:11
Wohnort: Kassel
Kontaktdaten:

Hallo Leute,
ich suche ein Modul oder eine Idee wie ich Muster aus Zahlenreihnen erkennen kann.
Ich habe ca. 1,6Millionen Zahlen im 8 bit bereich, diese möchte ich gerne duchsuchen nach Muster und Regelmässigkeiten.

Mit dem blossen Auge sieht man nicht viel auser das es am anfang recht niedrige Werte sind und mit der Zeit (Positionierung+=1) immer grössere Werte werden.
Zwischen Durch fallen aber ständig die kleinen Werte ein, so das man mit nicht viel erkennen kann da die Zahlenreihe zu gross ist.

Was für möglichkeiten habe ich , würde auch auf externe Tools zugreifen die nicht in Python geschrieben sind.

Lieber wäre mir aber wenn mir jemand einen Tip geben kann wie ich so eine Erkennung selber schreiben könnte.


Danke schon mal für alle Antworten.

Gruß der Holger
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi Holger,

um was für Daten handelt es sich denn überhaupt? Möchtest Du eine numerische Analyse? Eine anderweitig mathematisch-physikalische Analyse? Suchst Du tatsächlich "Muster" im Sinne regulärer Ausdrücke?

Je nachdem, was Du eigentlich möchtest, werden die Antworten anders ausfallen. Jedenfalls habe ich Deine Frage nicht verstanden. Vielleicht können andere hier mehr damit anfangen?

Gruß,
Christian
KC25m
User
Beiträge: 65
Registriert: Freitag 14. Juli 2006, 12:11
Wohnort: Kassel
Kontaktdaten:

Also ich habe eine Liste mit Zahlen von 0 - 255 , diese liste ist derzeit ca. 1.600.000 Zahlen gross.

Diese möchte ich einfach auswerten ob es ein muster gibt und wenn was für ein muster.

Genaues weiss ich leider nicht über Mustererkennung,
daher habe ich ja hier gepostet.

Es sind wirre Zahlen die einfach durch ein Skript via PrimzahlenRandom generiert wurden.

Nun möchte ich überprüfen ob es wirklich zufallszahlen sind oder halt doch ein muster entsteht, da Zufallszahlen wo ein muster entsteht ja schon kein Zufall mehr sein kann.

Bin dahin gehen für jeden tip offen und jede bemerkung oder link.

Danke noch mal.

Gruß Holger
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Ah, jetzt!

Wie wäre, quick & dirty, so etwas:

Code: Alles auswählen

from numpy import array, fft
from random import randint
import pylab
from math import sin

# make random sample list of length 1e6
rsample = array([randint(0, 255) for x in xrange(1000000)])
sinsample = array([sin(x) for x in xrange(1000000)])

power_rsample = fft.rfft(rsample)
power_sinsample = fft.rfft(sinsample)

pylab.plot(power_rsample[1:])
pylab.plot(power_sinsample[1:])
pylab.show()
Also, was passiert hier? Erst machen wir eine Liste von Zufallszahlen zwischen 0 und 255 und dann eine definitiv nicht zufällige Liste (gibt schönere Beispiele, aber ich habe wenig Zeit). Dann berechnen wir eine diskrete Fourier Transformation, wobei uns mal nur die realen Werte interessieren (daher das 'r' in der Funktion). Und schließlich wird das geplottet, wobei uns das Maximum bei 0 nicht interessiert. Du siehst deutlich: Die zweite Kurve hat einen klaren Peak. Folglich: Die Inputsequenz war nicht zufällig.
Unabhängig vom Muster: Wenn dieses periodisch ist, so wirst Du es mit dieser Methode erkennen. Wie man ein Muster als nicht zufällig erkennt, das sich in 1.6e6 Ziffern nicht wiederholt, weiß ich auch nicht.

numpy gibt es unter www.scipy.org. matplotlib für das pylab-Modul unter matplotlib.sourceforge.net - Falls Du diese Pakete noch nicht kennst.

Gruß,
Christian
KC25m
User
Beiträge: 65
Registriert: Freitag 14. Juli 2006, 12:11
Wohnort: Kassel
Kontaktdaten:

Danke Dir für die Antwort , werde das gleich mal ausprobieren !
Gebe dann auch feedback obs geklappt hat oder nicht.


Danke !
Antworten