Problem z argumentem x, pomoc w dokończeniu programu

0

Poniżej kod który trzeba mi pomóc doprowadzić do końca :D o ile ktoś ma czas i chęć :) jest to projekt fishbota z siecią neuronową. Koduj z Magnetem,
nie jestem ekspertem a raczej ledwo stąpam w programowaniu dlatego prosiłbym o pomoc w dokończeniu programu :)

Błąd MLPClassifier.predict() missing 1 required positional argument: 'X'
i jak ktoś wie jaką bibliotekę użyć dodatkowo bo nie wszystkie są zawarte

from PIL import Image, ImageGrab
import PIL
import pickle
import pyautogui as gui
import time
import ctypes
from ctypes import wintypes
import keyboard 
import pynput
from pynput.keyboard import Key, Controller
import cv2
import numpy as np
import sklearn
from sklearn.neural_network import MLPClassifier
k = keyboard

def runFishbot():
    predictedNumber = 0

    while predictedNumber == 0:
        img = ImageGrab.grab(bbox=(580,160,700,270))
        img_np = np.array(img)
        gray = cv2.cvtColor(img_np, cv2.COLOR_RGB2GRAY)
        _, binary = cv2.threshold(gray, 100, 255, cv2.THRESH_BINARY_INV)
        r = cv2.resize(binary, (120, 100))
        predictedNumber = MLPClassifier.predict(r.reshape(1, -1))[0]         <<<<<<W tym miejscu jest błąd argumentu X
        print('Predict: ' + str(predictedNumber))

time.sleep(1.0)
    for _ in range(0, predictedNumber):
        pyautogui.press("spacja")(57)
        time.sleep(0.05)
        pyautogui.relase("spacja")(57)
        time.sleep(0.1)

    time.sleep(7.0)
    pyautogui.press("robak")(4)
    time.sleep(0.05)
    pyautogui.relase("robak")(4)
    pyautogui.press("spacja")(57)
    time.sleep(0.05)
    pyautogui.relase("spacja")(57)

while True:
    runFishbot()
0

Ale mam flashbacki. Bardzo nostalgiczna gra :) Co do tematu to daj wycinek z debbugera.

0

Zamień:
MLPClassifier.predict(r.reshape(1, -1))
na
MLPClassifier.predict(X=r.reshape(1, -1))
ale to Ci niewiele da, bo masz jakiś słaby ten shape.

0

Wystąpił wyjątek: TypeError
MLPClassifier.predict() missing 1 required positional argument: 'self'
File "C:\Users\dogie\OneDrive\Pulpit\Projekt\Projekt 2.py", line 24, in runFishbot
predictedNumber = MLPClassifier.predict(X=r.reshape(1, -1))
File "C:\Users\dogie\OneDrive\Pulpit\Projekt\Projekt 2.py", line 43, in <module>
runFishbot()
Jeśli o to chodziło - to już po tej zmianie: MLPClassifier.predict(X=r.reshape(1, -1))

0

Nie inicjalizujesz MLPClassifier

0

@Mano98: Ło panie, proponuję ogarnąć tobie jakiś kurs programowania, będzie ci łatwiej.

Linia 27 - nie możesz wywoływać metod klasy jeżeli nie stworzyłeś jej obiektu - chyba że jest to metoda statyczna.

To po pierwsze, a po drugie najważniejsze, w którym miejscu trenujesz ten model?
Na chwilę obecną on będzie ci generował losowe wyniki.

0

@Eldorad O.:, @ledi12: to zaczekajcie chwilkę poprawię to dokładnie jak jest w poradniku bo dodałem pewnie inny moduł (MLPClassifier.predict(X=r.reshape(1, -1)))bo orginalny to mlp.predictr.reshape(1, -1))

def runFishbot():
    predictedNumber = 0

    while predictedNumber == 0:
        img = ImageGrab.grab(bbox=(580,160,700,270))
        img_np = np.array(img)
        gray = cv2.cvtColor(img_np, cv2.COLOR_RGB2GRAY)
        _, binary = cv2.threshold(gray, 100, 255, cv2.THRESH_BINARY_INV)
        r = cv2.resize(binary, (120, 100))
        predictedNumber = mlp.predict(r.reshape(1, -1)[0])
        print("Predict: " + str(predictedNumber))

    time.sleep(1.0)
    for _ in range(0, predictedNumber):
        PressKey(57)
        time.sleep(0.05)
        RelaseKey(57)
        time.sleep(0.1)

    time.sleep(7.0)
    PressKey(4)
    time.sleep(0.05)
    RelaseKey(4)
    PressKey(57)
    time.sleep(0.05)
    RelaseKey(57)

while True:
    runFishbot()

Teraz jest kropka w kropka z tym ze nie posiadam bibliotek bo nie są pokazane na filmie ;(

@Eldorad O.: "To po pierwsze, a po drugie najważniejsze, w którym miejscu trenujesz ten model?"
Na razie nigdzie bo nie odpala :P ale ogólnie to dla siebie chciałbym żeby nie klikać tą spacją po 5 razy :)

0

@Mano98: Nigdzie nie inicjalizujesz zmiennej "mlp".

0

Kolega z filmu bazuje na tym wzorze z tym ze akurat ja malo z tego rozumiem :(

from sklearn.neural_network import MLPClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
X, y = make_classification(n_samples=100, random_state=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y,
... random_state=1)
clf = MLPClassifier(random_state=1, max_iter=300).fit(X_train, y_train)
clf.predict_proba(X_test[:1])
array(0.038..., 0.961...)
clf.predict(X_test[:5, :])
array([1, 0, 1, 0, 1])
clf.score(X_test, y_test)
0.8...

0

@Mano98: Polecam jakiś podstawowy kurs Pythona, wiele się rozjaśni.

0

Jeśli ktoś byłby w stanie zrobić taki programik to proszę o priv

1 użytkowników online, w tym zalogowanych: 0, gości: 1