>source

여기에 비슷한 질문이 몇 개 있다는 것을 알고 있지만 그 중 누구도 나를 도우지 못했습니다. 적어도 나는 아무 것도 찾지 못했습니다.

저는 MongoDB에서 데이터를 로드하고 200개의 정수 목록에 저장합니다. 1차원.

예를 들어 내 X [538, 561, 500, 559, 545, 559, 579, 549, 542, 524]입니다.

이 Y [33. 16. 32. 51. 27. 16. 34. 17. 29. 15.]

이미 np.array(X)를 시도했지만 작동하지 않습니다.

나는 그저 배우고 있는 중입니다. 부디 부드럽게 해주세요.

import Mongoread
import linear_regression
import numpy as np
##"main" test.py
mongoreadval= []
mongoreadval_t= []
X, _Y= Mongoread.mongoparser(mongoreadval, mongoreadval_t)
Z, Y= np.loadtxt("data/textfile.txt", skiprows=1, unpack=True)
w, b= linear_regression.train(X, np.array(Y), iterations=1000000, lr=0.001)
print("\nw=%.3f, b=%.3f" % (w, b))
print("Prediction: x=%d=> y=%.2f" % (20, linear_regression.predict(20, w, b)))


import numpy as np
## linear_regression.py
def predict(X, w, b):
    return X * w + b
def loss(X, Y, w, b):
    return np.average((predict(X, w, b) -Y) ** 2)
def train(X, Y, iterations, lr):
    w= b= 0
    for i in range(iterations):
        current_loss= loss(X, Y, w, b)
        print("Iteration %4d=> Loss: %.6f" % (i, current_loss))
        if loss(X, Y, w + lr, b) < current_loss:
            w += lr
        elif loss(X, Y, w -lr, b) < current_loss:
            w -= lr
        elif loss(X, Y, w, b + lr) < current_loss:
            b += lr
        elif loss(X, Y, w, b -lr) < current_loss:
            b -= lr
        else:
            return w, b
    raise Exception("Couldn't converge within %d iterations" % iterations)

텍스트 파일

data1  data2
13            33
2             16
14            32
23            51
13            27
1             16
18            34
10            17
26            29
3             15

마지막으로 내 MongoDB에서 모든 데이터를 가져올 것입니다. 가져온 Y와 함께 작동하도록 X 목록의 형식을 지정하는 방법은 무엇입니까?

감사합니다

아마도 문제는 이 기능에 있습니다. 스칼라와 목록을 함께 추가하려는 것 같습니다. 나는 X가 목록이라고 생각하지만 더 자세한 내용과 데이터를 보지 않고는 확실히 말할 수 없습니다. def predict(X, w, b): return X * w + b

ekrall2022-01-15 17:15:13

전체 오류 역추적을 제공해야 하는 이유

mozway2022-01-15 17:15:13

특히 질문이 실제 문제에 초점을 맞추고 있는지 확인하십시오. 데이터베이스에서 원하는 숫자를 읽을 수 있고 X와 Y가 원하는 대로 보인다면 해당 부분을 생략하십시오. 대신 해당 값을 직접 할당하는 code를 표시하십시오. 실제 파일의 전체 데이터를 표시하는 대신 문제를 일으킬 수 있는 약간의 데이터를 표시합니다. 마찬가지로 기차가 작동하면 해당 w 및 b 값을 할당하고 이 방법으로 문제를 재현할 수 있는지 확인하십시오.

Karl Knechtel2022-01-15 17:15:13

이 단계를 따르면 자동으로 code 디버그를 시작합니다. 즉, 스스로 문제를 찾고 이해하려고 시도합니다. 여기에서 항상 시작해야 합니다. 문제를 해결할 수 없을 때 이 클럽에 오십시오. 해결할 수 없는 부분을 보여주세요. 그리고 그 문제를 이해할 수 있을 만큼 충분히 보여주지만 더 이상은 아닙니다.

Karl Knechtel2022-01-15 17:15:13
  • 답변 # 1

    배열에 문제가 있습니다. 나는 그것을 스스로 해결했다. 나는 지금 멍청하다고 느낀다.

    X를 numpy 배열로 변환해야 했습니다.

    import numpy as np
    X=  [538, 561, 500, 559, 545, 559, 579, 549, 542, 524]
    # Y     I load the data from a textfile with numpy.loadtext
    # Y=  [33. 16. 32. 51. 27. 16. 34. 17. 29. 15.]
    Z, Y= np.loadtxt("data/textfile.txt", skiprows=1, unpack=True)
    def predict(X):
        return X * 1 + 2
    def loss(X, Y):
        return np.average((predict(X -Y)**2)
    def train(X, Y, iterations):
        for i in range (iterations):
            current_loss= loss(X, Y)
    X= np.asarray(X)
    test, test2= train(X, Y, iterations=1000)
    

  • 이전 css : 형제를 기준으로 요소를 중앙에 배치
  • 다음 code를 실행하기 전에 구문 오류를 표시하도록 숭고한 텍스트 편집기를 설정하는 방법은 무엇입니까?