본문 바로가기

python58

python 경사 하강법 ref: https://github.com/gilbutITbook/006958/tree/master/deeplearning/deep_class 단순 선형 회귀 import random def sqrt(x): return x ** 0.5 # x, y의 데이터 값 data = [[2, 81], [4, 93], [6, 91], [8, 97]] x_data = [x_row[0] for x_row in data] y_data = [y_row[1] for y_row in data] # 기울기 a와 y 절편 b의 값을 임의로 정한다. # 단, 기울기의 범위는 0 ~ 10 사이이며 y 절편은 0 ~ 100 사이에서 변하게 한다. a = random.random() * 10 b = random.random() * 100.. 2021. 8. 6.
rand import numpy as np x = np.random.rand(1) print(x) rand(0.1) 하면 error 발생. 흠.... 인수는 1보다 커야 하는군! rand(3.4)해도 error 발생. 흠.... 인수는 1보다 큰 정수만 가능한가 보군! rand(-2) 해도 error 발생. 흠.... 인수는 1보다 큰 양의 정수만 가능한가 보군! import numpy as np x = np.random.rand(3) print(x) 결과를 보니, 인수에 N이라는 정수를 넣으면, 원소 갯수가 N인 1차원 배열이 생기고, 각 원소는 0~1사이의 랜덤숫자가 되는 것 같다. 그렇다면 rand(2,3) 은 어떤 결과일까? import numpy as np x = np.random.rand(2,3) pr.. 2021. 8. 3.
column 순서에 불편해할 필요 없다. import sqlite3 con = sqlite3.connect(':memory:') cur = con.cursor() cur.execute('CREATE TABLE asdf(a0 int, a1 int)') cur.execute('INSERT INTO asdf(a1, a0) VALUES(1, 2)') cur.execute('SELECT * FROM asdf') print(list(cur)) 결과: [(2, 1)] 처음에 table을 만들 때 column을 a0, a1 순서로 만들었는데 나중에 insert를 할 때 보니 a1, a0 순서가 더 편하다는 것을 알게 되었다. 그럴 경우 테이블을 처음부터 다시 만들거나 추가할 데이터의 순서를 바꾸는 파이썬 코드를 추가할 필요 없이 asdf(a1, a0)으로 순.. 2021. 8. 1.
양봉 음봉 확률 2109개의 종목의 2020년 12월 1일부터 2021년 6월 4일까지의 일봉 차트 데이터를 근거로 계산했다. 이 종목들 중에 거래정지 종목, 상장폐지 종목, 신규상장 종목이 섞여있을 수도 있다. 종가가 시가보다 큰 것은 양봉, 양봉이 아닌 것은 음봉이라고 정의할 때, 다음 날 양봉이 뜰 확률을 계산하면 양봉음봉 / 연속으로 나온 횟수 음봉 양봉 1 42.52% 43.94% 2 44.59% 42.19% 3 45.85% 40.84% 4 47.01% 40.19% 5 47.71% 42.07% 6 48.64% 45.0% 7 48.24% 41.85% 8 46.77% 42.95% 9 44.16% 50% 10 37.66% 51.72% ... ... ... 연속으로 나온 횟수를 10 이하의 자연수로 정의할 때, 6번 .. 2021. 7. 3.
시간 복잡도와 이중 for문 import time list_a = range(3000) def func0(list_a): ret = [] for i in range(len(list_a)): suma = 0 for a in list_a[:i+1]: suma += a ret.append(suma) return ret def func1(list_a): ret = [] suma = 0 for a in list_a: suma += a ret.append(suma) return ret start0 = time.monotonic() ret0 = func0(list_a) elapsedtime0 = time.monotonic() - start0 start1 = time.monotonic() ret1 = func1(list_a) elapsedtime.. 2021. 6. 4.
for문 도중 값이 바뀌는 것에 주의 >>> a = list('asdf1234') >>> a ['a', 's', 'd', 'f', '1', '2', '3', '4'] >>> for x in a: a.remove(x) ... >>> >>> a ['s', 'f', '2', '4'] for문 도중에 a의 배열이 변하게 하면, 의도치 않은 결과를 갖게 될 수 있다. asdf1234에서 a를 지우면 sdf1234가 남는데, for문은 a[0]을 처리했으니 a[1]을 처리하려고 할 것이다. 그런데 이 시점에서 a[1]은 s가 아닌 d이다. 즉 a[1]을 처리하고나면 sf1234가 남는다. sf1234에서 a[2]는 1이므로 처리하면 sf234... 이런 식으로 가서 마지막엔 sf24만 남게 된다. 그렇다면 for문 도중에 배열이 변하지 않게 하려면 어.. 2021. 5. 19.
while문에서 time.sleep의 중요성 아래 코드는 while문이 1초 동안 몇 번 반복되는지 알아보는 코드이다. import time a = time.time() b = 0 while True: b += 1 if time.time() - a > 1: break print(b) 3956691번 반복된다고 나온다. import time a = time.time() b = 0 while True: b += 1 if time.time() - a > 1: break time.sleep(0.001) print(b) 위 코드를 실행시켜보면 68번 반복된다. time.sleep(0.001)만 넣었을 뿐인데, 어마어마하게 반복 횟수가 줄어들었다. 이는 cpu 사용량을 줄일 수 있는 가장 쉬운 방법이다. while문에는 time.sleep을 꼭 넣는 습관을 .. 2021. 5. 17.
키움증권 1시부터 7시 30분까지 일정 2021. 4. 30.
chejandata 처리시 주의할 점 KOA StudioSA ver 2.20에 나오는 가이드이다. 여기서 FID 911은 체결량, 915는 단위체결량이다. 둘의 차이가 무엇일까? 예를 들어 내가 100주를 매수 주문을 했고, 순서대로 30주, 34주, 36주가 체결되었다고 해 보자. 그럼 911과 915의 값은 각각 다음과 같다. 911 (체결량) 915 (단위체결량) 30주 체결 30 30 34주 체결 64 34 36주 체결 100 36 매수되자마자 매도하는 코드를 짜고 싶을 때, 매도 주문수량을 911을 통해 받아온다면 첫 번째 매수 체결에서는 30주를 매도하겠지만 두 번째 매수 체결부터는 잔고에 34주 밖에 없는데 64주를 매도하려고 할 것이고, 그렇게 되면 매도 주문이 이루어지지 않을 것이다. 따라서 그럴 때는 911이 아닌 915를.. 2021. 4. 27.
9. 파이썬 for문 (1) >>> for x in range(9): ... print(x) ... 0 1 2 3 4 5 6 7 8 대망의 for문 맨 처음에 for를 쓰고, 그 다음에 값이 변수 이름을 쓴다. 그 다음에 in을 쓰고, 그 다음에 iterable 가능한 객체를 쓴다. iterable 가능한 타입은 list, dict, str, tuple, range 등이 있다. 여기서 range에 대해 설명하자면, range(stop) : 0부터 stop-1까지의 정수 등차수열 (= range(0, stop)) range(start, stop) : start부터 stop-1까지의 정수 등차수열 range(start, stop, step) : start부터 stop-1까지의 step을 공차로 한 등차수열 >>> list(range(0.. 2021. 4. 24.