728x90
반응형
보통 CNN 분류가 이미지데이터를 사용하는데, 다음과 같이 시계열 데이터로 학습하는 코드를 만듬.
데이터 만들기
import matplotlib.pyplot as plt
import numpy as np
# 데이터 생성
# 시간 간격을 만듭니다.
t = np.linspace(0, 6 * np.pi, 1000)
t2 = np.linspace(0, 3 * np.pi, 1000)
# 임의의 곡선을 계산합니다.
y = np.sin(t) + np.cos(2 * t) + np.sin(3 * t) + np.sin(2 * t)
y2 = np.sin(t2) + np.cos(4 * t) + np.sin(9 * t)
y3 = np.sin(t2) + np.cos(6 * t)
y_sum = (y + y2) / 7 # 데이터의 고저 차를 줄임
y_sum += abs(min(y_sum))
data = y_sum * 50 + 60
# data = np.round(data, 0)
data = np.int32(data)
plt.plot(data)

데이터는 다음과 같이 있습니다.

50개 요소씩 묶어서 X 학습 데이터로 만듭니다.
y (target) 데이터는 다음 값이 전 데이터보다 낮은지 높은지 0, 1 로 만듭니다.
length = 50
X = [data[i-length: i+1] for i in range(length, len(data)-1)]
y = [1 if data[i+1] - data[i] > 0 else 0 for i in range(length, len(data)-1)]
split_len = int(len(X) * 0.8)
X_train = np.array(X[:split_len])
y_train = np.array(y[:split_len])
X_test = np.array(X[split_len:])
y_test = np.array(y[split_len:])
X_train[:5], y_train[:5] # X, y 데이터 확인(5개만)

import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Flatten, Conv1D, MaxPooling1D
# from keras.applications import VGG16
# 데이터 생성
t = np.linspace(0, 6 * np.pi, 1000)
t2 = np.linspace(0, 3 * np.pi, 1000)
y = np.sin(t) + np.cos(2 * t) + np.sin(3 * t) + np.sin(2 * t)
y2 = np.sin(t2) + np.cos(4 * t) + np.sin(9 * t)
y3 = np.sin(t2) + np.cos(6 * t)
y_sum = (y + y2) / 7
y_sum += abs(min(y_sum))
data = y_sum * 50 + 60
# data = np.int32(data)
length = 50
X = [data[i-length: i+1] for i in range(length, len(data)-1)]
y = [1 if data[i+1] - data[i] > 0 else 0 for i in range(length, len(data)-1)]
split_len = int(len(X) * 0.8)
X_train = np.array(X[:split_len])
y_train = np.array(y[:split_len])
X_test = np.array(X[split_len:])
y_test = np.array(y[split_len:])
model = Sequential()
model.add(Conv1D(64, kernel_size=3, activation='relu', input_shape=(length+1, 1)))
model.add(MaxPooling1D(pool_size=2))
model.add(Conv1D(128, kernel_size=3, activation='relu'))
model.add(MaxPooling1D(pool_size=2))
model.add(Conv1D(64, kernel_size=3, activation='relu'))
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X_train, y_train, batch_size=32, epochs=100, validation_split=0.2)
loss, accuracy = model.evaluate(X_test, y_test)
print('Test Loss:', loss)
print('Test Accuracy:', accuracy)
실행하면 다음과 같습니다.
19/19 [==============================] - 3s 9ms/step - loss: 1.6411 - accuracy: 0.5750 - val_loss: 0.5990 - val_accuracy: 0.7237
Epoch 2/100
19/19 [==============================] - 0s 3ms/step - loss: 0.5941 - accuracy: 0.6969 - val_loss: 0.6195 - val_accuracy: 0.6382
Epoch 3/100
19/19 [==============================] - 0s 3ms/step - loss: 0.5334 - accuracy: 0.7199 - val_loss: 0.5280 - val_accuracy: 0.7434
Epoch 4/100
19/19 [==============================] - 0s 3ms/step - loss: 0.5123 - accuracy: 0.7216 - val_loss: 0.5085 - val_accuracy: 0.7500
Epoch 5/100
19/19 [==============================] - 0s 3ms/step - loss: 0.5097 - accuracy: 0.7348 - val_loss: 0.5451 - val_accuracy: 0.6382
Epoch 6/100
19/19 [==============================] - 0s 3ms/step - loss: 0.4938 - accuracy: 0.7348 - val_loss: 0.4871 - val_accuracy: 0.7171
Epoch 7/100
19/19 [==============================] - 0s 3ms/step - loss: 0.4669 - accuracy: 0.7825 - val_loss: 0.4387 - val_accuracy: 0.7895
Epoch 8/100
19/19 [==============================] - 0s 3ms/step - loss: 0.4430 - accuracy: 0.7924 - val_loss: 0.4158 - val_accuracy: 0.8092
Epoch 9/100
19/19 [==============================] - 0s 3ms/step - loss: 0.4483 - accuracy: 0.7858 - val_loss: 0.4351 - val_accuracy: 0.7566
Epoch 10/100
19/19 [==============================] - 0s 3ms/step - loss: 0.4213 - accuracy: 0.8072 - val_loss: 0.3922 - val_accuracy: 0.8092
Epoch 11/100
19/19 [==============================] - 0s 3ms/step - loss: 0.3909 - accuracy: 0.8270 - val_loss: 0.3746 - val_accuracy: 0.8158
Epoch 12/100
19/19 [==============================] - 0s 3ms/step - loss: 0.3748 - accuracy: 0.8320 - val_loss: 0.3417 - val_accuracy: 0.8421
Epoch 13/100
19/19 [==============================] - 0s 3ms/step - loss: 0.3840 - accuracy: 0.8171 - val_loss: 0.3275 - val_accuracy: 0.8618
Epoch 14/100
19/19 [==============================] - 0s 3ms/step - loss: 0.3402 - accuracy: 0.8484 - val_loss: 0.3873 - val_accuracy: 0.8026
Epoch 15/100
19/19 [==============================] - 0s 3ms/step - loss: 0.3328 - accuracy: 0.8402 - val_loss: 0.2741 - val_accuracy: 0.8750
Epoch 16/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2998 - accuracy: 0.8731 - val_loss: 0.2821 - val_accuracy: 0.8750
Epoch 17/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2986 - accuracy: 0.8682 - val_loss: 0.2836 - val_accuracy: 0.8684
Epoch 18/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2799 - accuracy: 0.8830 - val_loss: 0.3651 - val_accuracy: 0.8421
Epoch 19/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2716 - accuracy: 0.8699 - val_loss: 0.2666 - val_accuracy: 0.8750
Epoch 20/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2689 - accuracy: 0.8847 - val_loss: 0.2811 - val_accuracy: 0.8553
Epoch 21/100
19/19 [==============================] - 0s 3ms/step - loss: 0.3101 - accuracy: 0.8484 - val_loss: 0.2641 - val_accuracy: 0.8816
Epoch 22/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2756 - accuracy: 0.8781 - val_loss: 0.2594 - val_accuracy: 0.8618
Epoch 23/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2818 - accuracy: 0.8699 - val_loss: 0.3033 - val_accuracy: 0.8684
Epoch 24/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2606 - accuracy: 0.8731 - val_loss: 0.2436 - val_accuracy: 0.8947
Epoch 25/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2615 - accuracy: 0.8781 - val_loss: 0.2342 - val_accuracy: 0.8816
Epoch 26/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2797 - accuracy: 0.8748 - val_loss: 0.2504 - val_accuracy: 0.8750
Epoch 27/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2615 - accuracy: 0.8781 - val_loss: 0.2662 - val_accuracy: 0.8618
Epoch 28/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2668 - accuracy: 0.8764 - val_loss: 0.2941 - val_accuracy: 0.8684
Epoch 29/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2826 - accuracy: 0.8682 - val_loss: 0.2881 - val_accuracy: 0.8750
Epoch 30/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2844 - accuracy: 0.8616 - val_loss: 0.2518 - val_accuracy: 0.8882
Epoch 31/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2789 - accuracy: 0.8748 - val_loss: 0.2424 - val_accuracy: 0.8816
Epoch 32/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2511 - accuracy: 0.8731 - val_loss: 0.2452 - val_accuracy: 0.8750
Epoch 33/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2507 - accuracy: 0.8896 - val_loss: 0.2615 - val_accuracy: 0.8750
Epoch 34/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2915 - accuracy: 0.8616 - val_loss: 0.2843 - val_accuracy: 0.8487
Epoch 35/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2930 - accuracy: 0.8797 - val_loss: 0.3587 - val_accuracy: 0.8421
Epoch 36/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2727 - accuracy: 0.8666 - val_loss: 0.2308 - val_accuracy: 0.9145
Epoch 37/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2633 - accuracy: 0.8731 - val_loss: 0.2321 - val_accuracy: 0.8750
Epoch 38/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2793 - accuracy: 0.8649 - val_loss: 0.3253 - val_accuracy: 0.8421
Epoch 39/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2617 - accuracy: 0.8814 - val_loss: 0.3619 - val_accuracy: 0.8618
Epoch 40/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2380 - accuracy: 0.8896 - val_loss: 0.2493 - val_accuracy: 0.8750
Epoch 41/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2319 - accuracy: 0.8913 - val_loss: 0.2244 - val_accuracy: 0.8816
Epoch 42/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2261 - accuracy: 0.8929 - val_loss: 0.2432 - val_accuracy: 0.8750
Epoch 43/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2372 - accuracy: 0.9012 - val_loss: 0.2432 - val_accuracy: 0.8750
Epoch 44/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2174 - accuracy: 0.9061 - val_loss: 0.2078 - val_accuracy: 0.9145
Epoch 45/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2362 - accuracy: 0.8979 - val_loss: 0.2724 - val_accuracy: 0.8553
Epoch 46/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2277 - accuracy: 0.8929 - val_loss: 0.2707 - val_accuracy: 0.8684
Epoch 47/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2269 - accuracy: 0.8946 - val_loss: 0.2293 - val_accuracy: 0.8750
Epoch 48/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2257 - accuracy: 0.8995 - val_loss: 0.2294 - val_accuracy: 0.8882
Epoch 49/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2209 - accuracy: 0.9012 - val_loss: 0.2905 - val_accuracy: 0.8553
Epoch 50/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2327 - accuracy: 0.8929 - val_loss: 0.3305 - val_accuracy: 0.8618
Epoch 51/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2245 - accuracy: 0.8896 - val_loss: 0.2535 - val_accuracy: 0.8750
Epoch 52/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2289 - accuracy: 0.8962 - val_loss: 0.1992 - val_accuracy: 0.9145
Epoch 53/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2381 - accuracy: 0.8748 - val_loss: 0.2838 - val_accuracy: 0.8816
Epoch 54/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2249 - accuracy: 0.8830 - val_loss: 0.2056 - val_accuracy: 0.9013
Epoch 55/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2239 - accuracy: 0.9028 - val_loss: 0.2321 - val_accuracy: 0.8816
Epoch 56/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2160 - accuracy: 0.8995 - val_loss: 0.1957 - val_accuracy: 0.9145
Epoch 57/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2238 - accuracy: 0.8913 - val_loss: 0.2571 - val_accuracy: 0.8684
Epoch 58/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2474 - accuracy: 0.8929 - val_loss: 0.1984 - val_accuracy: 0.9013
Epoch 59/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2578 - accuracy: 0.8880 - val_loss: 0.2438 - val_accuracy: 0.8684
Epoch 60/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2255 - accuracy: 0.8946 - val_loss: 0.2079 - val_accuracy: 0.9013
Epoch 61/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2139 - accuracy: 0.8995 - val_loss: 0.2261 - val_accuracy: 0.9079
Epoch 62/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2198 - accuracy: 0.8946 - val_loss: 0.2110 - val_accuracy: 0.8882
Epoch 63/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2189 - accuracy: 0.9028 - val_loss: 0.2168 - val_accuracy: 0.8816
Epoch 64/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2060 - accuracy: 0.9127 - val_loss: 0.2443 - val_accuracy: 0.8684
Epoch 65/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2081 - accuracy: 0.9044 - val_loss: 0.2123 - val_accuracy: 0.9145
Epoch 66/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2131 - accuracy: 0.9012 - val_loss: 0.2168 - val_accuracy: 0.9079
Epoch 67/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2363 - accuracy: 0.8896 - val_loss: 0.2274 - val_accuracy: 0.8684
Epoch 68/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2155 - accuracy: 0.8962 - val_loss: 0.2164 - val_accuracy: 0.9013
Epoch 69/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2183 - accuracy: 0.9012 - val_loss: 0.2024 - val_accuracy: 0.9211
Epoch 70/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2094 - accuracy: 0.8995 - val_loss: 0.2210 - val_accuracy: 0.8750
Epoch 71/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2096 - accuracy: 0.9012 - val_loss: 0.2027 - val_accuracy: 0.8947
Epoch 72/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2102 - accuracy: 0.9012 - val_loss: 0.2595 - val_accuracy: 0.8684
Epoch 73/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2110 - accuracy: 0.8946 - val_loss: 0.2429 - val_accuracy: 0.8750
Epoch 74/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2051 - accuracy: 0.9143 - val_loss: 0.2009 - val_accuracy: 0.8947
Epoch 75/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2113 - accuracy: 0.9077 - val_loss: 0.1938 - val_accuracy: 0.9145
Epoch 76/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2117 - accuracy: 0.8995 - val_loss: 0.2132 - val_accuracy: 0.9013
Epoch 77/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2054 - accuracy: 0.9044 - val_loss: 0.2215 - val_accuracy: 0.8816
Epoch 78/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2129 - accuracy: 0.8946 - val_loss: 0.1940 - val_accuracy: 0.8947
Epoch 79/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2202 - accuracy: 0.8979 - val_loss: 0.2061 - val_accuracy: 0.9079
Epoch 80/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2103 - accuracy: 0.8995 - val_loss: 0.2066 - val_accuracy: 0.8882
Epoch 81/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2169 - accuracy: 0.8962 - val_loss: 0.2113 - val_accuracy: 0.8750
Epoch 82/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2225 - accuracy: 0.9028 - val_loss: 0.2290 - val_accuracy: 0.8684
Epoch 83/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2300 - accuracy: 0.8880 - val_loss: 0.2068 - val_accuracy: 0.9276
Epoch 84/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2071 - accuracy: 0.9077 - val_loss: 0.2418 - val_accuracy: 0.8882
Epoch 85/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2072 - accuracy: 0.9044 - val_loss: 0.1993 - val_accuracy: 0.8947
Epoch 86/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2103 - accuracy: 0.8995 - val_loss: 0.1983 - val_accuracy: 0.9079
Epoch 87/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2092 - accuracy: 0.9028 - val_loss: 0.1967 - val_accuracy: 0.9079
Epoch 88/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2032 - accuracy: 0.9061 - val_loss: 0.2055 - val_accuracy: 0.9013
Epoch 89/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2281 - accuracy: 0.8913 - val_loss: 0.2588 - val_accuracy: 0.8750
Epoch 90/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2158 - accuracy: 0.8946 - val_loss: 0.2232 - val_accuracy: 0.8816
Epoch 91/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2058 - accuracy: 0.9061 - val_loss: 0.2767 - val_accuracy: 0.8618
Epoch 92/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2301 - accuracy: 0.8913 - val_loss: 0.1907 - val_accuracy: 0.9145
Epoch 93/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2286 - accuracy: 0.9028 - val_loss: 0.2530 - val_accuracy: 0.8882
Epoch 94/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2383 - accuracy: 0.8946 - val_loss: 0.1936 - val_accuracy: 0.9079
Epoch 95/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2104 - accuracy: 0.9012 - val_loss: 0.2276 - val_accuracy: 0.8816
Epoch 96/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2128 - accuracy: 0.9044 - val_loss: 0.1996 - val_accuracy: 0.9079
Epoch 97/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2056 - accuracy: 0.9028 - val_loss: 0.1958 - val_accuracy: 0.8882
Epoch 98/100
19/19 [==============================] - 0s 3ms/step - loss: 0.1967 - accuracy: 0.9012 - val_loss: 0.1978 - val_accuracy: 0.9211
Epoch 99/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2105 - accuracy: 0.9061 - val_loss: 0.1948 - val_accuracy: 0.8947
Epoch 100/100
19/19 [==============================] - 0s 3ms/step - loss: 0.2111 - accuracy: 0.8979 - val_loss: 0.1871 - val_accuracy: 0.9145
6/6 [==============================] - 0s 3ms/step - loss: 0.1990 - accuracy: 0.8947
Test Loss: 0.19895000755786896
Test Accuracy: 0.8947368264198303728x90
반응형
'프로그램' 카테고리의 다른 글
| [파이썬] 문제 : 문자열에서 특정 문자들로 분리하기 (0) | 2023.05.26 |
|---|---|
| [파이썬] 문제 : 2,3,4,6를 @@*@@=@@*@@를 만족하는 조건 찾기 (0) | 2023.05.25 |
| [C언어] 문자열 입력 받아 문자,숫자,기타 문자 개수 출력 (0) | 2023.05.23 |
| [파이썬] 문제 : datascience Table 처리(nba데이터) (0) | 2023.05.22 |
| [파이썬] 문제 : tkinter 이미지 축소,확대 (event 인수전달) (0) | 2023.05.22 |
댓글