kleine Mathe-Spielereien

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
OSWALD
User
Beiträge: 622
Registriert: Freitag 18. März 2022, 17:32

14.9.2025
und nun zu meiner gewagten These zum Fehler
Wenn man folgenden Befehlt in die Powershell eingibt,
dann stellt man fest, dass plotly
Tausende Packages und Module usw enthält.
Die damit verbundenen Datenmengen sind riesig,
die Gefahr von Namenskonflikten sehr groß.
Die Tilde besitzt die Eigenschaften bei Korrekturen von
Daten bestimmte Aktivitäten zu entwickeln.
Diese Fehler zu beseitigen ist angesichts der Datenmengen
aussichtslos.
dieses kleine Programm zeigt das Ergebnis durch den Fehler
die entstehenden Daten sollte man untersuchen, ob darin irgendwo
eon Tolde auftaucht.

(in Programmen mit Farben können solche Fehlerm passieren,
wenn man den Namen der Farbe nicht korrekt eingibt :eigene Erfahrung)
Soweit meine Theorie
Gute Zeit =SWALD

Code: Alles auswählen


#HEATMAPPLOT
import plotly.express  as  px 

fig  =  px . imshow ([[ 255 ,  255 , 255,255, 255 ], 
                                [205 ,  255 ,  60, 255 ,205], 
                                [205 ,  60 , 255 ,60, 205 ], 
                                [ 205 ,  255 , 60, 255 , 205],
                                [ 255 ,255 , 255,  255 , 255  ]])  

fig.show()


Benutzeravatar
Dennis89
User
Beiträge: 1618
Registriert: Freitag 11. Dezember 2020, 15:13

Die Bedeutung von `~` ist in der Python-Syntax nicht gleichzusetzen mit der Bedeutung bei Pfadangaben (und hier wird sich das vermutlich von Betriebssystem zu Betriebssystem auch unterscheiden). Was das unter Windows bedeutet weiß ich nicht, kann man aber sicherlich auch danach suchen.
Naja, ich gehe davon aus, dass deine venv etwas kaputt ist. Es gibt im Netz Leute mit einem ähnlichen Problem, vielleicht hilft dir das weiter:
https://stackoverflow.com/questions/709 ... e-packages

Alternativ würde ich einfach mal eine neue venv erstellen und einfach nur `plotly` installieren.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
OSWALD
User
Beiträge: 622
Registriert: Freitag 18. März 2022, 17:32

19.9.2025
@Dennis89
Von einer neuen 'venv' würde ich gerne Abstand nehmen. Viel zu kompliziert.

Ich habe schließlich die drei mit Tilden infizierten Dateien in Site-Packages gelöscht,
in der Lib keine weiteren Tilden mehr entdeckt und plotly entfernt.
An zehlreichen Beispielen habe ich festgestellt, dass Tilden, die bewusst oder versehentlich
in ein Programm geraten , entweder das Perogramm zerstören oder stark verändern können.
Dazu zeige ich ein Beispiel, eoinmal ohne und dann mit einer Tilde.
Damit ist dieses Kapitel abgeschlossen.
Ansonsten bin ich überzeugt, dass Python inzwischen
bedeutender denn je gewoorden ist.

Gute Zeit OSWALD

Code: Alles auswählen


import numpy as np
import matplotlib.pyplot as plt 

#Ergebnis : die  veränderte Matrix  print(x)
matrix =  [[  255  , 241  ,   254  , 234  , 255 ,   255,  256 ,   1,     1  ,  255],
[    1 ,    2  ,   3  ,   4   ,  5  ,  6    , 7 ,    8  ,   9,    10],
[    1  ,   3  ,   6   , 10   , 15  ,  21  ,  28  ,  36   , 45   , 55],
[    1  ,   4 ,   10  ,  20 ,   35 ,   56  ,  84   ,120  , 165 ,  22],
[    1 ,    5   , 15 ,   35  ,  70  , 126 ,  210  , 33 ,  49  , 71],
[    1 ,    6  ,  21 ,   56  , 126,   252 ,  162  , 79 , 128,  20],
[    1  ,   7 ,   28 ,   84 ,  21 ,  46 ,  92 , 171 , 34 , 50],
[    1  ,   8  ,  36  , 120  , 33 ,  79 , 171 , 343 , 64,114],
[    1 ,    9   , 45  , 165  , 45 , 128 , 30 , 64 ,128 ,243],
[    1,    10 ,   55 ,  220  ,71 , 200   , 50  ,114 ,242, 56]]
plt.imshow(matrix)
plt.title("Das Ergebnis: Die  neue Matrix ")
plt.show()

matrix =  [[  255  , 241  ,   254  , 234  , 255 ,   255,  256 ,   1,     1  ,  255],
[    1 ,    2  ,   3  ,   4   ,  5  ,  6    , 7 ,    8  ,   9,    10],
[    1  ,   3  ,   6   , 10   , 15  ,  21  ,  28  ,  36   , 45   , 55],
[    1  ,   4 ,   10  ,  20 ,   35 ,   56  ,  84   ,120  , 165 ,  22],
[    1 ,    5   , 15 ,   35  ,  70  , 126 ,  210  , 33 ,  49  , 71],
[    1 ,    6  ,  21 ,   56  , 126,   ~252 ,  162  , 79 , 128,  20],
[    1  ,   7 ,   28 ,   84 ,  21 ,  46 ,  92 , 171 , 34 , 50],
[    1  ,   8  ,  36  , 120  , 33 ,  79 , 171 , 343 , 64,114],
[    1 ,    9   , 45  , 165  , 45 , 128 , 30 , 64 ,128 ,243],
[    1,    10 ,   55 ,  220  ,71 , 200   , 50  ,114 ,242, 56]]
plt.imshow(matrix)
plt.title("Das Ergebnis: Die  neue Matrix ")
plt.show()

Benutzeravatar
grubenfox
User
Beiträge: 623
Registriert: Freitag 2. Dezember 2022, 15:49

OSWALD hat geschrieben: Freitag 19. September 2025, 09:09 An zehlreichen Beispielen habe ich festgestellt, dass Tilden, die bewusst oder versehentlich
in ein Programm geraten , entweder das Perogramm zerstören oder stark verändern können.
Naja, das ist ja klar: wenn man Programme verändert in dem man irgendwelche Zeichen in den Programmcode einstreut (ob es nun Tilden oder andere Zeichen sind), dann verändert man die Programme (und hat veränderte Programme die anders/verändert oder gar nicht mehr funktionieren)

OSWALD hat geschrieben: Freitag 19. September 2025, 09:09 Ansonsten bin ich überzeugt, dass Python inzwischen
bedeutender denn je gewoorden ist.
Davon bin ich aber auch überzeugt...
OSWALD
User
Beiträge: 622
Registriert: Freitag 18. März 2022, 17:32

19.9.2025
Aus Allem habe ich die Lehre gezogen . dass ich mich
endlich mit dem Kapitel Fehlersuche beschäftigen muss
und das ist auch meine nächste Beschäftigung hier.
Gute Zeit OSWALD
Benutzeravatar
Dennis89
User
Beiträge: 1618
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

wenn das Erstellen einer neuen `venv` zu kompliziert ist, dann würde ich empfehlen dass auf deine Todo-Liste zu schreiben. Das gehört mit zu den Grundlagen, die man können sollte.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
OSWALD
User
Beiträge: 622
Registriert: Freitag 18. März 2022, 17:32

19.9.2025
@Dennis89 Du hast absolut recht, aber als Laie gehe ich instinktiv den Weg
des geringsten Widerstandes und beginne mit leichteren Themen
Ein kleiner Fehler mit venv und ich kann den
PC zurücksetzen.Mit Windows 10 in vieler Hinscht nicht die beste
Ausgangsituation für ''höhere Ziele in Python'.
Es macht so auch Spass.
Gute Zeit ODWALD
Benutzeravatar
grubenfox
User
Beiträge: 623
Registriert: Freitag 2. Dezember 2022, 15:49

OSWALD hat geschrieben: Freitag 19. September 2025, 10:45 endlich mit dem Kapitel Fehlersuche beschäftigen muss
dazu gehört sich zu überlegen welches Ergebnis man erwartet und das dann mit dem zu vergleichen was beim ausführen des Python-code bei heraus kommt

Was zu dem assert Statement und zu den beiden Test-Units führt:
https://docs.python.org/3/library/doctest.html
https://docs.python.org/3/library/unittest.html

Mit dem doctest-Modul bin ich nie richtig warm geworden... das man da die genaue Ein- und Ausgabe vom interaktiven Python-Interpreter übernehmen muss, ist nicht so meins. Das was man in den Interpeter reinschreibt ist ja eher wie Schall und Rauch und verschwunden wenn man den Interpreter beendet. Die Unit-Tests sind ordentlich Python-Dateien die speichern kann, in seine SourceCode-Versionsverwaltung übernehmen kann, usw...
Benutzeravatar
__blackjack__
User
Beiträge: 14178
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@OSWALD: Das ist Unsinn. venv's sind ja gerade dazu da, dass man nicht global am System was verändert, sondern das was man ”kaputt” machen kann, auf das venv beschränkt ist.

@grubenfox: Doctests sind prima um Dokumentation oder Tutorials zu prüfen, wenn man dort Beispiele rein schreibt. Aber auch wenn man den Mittschnitt einer Python-Shell-Sitzung als wiederholbare Tests in eine Textdatei speichert. Die lässt sich dann ja auch in die Versionsverwaltung einpflegen. Das ist halt so das allereinfachste was man machen kann. Beim Advent of Code schreibe ich beispielsweise oft die Beispiele aus der Aufgabe als Doctests in den Docstring der jeweiligen Funktionen.

Ich bin mit `unittest` nicht so richtig warm geworden, weil zu java-esque. Tests mache ich lieber mit `pytest`. Wobei sich das nicht ausschliesst, Pytest versteht auch die Unittests die man mit `unittest` schreibt.
“Every thinking person fears nuclear war and every technological nation plans for it. Everyone knows
it's madness, and every country has an excuse.” — Carl Sagan, Cosmos, Episode 13: Who Speaks for Earth?
Benutzeravatar
grubenfox
User
Beiträge: 623
Registriert: Freitag 2. Dezember 2022, 15:49

__blackjack__ hat geschrieben: Freitag 19. September 2025, 15:37 @grubenfox: Doctests sind prima um Dokumentation oder Tutorials zu prüfen, wenn man dort Beispiele rein schreibt. Aber auch wenn man den Mittschnitt einer Python-Shell-Sitzung als wiederholbare Tests in eine Textdatei speichert.

Thema Tests: die ersten beiden schreibe ich nicht und die Python-Shell nutze ich so gut wie gar nicht. Nach dem Speichern des Quelltextes im Editor geht es bei mir direkt zur Windows- bzw. Linux-Kommandozeile und dort starte ich einfach das geänderte Programm (nach dem ersten Start sind es dann meistens nur die zwei Tastendrücke "Cursor hoch" und "Return") und schaue mir dann die Debugausgaben an... gelegentlich wird das Programm auch gleich vom Editor aus gestartet. Aber das Tests gut als Teil der Dokumentation geeignet sind, da sind wir uns offenbar einig...

Ansonsten wollte ich beim Thema 'Tests und testen' zum einen erst mal bei den Modulen bleiben die gleich mit Python mitgeliefert werden, zum anderen wollte ich mein ehemaliges liebstes externes Testmodul nicht erwähnen, weil es zuletzt vor 10 Jahren veröffentlicht wurde. Aber inzwischen habe ich entdeckt dass es ein Projekt Nose 2 gibt. :) (natürlich mit Änderungen zum guten alten Nose)

Dann also: `unittest`, `pytest ` und `nose2 `.... (in alphabetischer Reihenfolge aufgeführt)
Benutzeravatar
__blackjack__
User
Beiträge: 14178
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Nose hatte ich auch mal benutzt als das Rennen zwischen Nose und Pytest noch offen war.
“Every thinking person fears nuclear war and every technological nation plans for it. Everyone knows
it's madness, and every country has an excuse.” — Carl Sagan, Cosmos, Episode 13: Who Speaks for Earth?
OSWALD
User
Beiträge: 622
Registriert: Freitag 18. März 2022, 17:32

5.10.2025
Die KI beantwortet inzwischen (fast ohne Fehler ) alle Fragen zu Python.
DAS bedeutet aber längst nicht, dass man damit allein dchon Python lernen könnte.

Ich habe mich zuletzt auch mehr mit Z-Score beschäftigt
Hierzu zwei Methoden zur Auffindung von Ausreissern
in zwei Beispielen.

Die Z-Score-Methode misst die Abweichung eines Datenpunkts vom Mittelwert,
ausgedrückt in Standardabweichungen.
Ein hoher absoluter Z-Score weist auf einen Ausreißer hin.
Der Schwellenwert zur Identifizierung von Ausreißern wird angepasst
Die Formel zur Berechnung des Z-Scores eines Datenpunkts x lautet:

Z = (x – μ) / σ
Gute ZeitOSWALD

Code: Alles auswählen


#############################
#Berechnen einer Matrix

from scipy.stats import zscore
import numpy as np
import matplotlib.pyplot as plt

daten_matrix = np.array([[ 75 , 40 ,  0,  80 , 46  , 0, 63,  35 , 14],
     [  61 , 34,  13,  60 , 33,  121  ,71 , 37,  0],
     [  72 , 39  , 0,   78 , 44 ,  0, 63 , 35 , 14],
     [  61 , 34 , 13 , 60,  33  ,12, 69 , 36 ,  1],
     [  71 , 37 ,  0,   77 , 43  , 0,  62 , 35 , 16]])
plt.title("Hier die  unveränderte Matrix "  )                            
plt.imshow(daten_matrix)
plt.colorbar()
plt.show()
print()
           
z_scores = zscore(daten_matrix)
 
print()
print(f"Die Z-Scores für das Datenarray sind: {z_scores}")


daten_matrix =  np.array([[ 75 , 40 ,  0,  80 , 46  , 0, 63,  35 , 14],
[  61 , 34,  13,  60 , 233,  12  ,71 , 37,  0],
[  72 , 39  , 0,   78 , 44 ,  0, 63 , 35 , 14],
[  61 , 34 , 13 , 60,  33  ,12, 233 , 36 ,  1],
[  71 , 37 ,  233,   77 , 43  , 0,  62 , 35 , 16]])
z_scores = zscore(daten_matrix)
print()
print()
print(f"Die Z-Scores mit Ausreissern  sind: {z_scores}")
plt.title("Matrix mit  hier  :  3  Ausreissern  ")
plt.imshow(daten_matrix)
plt.colorbar()
plt.show()

#################################

##### OUTLIERS
  
import numpy as np  
import matplotlib.pyplot as plt    
# Sample data: test scores
 
data  = np.array([[ 0.3148,  0.0478,  0.6243,  0.4608],
              [ 0.7149,  0.0775,  0.6072,  0.9656],
              [ 0.6341,  0.1403,  0.9759,  0.4064],
              [ 0.5918,  0.6948,  0.904 ,  0.3721],
              [ 0.0921,  0.2481,  0.1188,  0.1366]])

# Calculate the mean
mean = np.mean(data)
 # Calculate the standard deviation
std_dev = np.std(data)
# Perform Z-score normalization
z_scores = (data - mean) / std_dev  
# Perform Z-score normalization
z_scores = (data - mean) / std_dev
# Print the results
print()

print("Original data:", data)
print("Mean:", mean)
print("Standard Deviation:", std_dev)
print("Z-scores:", z_scores)
# Outlier detection: Z-scores beyond ±3 are considered outliers
outliers = np.where(np.abs(z_scores) > 1.2   )
print("Outliers:", data[outliers])

# Visualizing the data
plt.figure(figsize=(10, 6))
plt.plot(data, 'bo-', label='Original Data')
plt.plot(outliers[0], data[outliers], 'ro', label='Outliers')
plt.axhline(mean, color='g', linestyle='--', label='Mean')
plt.xlabel('Index')
plt.ylabel('Value')
plt.title('Data with Outliers Detected')
plt.legend()
plt.show()


OSWALD
User
Beiträge: 622
Registriert: Freitag 18. März 2022, 17:32

8.10.2025
Ich habe mich jetzt schon so lange mit Python beschäftigt.
Und ich komme immer mehr zur Frage :
Soll ich wirklich teure Hardware anschaffen,
um auch die neuesten Bbliotheken ( für Ki !) verwenden zu können
oder soll ich lieber beim beim 'einfachen' Python bleiben ?

Heute weiß ich: Python ist physisches Gold.
Ki ist Zertifikats-Gold.

Oswald
Benutzeravatar
Dennis89
User
Beiträge: 1618
Registriert: Freitag 11. Dezember 2020, 15:13

Was hast du denn grundsätzlich vor mit den "neusten Bibliotheken"? Wenn du ein Projekt hast, dass die Anforderungen benötigt, dann wirst du die Hardware kaufen müssen.
Ich bin selbst auch nur Hobby-Programmierer, aber mein Eindruck ist, dass du erst die ganzen Anmerkungen, die du in dem Thema schon bekommen hast, verinnerlichen solltest und wenn du dann in den Grundlagen wirklich sicher bist, dann das "große KI-Projekt" starten.

Vielleicht hat jemand anders eine andere Meinung.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
OSWALD
User
Beiträge: 622
Registriert: Freitag 18. März 2022, 17:32

10.10.2025
Hier zeige ich noch die Sinulation
einer Gen-Untersuchung in Form einer Heatmap,
wobei normale und Ausreisser- Z_Scores gezeigt werden.
Gute Zeit Oswald

Code: Alles auswählen


import pandas as pd
import numpy as np
from scipy.stats import zscore

# Beispiel-Datenmatrix erstellen
data = {'Probe_A': [7.0,2.0, 255],
        'Probe_B': [3.5, 255, 2.2],
        'Probe_C': [255, 3.8, 2.6]}
df = pd.DataFrame(data, index=['Gen_A', 'Gen_B', 'Gen_C'])
print(df)
# Z-Scores spaltenweise (axis=0) oder zeilenweise (axis=1) berechnen
# Hier wird zeilenweise normalisiert
z_score_matrix = df.apply(zscore, axis=1)
 
#2. Heatmap plotten
# Heatmap zu erzeugen. 
import seaborn as sns
import matplotlib.pyplot as plt

# Heatmap erstellen
plt.figure(figsize=(8, 8))
sns.heatmap(z_score_matrix,
            cmap='RdBu_r', # Rot-Blau-Farbschema, 'r' kehrt die Farben um
            annot=True,    # Z-Score-Werte in den Zellen anzeigen
            fmt=".2f",     # Zahlen auf zwei Nachkommastellen formatieren
            linewidths=.5, # Linien zwischen den Zellen
            cbar_kws={'label': 'Z-Score'})

plt.title('Heatmap zeigt normale(blau) u. Ausreisser(rotbraun) Z_Scores')
plt.show()

Antworten