본문 바로가기

2019년 혁신성장 청년인재 집중양성(빅데이터)/집중양성과정 프로젝트 01

[비트코인 감성분석 프로젝트] 트레인 데이터 전처리 (2)

1. 크롤링한 데이터를 토큰화하여 저장 

 

2. 학습 모델을 만들기 위한 태깅 트레인 데이터

 

이미 있는 코퍼스 활용, 주식의 증감(부호), 증감의 정도

 

워드 투 벡을 통한 학습에서 만들어지는 벡터는 B,C의 경우 사전과 같이 이용 될 수 있음. 하지만 완전히 같은 것은 아님. 왜냐하면 제작 과정을 정확히 알 수 없기 떄문에.

 

A. 사람이 태깅한 감정을 학습시키거나(1: 긍정 0: 중립 -1 :부정)

B. 주식의 오르 내림의 정도로 학습을 시키거나(실제 가격 변화)

C. 주식의 오르 내림의 수준을 수치화 시키거나(ex) -2 : 많이 내려감 -1 내려감 0: 거의 없음 +1 올라감 +2 많이 올라감)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
import pandas as pd
import numpy as np
 
#드라이브 마운트
from google.colab import drive
drive.mount('/content/drive')
 
bitstamp = pd.read_csv('/content/drive/My Drive/BIGCOIN/PREPORCOESSING/bitcoin-historical-data/bitstampUSD_1-min_data_2012-01-01_to_2019-08-12.csv')
train = pd.read_csv('/content/drive/My Drive/BIGCOIN/PREPORCOESSING/트레인데이터/train_clean_timestampchagned')
 
#결측치 제거, 중복값 제거, 인덱스 리셋 
 
bitstamp_na = bitstamp.dropna(axis=0)
bitstamp_dist=bitstamp_na.drop_duplicates()
bitstamp_dist= bitstamp_dist.reset_index(drop=True)
 
 
 
# 길이확인
len(train)
# 0번 값 확인
train["timestamp"][0]
# 마지막 값확인
train["timestamp"][50851]
 
 
 
 
 
#내가 가지고 있는 감성 정보 3일 전후에 대한 비트코인 가격을 가져옴.
 
bitstampLow=bitstamp_dist.loc[bitstamp_dist["Timestamp">=1521506400]
bitstamp= bitstampLow.loc[bitstampLow["Timestamp"<= 1522054500]
 
 
 
 
 
# 인덱스 초기화
 
bitstamp= bitstamp.reset_index(drop=True)
 
 
 
 
 
# 첫번 째 원소의 값은 미리 계산
 
gap_vol_BTC =[11.103887]
gap_vol_Currency =[94594.123561]
gap_weighted_price =[-1.708109]
 
# 차잇값 계산 및 추가
for i in range(1len(bitstamp)):
  gap_vol_BTC.append(bitstamp["Volume_(BTC)"][i]-bitstamp["Volume_(BTC)"][i-1])
  gap_vol_Currency.append(bitstamp["Volume_(Currency)"][i]-bitstamp["Volume_(Currency)"][i-1])
  gap_weighted_price .append(bitstamp["Weighted_Price"][i]-bitstamp["Weighted_Price"][i-1])
 
 
# 길이확인
 
print(len(sign_vol_BTC))
print(len(gap_vol_Currency))
print(len(gap_weighted_price))
 
#데이터프레임에 열 추가
 
bitstamp["gap_vol_BTC"= gap_vol_BTC
bitstamp["gap_vol_Currency"= gap_vol_Currency
bitstamp["gap_weighted_price"= gap_weighted_price
 
 
sign_vol_BTC =[]
sign_vol_currency =[]
sign_vol_weighted_price =[]
 
 
for i in range(len(bitstamp)):
 
  # BTC 거래량 부호
  if bitstamp["Volume_(BTC)"][i] < 0:
  elif bitstamp["Volume_(BTC)"][i] > 0:
  elif bitstamp["Volume_(BTC)"][i] == 0:
  
  #통화 거래량 부호
  if bitstamp["gap_vol_Currency"][i] < 0:
  elif bitstamp["gap_vol_Currency"][i] > 0:
  elif bitstamp["gap_vol_Currency"][i] == 0:
  
  #가격 변화량 부호
  if bitstamp["Weighted_Price"][i] < 0:
  elif bitstamp["Weighted_Price"][i] > 0:
  elif bitstamp["Weighted_Price"][i] == 0:
 
 
 
# bitstamp 데이터 프레임에 열 추가
 
bitstamp["sign_vol_BTC"= sign_vol_BTC
bitstamp["sign_vol_currency"= sign_vol_currency
bitstamp["sign_vol_weighted_price"= sign_vol_weighted_price
 
# train 필요한 열만 선택
 
train = train[["date","timestamp","tweet","sentiment""sent_score" ]]
 
 
 
# 병합을 시행했으나, Timestamp와 timestamp가 다르게 처리되어 병합이 되지 않음. 이름을 바꿔 줌
 
bitstamp.rename(columns={'Timestamp':'timestamp'},inplace=True)
 
 
# train의 timestamp를 기준으로 병합
 
 
#결측치 확인, 결측된 값이 166개 있음. timestamp가 맞지 않는 곳이기 때문에 삭제해야함.
 
 
 
#결측치 제거, 중복값 제거, 인덱스 리셋 
 
merge_train_na = merge_train.dropna(axis=0)
merge_train_dist=merge_train_na.drop_duplicates()
merge_train_reset= merge_train_dist.reset_index(drop=True)
 
 
#결측치 확인
 
 
#csv로 저장
 
merge_train_reset.to_csv("merge_train_reset.csv")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

 

이제 이 트레인 데이터의 트윗을 토큰화 시켜야 한다.

 

 

1
2
3
4
5
6
7
8
9
10
 
# 형태소화된 텍스트를 토큰화
for i in range(clean_train_tweets.size):
  clean_train_tweets[i] = clean_train_tweets[i].split()
# train의 tweet칼럼을 clean_train_tweets의 토큰화된 텍스트로 교체
train["tweet"= clean_train_tweets
# 저장
train.to_csv("train_tokenized.csv")
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs