키워드 : tensorflow2, LSTM, 시계열 예측 재고
2.0이 얼마 동안 릴리스되었습니다 Tensorflow, 찾을 수있는 공식 문서에 추가 학습 자료가 많습니다 새로운 API의 다양한 사용하기 쉬운 사실이지만, 대부분의 블로그 및 코드 FOUND 많이 찾는 당신에게 정량 분석의 일부를 포기하지 않았다 tensorflow 측면에서 우리는 여전히 버전 1.x를 사용하고 2.x는 그렇게 잠시 동안 쓰기에,에 코드를 발견하지 않은, 서로를 격려한다.
수입 순이익 등 NumPy와 수입 PLT의 같은 matplotlib.pyplot 수입 부분 방전 등의 팬더 수입 TF 같은 tensorflow # tensorflow.keras에서 레이어를 가져올 에서 sklearn.preprocessing 오기 MinMaxScaler # 데이터 전처리 부 - 1 # 라이브러리 오기 dataset_train = pd.read_csv ( ' NSE-을 TATAGLOBAL.csv ' ) training_set = dataset_train.iloc [:, 1 : 2 ] .values #의 인쇄 (dataset_train.head ()) #의 피쳐 스케일링 된 SC = MinMaxScaler은 (feature_range = (0, 1 )) training_set_scaled= sc.fit_transform (training_set) # 1 (60)과 시간 단계 1 개 출력 데이터 구조를 생성 X_train를 = [] y_train = [] 에 대한 I 에서 (2035 년 60 범위 ) X_train.append (training_set_scaled [I - 60 : I 0] ) y_train.append (training_set_scaled [I 0]) X_train, y_train = np.array (X_train) np.array (y_train) # 재편 X_train = np.reshape (X_train (X_train.shape [0] X_train.shape [1], 1 )) #의 파트 2 - RNN 구축 # 초기화하는 RNN 회귀 =tf.keras.Sequential () # 제 LSTM 층 일부 드롭 아웃 정규화 추가 regressor.add을 (tf.keras.layers.LSTM (단위 = 50 return_sequences = TRUE, input_shape = (X_train.shape [1], 1 )) ) (tf.keras.layers.Dropout (regressor.add 0.2 )) #을 제 LSTM 층 일부 드롭 아웃 정규화 추가 (= tf.keras.layers.LSTM (단위 = 50 return_sequences regressor.add를 TRUE)) regressor.add (tf.keras.layers.Dropout ( 0.2 )) # 제 LSTM 층 일부 드롭 아웃 정규화 추가 regressor.add를 (= 50 = return_sequences tf.keras.layers.LSTM (단위 는 true)) regressor.add (tf.keras .layers.Dropout ( 0.2)) # 네번째 LSTM 층 일부 드롭 아웃 정규화 추가 regressor.add을 (tf.keras.layers.LSTM (단위 = 50 )) (tf.keras.layers.Dropout (regressor.add 0.2 )) #를 출력 레이어 추가 회귀를 .add (tf.keras.layers.Dense (단위 = 1 )) # RNN의 컴파일 regressor.compile (최적화 = ' 아담 ' , 손실 = ' mean_squared_error ' ) # 트레이닝 세트에 RNN 피팅 regressor.fit (X_train을 y_train, 에포크는 = 100, 32 = BATCH_SIZE ) #의 부 - 3의 결과를 예측을하고 시각화 # 2017의 실제 주가 얻기 dataset_test = pd.read_csv ( ' tatatest.csv ' ) real_stock_price = dataset_test.iloc [2 :, 1 .values] # 2017의 예측 주가 얻기 dataset_total = pd.concat을 ((dataset_train를 [ ' 열기 ' ] dataset_test [ ' 오픈 ' ), 축 = 0) 입력 = dataset_total [LEN (dataset_total) - LEN (dataset_test) - 60 :]. 값 입력 = inputs.reshape (-1, 1 ) 입력 = sc.transform (입력) X_test = [] 위한 I 의 범위 (60, 76 :) X_test.append ([I 입력 - 60 : I 0]) X_test = np.array (X_test) X_test = np.reshape (X_test (X_test.shape [0] X_test .shape [1], 1 )) predicted_stock_price = regressor.predict (X_test) predicted_stock_price = sc.inverse_transform (predicted_stock_price) # 결과의 시각화 plt.plot을 (real_stock_price, 색 = ' 레드 ' , 라벨 = ' 리얼 TATA 주가 ' ) plt.plot (predicted_stock_price, 컬러 = ' 블루' 레이블 = ' 예측 TAT 주가 ' ) plt.title ( ' TATA 주가 예측 ' ) plt.xlabel ( ' 시간 ' ) plt.ylabel ( ' TATA 주가 ' ) plt.legend () plt.show ()
프로젝트 비교 데모,하지만 당신은 기본 프레임 워크를 달성 할 수있는, 그리고 다른 관련 글에서 배운, 우리는 학습의 토론을 환영합니다
사용 세트 타타 데이터는 정말 오랜 시간을 찾고, 울고, (데이터 세트 인덱스가없는 많은 코드를 읽기) 매우 찾기 어렵다.