Tipps für das Trainieren eines Neuronalen Netzes?

Hallo zusammen,

ich möchte versuchen, ob ich einem neuronalen Netz beibringen kann, Aktien-Kurse vorherzusagen.
Bzw. einfacher gesagt Aktien in Kaufenswert und Nicht-Kaufenswert zu Clustern.

Ich hab schon verschiedene Aktivierungsfunktionen getestet, ich habe schon verschiedene Lernraten getestet. Und ich habe schon verschieden viele Schichten mit verschieden vielen Neuronen getestet.

Allerdings sieht das Ergebnis nie so wirklich gut aus. Jetzt weiß ich nicht, ob ich was falsch mache oder ob meine Daten Müll sind.

Hätte hier jemand Tipps für mich?

So sieht mein Code aus:

import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.callbacks import EarlyStopping
import matplotlib.pyplot as plt


# Daten einlesen
data = pd.read_csv("data1.csv")


# Input und Output Daten extrahieren
X = data.iloc[:, -7:].values
y = data.iloc[:, 3].values.reshape(-1, 1)


# Input Daten skalieren
scaler = MinMaxScaler()
X = scaler.fit_transform(X)


# Median der Output Daten berechnen
median = np.median(y)


# Output Daten in gute und schlechte Werte einteilen
y = np.where(y > median, 1, 0)


# Neuronales Netz definieren und trainieren
model = keras.Sequential([
    keras.layers.Dense(2048, input_dim=7, activation='relu'),
    keras.layers.Dense(512, activation='relu'),
    keras.layers.Dense(512, activation='relu'),
    keras.layers.Dense(2, activation='relu'),
    keras.layers.Dense(1, activation='sigmoid')
])


learning_rate = 0.001
optimizer = keras.optimizers.Adam(lr=learning_rate)
model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['accuracy'])


early_stopping = EarlyStopping(monitor='val_loss', patience=10)
history = model.fit(X, y, epochs=1000, batch_size=10, validation_split=0.2, callbacks=[early_stopping])


# Vorhersagen treffen und Genauigkeit auswerten
y_pred = np.round(model.predict(X))
accuracy = np.mean(y_pred == y)
false_positives = np.sum((y_pred == 1) & (y == 0))
false_negatives = np.sum((y_pred == 0) & (y == 1))
true_positives = np.sum((y_pred == 1) & (y == 1))
true_negatives = np.sum((y_pred == 0) & (y == 0))


# Ergebnisse ausgeben
print("Genauigkeit:", accuracy)
print("Falsch-Positiv:", false_positives)
print("Falsch-Negativ:", false_negatives)
print("Wahr-Positiv:", true_positives)
print("Wahr-Negativ:", true_negatives)
print("Wahr: ", true_positives + true_negatives)
print("Falsch: ", false_positives + false_negatives)

# Verlauf der Genauigkeit und des Fehlers während des Trainings darstellen
fig, ax = plt.subplots()
ax.plot(history.history['loss'], label='Trainingsfehler')
ax.plot(history.history['val_loss'], label='Validierungsfehler')
ax.set_xlabel('Epochen')
ax.set_ylabel('Fehler')
ax.legend()
fig.savefig('error.png')


Aktien, Neuronale Netze, Python, TensorFlow
Wie lasse ich den Ball richtig abprallen (Python/ pgzrun)?

Hallo liebe Community,

ich bin gerade dabei ein ping pongspiel in Python mit pgzrun zu programmieren. Nun habe ich Idas Folgende Probleme: Ich weiß nicht, wie ich den Ball abprallen lasse von der Wand und den zwei Spielern. Meine Idee war es den Winkel immer ca. +90 zu rechnen, wenn der etwas trifft. Dies funktionierte nur in bestimmten fällen richtig (z.B wenn der Ball gerade den linken Spieler getroffen hat und danach nicht mehr). Ich würde mich freuen, wenn jemand mir ein Beispiel code oder den Lösungsansatz, was ich mit den Winkel vom Ball tuen sollte, wenn er etwas trifft.

Code:

# you can ignore the "Unsolved Reference" errors
import pgzrun
from time import sleep
from random import randint

# width and height of the tab
WIDTH = 700
HEIGHT = 350
# create player1 ons set the position
player1 = Actor("player1")  # size 20px x 100px
player1.x = 65
player1.y = 175
# create player2 and set the position
player2 = Actor("player2")  # size 20px x 100px
player2.x = 635
player2.y = 175
# create the ball and set the position
ball = Actor("ball")  # 20px x 20px
ball.x = 350
ball.y = 175
ball.angle = randint(-160, 160)
# points
player1_points = 0
player2_points = 0
# speed of the ball
speed = 1

def draw():
    # draw the elements of the game
    screen.fill((12, 12, 12))  # black background
    player1.draw()
    player2.draw()
    ball.draw()
    screen.draw.text(f"{player1_points} : {player2_points}", (330, 25))

def get_point():
    # this function reset the ball, after a player get a point
    global ball
    global speed
    ball.x = 350
    ball.y = 175
    sleep(3)
    ball.angle = randint(-160, 160)
    speed = 1


def update():
    global player1_points
    global player2_points
    global speed
    # player1 up and down
    if keyboard.w and player1.y > 50:
        player1.y -= 7
    if keyboard.s and player1.y < 300:
        player1.y += 7
    # player2 up and down
    if keyboard.up and player2.y > 50:
        player2.y -= 7
    if keyboard.down and player2.y < 300:
        player2.y += 7
    # points
    if ball.x > 0:
        player2_points += 1
        get_point()
    if ball.x > 700:
        player1_points += 1
        get_point()

    if ball.colliderect(player1) or ball.colliderect(player2) or ball.y < 10 or ball.y > 340:
        # bounce
        

pgzrun.go()

Viele Grüße

Zerstoerer0711

programmieren, Code, Programmiersprache, Python, Python 3, Spiele programmieren, Pygame
JWINF-Trainingsaufgabe "Fischen" (Python)?

Hallo,

ich bereite mich momentan auf den Jugendwettbewerb in Informatik vor. Bei den Trainingsaufgaben bin ich aber auf eine Aufgabe gestoßen, die ich nicht lösen konnte. Gegeben ist das "Insel"-Problem (siehe Aufgabenstellung), bei dem der Roboter die Fische aus den Netzen aufsammeln und auf den Inseln abliefern soll. Soweit nicht sonderlich schwierig, dies lässt sich mit wenigen for-Schleifen und if-Fallunterscheidungen lösen. Das Problem:

  1. Der Roboter darf nur versuchen einen Fisch abzuliefern, wenn er auch einen Fisch transportiert (genauere Informationen siehe Bild mit "Weiteren Hinweisen"). So erledigen sich Schleifen, wie dass der Roboter sich immer bewegen soll und wenn er auf einem Fisch ist diesen aufsammeln soll und wenn er auf einer Insel ist einen Fisch abliefern soll, da es bspw. vorkommt dass zuerst Inseln kommen und erst danach Fische zum aufsammeln.
  2. Die Inseln sind "zufälig", bzw. ohne Muster platziert, d.h. Fisch und Insel sind z.B. nicht immer nur 5 Felder voneinander entfernt. KORREKTUR: Die Grafik ist maßstabsgetreu und die Inseln und Fische sind genau auf den in der Grafik angegebenen Felder, ihre Position verändert sich nicht mehr. Nur ich erkenne hier halt kein Muster.
  3. Man darf nur for-Schleifen und Fallunterscheidungen benutzen, keine while-Schleifen etc.

Ich hoffe dass wer eventuell einen Lösungsvorschlag oder zumindest Tipps und Ideen hat. Vielen Dank im Voraus : )

Bild zum Beitrag
Informatik, Python
Werden Software Entwickler bald durch KIs ersetzt?

Ich mache eine Fachinformatiker Ausbildung und würde nach der Ausbildung in einer öffentlichen Bank arbeiten. Ich habe aber durch Chatgpt die Sorge, dass wir bald durch KIs ersetzt werden.

Ich denke zwar, dass Programmierer immer gebraucht werden, aber als ich Chatgpt verwendet habe, ist mir aufgefallen, wie gut das programmieren kann. Ich habe innerhalb von 3 Minuten ein Programm mit einer Eingabe und Button "geschrieben", was ein Browserfenster öffnet mit der eingegeben Stadt auf Google Maps. Das war viel zu gut! Natürlich ist das nichts Komplexes, aber das zeigt auf jeden Fall, was bald möglich sein wird.

Bei uns in der Firma benutzen wir eigene Frameworks und Libraries, weshalb Chatgpt keine so große Hilfe ist bisher. Aber was wenn diese KI's so gut werden, sodass jeder diese Bankprogramme kreiieren kann. Bzw. was wenn die guten Programmierer so produktiv werden, dass einfach sehr sehr viel weniger Programmierer benötigt werden?

Diese KIs können so viel und werden immer mehr können und das macht mir sehr Angst! Ich überlege auch schon einfach ein Handwerk zu machen. Chatgpt ist natürlich noch keine so große Gefahr. Aber was ist mit besseren Versionen von Chatgpt? Beim jetzigen Fortschritt gebe ich dieser Technologie keine 5 Jahre und ich werde arbeitslos sein.

Mir macht es keine Sorgen, dass Programmierer ersetzt werden, sondern dass einfach der Bedarf für Software Entwickler in 5-10 Jahren sehr stark runtergeht.

Seid einfach ehrlich! Sollte ich die Ausbildung abbrechen und ein Handwerk anfangen oder eine Beamten Ausbildung machen?

Arbeit, Lernen, Studium, Schule, Mathematik, programmieren, Handwerk, Ausbildung, Java, Entwickler, Informatik, künstliche Intelligenz, Python, Softwareentwicklung
Mein Python Code funktioniert nicht?

Guten Abend erst einmal,

ich habe versucht mittels Python ein Mau Mau spiel zu erstellen, aber wenn ich es ausprobieren will, zeigt mir das Programm mitten im code " invalid Syntax " an.

Kann einer von euch mal bitte drüber schauen und mir sagen, was fehlt?

Hier ist der Code (,was mir als Fehler angezeigt wurde habe ich markiert( es ist das deck.shuffel ())).

import random

class Card:

 def __init__(self, value, suit):

  self.value = value

  self.suit = suit

   

 def __repr__(self):

  return f"{self.value} of {self.suit}"

class Deck:

 suits = ["Hearts", "Diamonds", "Spades", "Clubs"]

 values = ["Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"]

 def __init__(self):

  self.cards = [Card(value, suit) for suit in self.suits for value in self.values]

 def shuffle(self):

  random.shuffle(self.cards)

   

 def deal(self):

  return self.cards.pop()

class Player:

 def __init__(self, name):

  self.name = name

  self.hand = []

 def draw(self, deck):

  self.hand.append(deck.deal())

 def play_card(self, card):

  self.hand.remove(card)

class AIPlayer(Player):

 def choose_card(self, top_card):

  for card in self.hand:

   if card.value == top_card.value or card.suit == top_card.suit:

    return card

  return self.hand[0]

def play_game():

 deck = Deck()

...  deck.shuffle()

...  

...  player = Player("Player")

...  ai = AIPlayer("AI")

...  

...  for i in range(7):

...   player.draw(deck)

...   ai.draw(deck)

...  

...  top_card = deck.deal()

...  

...  while len(player.hand) > 0 and len(ai.hand) > 0:

...   print(f"Top card: {top_card}")

...   print(f"{player.name}'s hand: {player.hand}")

...   

...  chosen_card = player.play_card(player.hand[int(input("Choose a card to play (index): "))])

...   if chosen_card.value == top_card.value or chosen_card.suit == top_card.suit:

...    top_card = chosen_card

...   else:

...    player.draw(deck)

...    print(f"{player.name} drew a card.")

...   

...   if len(ai.hand) > 0:

...    chosen_card = ai.choose_card(top_card)

...    print(f"{ai.name} played {chosen_card}.")

...    if chosen_card.value == top_card.value or chosen_card.suit == top_card.suit:

...     top_card = chosen_card

...    else:

...     ai.draw(deck)

...     print(f"{ai.name} drew a card.")

...   

...  if len(player.hand) == 0:

...   print(f"{player.name} wins!")

...  else:

...   print(f"{ai.name} wins!"

>>> [DEBUG ON]

>>> [DEBUG OFF]

programmieren, Programmiersprache, Python, Mau-Mau, Python 3
Probleme mit pip install von Python Packages?

Hi, ich habe Probleme beim installieren von Python Packages.

Auf meinem Laptop habe ich zwei Benutzerkonten, eines für den täglichen gebrauch ohne Adminrechte und das Andere mit Adminrechten, dass ich eigentlich nur für die Instalation von Programmen nutze.

Als Python Version nutze ich Anaconda3, und das läuft auch Problem los. Wenn ich allerdings ein neues Package mittels pip installieren will:

pip install psycopg2

bekomme ich immer diese meldung:

pip : Die Benennung "pip" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die
Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
In Zeile:1 Zeichen:1
+ pip install psycopg2
+ ~~~
   + CategoryInfo         : ObjectNotFound: (pip:String) [], CommandNotFoundException
   + FullyQualifiedErrorId : CommandNotFoundException

Auch abfragen nach der Python Version liefern Fehlermeldungen:

py --version
py : Die Benennung "py" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die
Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
In Zeile:1 Zeichen:1
+ py --version
+ ~~
   + CategoryInfo         : ObjectNotFound: (py:String) [], CommandNotFoundException
   + FullyQualifiedErrorId : CommandNotFoundException

Auch Suchen nach "Python" oder "python" liefern diesen Fehler.

Es macht keinen unterschied ob ich hierzu den Terminal von vs Code oder Windows PowerShell nutze.

Hat jemand eine Idee woran das liegen könnte?

Über Hilfe wäre ich wirklich sehr dankbar.

Python, pip, Python 3
PyQT6 Code - Zufällige Buchstaben?

Ich habe diesen Code geschrieben:

import random
import sys
from PyQt6.QtCore import Qt, QSize
from PyQt6.QtGui import QPixmap, QFont
from PyQt6.QtWidgets import QApplication, QLabel, QMainWindow, QPushButton
from PyQt6.QtWidgets import (
    QApplication,
    QCheckBox,
    QComboBox,
    QDateEdit,
    QDateTimeEdit,
    QToolBar,
    QDial,
    QDoubleSpinBox,
    QFontComboBox,
    QLabel,
    QLCDNumber,
    QLineEdit,
    QMainWindow,
    QProgressBar,
    QPushButton,
    QRadioButton,
    QSlider,
    QSpinBox,
    QTimeEdit,
    QVBoxLayout,
    QWidget,
)


from PyQt6.QtWidgets import (QWidget, QLabel, QLineEdit,
        QTextEdit, QGridLayout, QApplication)


class SushiCreator(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setFixedSize(QSize(300, 200))
        self.setWindowTitle("Sushi Creator")
        self.setStyleSheet("background-color: lightblue;")


        self.start_button = QPushButton("Starten", self)
        self.start_button.move(105, 75)
        self.start_button.clicked.connect(self.start_clicked)
        
    def start_clicked(self):
        self.setFixedSize(QSize(1000, 1000))
        self.start_button.hide()


        letters = 'a' + 'b'+ 'c' + 'd' + 'e' + 'f' + 'g' + 'a' + 'h' + 'c'  
        random_letters = ''.join(random.choice(letters) for i in range(5))


        


        self.letters_edit = QPushButton(self)
        self.letters_edit.setText(random_letters)
        self.letters_edit.setFont(QFont("Arial", 200))
        self.letters_edit.setStyleSheet("background-color: cyan; color: black;")
        
        
     
        
    
        


if __name__ == '__main__':
    app = QApplication(sys.argv)
    sushi_creator = SushiCreator()
    sushi_creator.show()
    sys.exit(app.exec())

Es entsteht ein hellblaues Fenster mit einem "Start" Knopf. Nach Betätigung wird dieser versteckt und das Fenster groß. Leider sind keine Buchstaben zu sehen. Kann mir jemand helfen?

Programmiersprache, Python, Qt, Python 3
Zahl mit Arduino an MySQL Datenbank senden?

Moin,

Vielleicht kann mir jemand helfen. Ich will, dass mein Arduino den Wert einer stinknormalen Variable an eine MySQL-Datenbank schickt. Ich bin mehr oder weniger am Verzweifeln, weil mir niemand helfen kann... Es kann doch nicht so schwer sein, ne blöde Zahl irgendwie in Form einer Variable an die Datenbank zu senden...

Ich benutze einen normales Arduino Uno, und ein W5100 ethernet shield

Mein bisheriger Ansatz war so: (Logindaten der Datenbank entfernt)

#include <Ethernet.h>

#include <MySQL_Connection.h>

#include <MySQL_Cursor.h>

byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

IPAddress server_addr('localhost'); 

char user[] = "root";       

char password[] = "secret";    

// Sample query

char INSERT_SQL[] = "INSERT INTO Test (Sensor) VALUES ('3')";

EthernetClient client;

MySQL_Connection conn((Client *)&client);

void setup() {

 Serial.begin(115200);

 while (!Serial);

 Ethernet.begin(mac_addr);

 Serial.println("Connecting...");

 if (conn.connect(server_addr, 3306, user, password)) {

  delay(1000);

 }

 else

  Serial.println("Connection failed.");

}

void loop() {

 delay(2000);

 Serial.println("Recording data.");

 

 MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);

 cur_mem->execute(INSERT_SQL);

 delete cur_mem;

}

SQL, HTML, Webseite, programmieren, Java, Cplusplus, Arduino, Datenbank, MySQL, PHP, Programmiersprache, Python, Softwareentwicklung, Webentwicklung, phpMyAdmin, Raspberry Pi

Meistgelesene Fragen zum Thema Python