init
This commit is contained in:
@@ -44,8 +44,8 @@ class VitTrainer:
|
|||||||
save_strategy="epoch",
|
save_strategy="epoch",
|
||||||
evaluation_strategy="epoch",
|
evaluation_strategy="epoch",
|
||||||
learning_rate=2e-5,
|
learning_rate=2e-5,
|
||||||
per_device_train_batch_size=381,
|
per_device_train_batch_size=16,
|
||||||
per_device_eval_batch_size=381,
|
per_device_eval_batch_size=16,
|
||||||
weight_decay=0.01,
|
weight_decay=0.01,
|
||||||
load_best_model_at_end=True,
|
load_best_model_at_end=True,
|
||||||
metric_for_best_model="accuracy",
|
metric_for_best_model="accuracy",
|
||||||
@@ -195,7 +195,8 @@ class VitTrainer:
|
|||||||
print("Data count: ", len(X))
|
print("Data count: ", len(X))
|
||||||
|
|
||||||
trans = transforms.ToPILImage()
|
trans = transforms.ToPILImage()
|
||||||
X = [trans(torch.tensor([x])) for x in X]
|
#X = [trans(torch.tensor([x])) for x in X]
|
||||||
|
X = [trans(torch.tensor(x)) for x in X]
|
||||||
|
|
||||||
split_point1 = int(len(X) * 0.9)
|
split_point1 = int(len(X) * 0.9)
|
||||||
train_X = X[:split_point1]
|
train_X = X[:split_point1]
|
||||||
@@ -221,7 +222,7 @@ if __name__ == "__main__":
|
|||||||
stock_code = "252670"
|
stock_code = "252670"
|
||||||
vitTrainer = VitTrainer(RESOURCE_PATH)
|
vitTrainer = VitTrainer(RESOURCE_PATH)
|
||||||
|
|
||||||
train_ds, val_ds = vitTrainer.getData(stock_code, sDate="20200729", eDate="20200731")
|
train_ds, val_ds = vitTrainer.getData(stock_code, sDate="20220701", eDate="20220731")
|
||||||
vitTrainer.train(train_ds, val_ds, model_path)
|
vitTrainer.train(train_ds, val_ds, model_path)
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -195,6 +195,7 @@ class Stock2Vector(HTS):
|
|||||||
result["label"].append(int(label))
|
result["label"].append(int(label))
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def preprocessData(self, result):
|
def preprocessData(self, result):
|
||||||
# 분석을 통해서 볼린저밴드 상/하단을 계산한다.
|
# 분석을 통해서 볼린저밴드 상/하단을 계산한다.
|
||||||
df = self.buySellChecker.getVectorFeature(result)
|
df = self.buySellChecker.getVectorFeature(result)
|
||||||
@@ -285,12 +286,37 @@ class Stock2Vector(HTS):
|
|||||||
return X, Y
|
return X, Y
|
||||||
|
|
||||||
def getVectorData(self, data, type="avg10", VECTOR_SIZE = 32):
|
def getVectorData(self, data, type="avg10", VECTOR_SIZE = 32):
|
||||||
X, Y = np.zeros((VECTOR_SIZE, VECTOR_SIZE, 4)), np.zeros((32,1))
|
df = self.buySellChecker.getVectorFeature(data)
|
||||||
df, minmax_df = self.preprocessData(data)
|
|
||||||
|
|
||||||
X = np.asarray(X)
|
# channel1: avg10, channel2: diff_upper_lower, channel3: abs_avg_2, channel4: abs_avg_3
|
||||||
Y = np.asarray(Y, dtype='int64')
|
avg10 = df['avg10'].tolist()
|
||||||
return X, Y
|
diff_upper_lower = df['diff_upper_lower'].tolist()
|
||||||
|
rsi = df['rsi'].tolist()
|
||||||
|
abs_avg_3 = df['abs_avg_3'].tolist()
|
||||||
|
|
||||||
|
size = len(avg10)
|
||||||
|
batch_X, batch_Y = [], []
|
||||||
|
X = np.zeros((4, VECTOR_SIZE, VECTOR_SIZE))
|
||||||
|
label = df['label'].tolist()
|
||||||
|
for i in range(VECTOR_SIZE*VECTOR_SIZE-1, size):
|
||||||
|
w, h = 0, 0
|
||||||
|
for j in range(i-VECTOR_SIZE*VECTOR_SIZE+1, i+1):
|
||||||
|
X[0, h, w] = avg10[j]
|
||||||
|
X[1, h, w] = diff_upper_lower[j]
|
||||||
|
X[2, h, w] = abs_avg_3[j]
|
||||||
|
X[3, h, w] = rsi[j]
|
||||||
|
w += 1
|
||||||
|
if w >= VECTOR_SIZE:
|
||||||
|
w = 0
|
||||||
|
h += 1
|
||||||
|
if h >= VECTOR_SIZE:
|
||||||
|
h = 0
|
||||||
|
batch_X.append(X)
|
||||||
|
batch_Y.append(label[i])
|
||||||
|
|
||||||
|
batch_X = np.asarray(batch_X)
|
||||||
|
batch_Y = np.asarray(batch_Y, dtype='int64')
|
||||||
|
return batch_X, batch_Y
|
||||||
|
|
||||||
|
|
||||||
def getDataset3D(self, data, VECTOR_SIZE = 299):
|
def getDataset3D(self, data, VECTOR_SIZE = 299):
|
||||||
|
|||||||
Reference in New Issue
Block a user