Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
students
eue
Commits
4ca38377
Commit
4ca38377
authored
May 27, 2021
by
KangMin An
Browse files
Update : 데이터 처리 코드 일부 수정 및 주석 갱신.
parent
81b7e5fa
Changes
4
Show whitespace changes
Inline
Side-by-side
server/src/data_processing/linear_regression.py
View file @
4ca38377
...
@@ -11,11 +11,12 @@ import numpy as np
...
@@ -11,11 +11,12 @@ import numpy as np
class
LinearRegression
:
class
LinearRegression
:
def
__init__
(
self
,
train_x
,
train_t
,
weights
,
bias
,
delta
=
1e-4
,
learning_rate
=
0.05
,
err_rate
=
0.01
):
def
__init__
(
self
,
train_x
,
train_t
,
weights
=
None
,
bias
=
None
,
delta
=
1e-4
,
learning_rate
=
0.05
,
err_rate
=
0.01
):
self
.
train_x
=
train_x
.
T
# (n, 10) -> (10, n)
self
.
train_x
=
train_x
.
T
# (n, 10) -> (10, n)
self
.
train_t
=
train_t
.
T
# (n, 01) -> (01, n)
self
.
train_t
=
train_t
.
T
# (n, 01) -> (01, n)
if
weights
==
None
or
bias
==
None
:
# weights와 bias가 존재하지 않는 경우, 초기화를 위해 bias를 대표로 확인
if
bias
==
None
:
# Initialize Parameters - w : (1, 10), b : float
# Initialize Parameters - w : (1, 10), b : float
self
.
weights
,
self
.
bias
=
self
.
initialize
(
self
.
train_x
)
self
.
weights
,
self
.
bias
=
self
.
initialize
(
self
.
train_x
)
else
:
else
:
...
...
server/src/data_processing/main.py
View file @
4ca38377
...
@@ -34,8 +34,6 @@ def storeParameters(link, filename, data):
...
@@ -34,8 +34,6 @@ def storeParameters(link, filename, data):
dbconfig
=
{
"host"
:
sys
.
argv
[
1
],
"user"
:
sys
.
argv
[
2
],
dbconfig
=
{
"host"
:
sys
.
argv
[
1
],
"user"
:
sys
.
argv
[
2
],
"password"
:
sys
.
argv
[
3
],
"database"
:
sys
.
argv
[
4
]}
"password"
:
sys
.
argv
[
3
],
"database"
:
sys
.
argv
[
4
]}
print
(
dbconfig
)
eue_db
=
pymysql
.
connect
(
user
=
dbconfig
[
"user"
],
password
=
dbconfig
[
"password"
],
eue_db
=
pymysql
.
connect
(
user
=
dbconfig
[
"user"
],
password
=
dbconfig
[
"password"
],
host
=
dbconfig
[
"host"
],
db
=
dbconfig
[
"database"
],
charset
=
'utf8'
)
host
=
dbconfig
[
"host"
],
db
=
dbconfig
[
"database"
],
charset
=
'utf8'
)
cursor
=
eue_db
.
cursor
(
pymysql
.
cursors
.
DictCursor
)
cursor
=
eue_db
.
cursor
(
pymysql
.
cursors
.
DictCursor
)
...
@@ -44,6 +42,7 @@ query = "SELECT ID,DATALINK FROM USER;"
...
@@ -44,6 +42,7 @@ query = "SELECT ID,DATALINK FROM USER;"
cursor
.
execute
(
query
)
cursor
.
execute
(
query
)
result
=
cursor
.
fetchall
()
result
=
cursor
.
fetchall
()
# Main Process
for
userdata
in
result
:
for
userdata
in
result
:
print
(
"User ID : "
,
userdata
[
"ID"
])
print
(
"User ID : "
,
userdata
[
"ID"
])
...
@@ -53,6 +52,7 @@ for userdata in result:
...
@@ -53,6 +52,7 @@ for userdata in result:
# ./data/DO/SGG/EMD/Users/ID
# ./data/DO/SGG/EMD/Users/ID
user_datalink
=
userdata
[
"DATALINK"
]
user_datalink
=
userdata
[
"DATALINK"
]
dir_ls
=
user_datalink
.
split
(
"/"
)
dir_ls
=
user_datalink
.
split
(
"/"
)
# ./data/DO/SGG/EMD/Outside
# ./data/DO/SGG/EMD/Outside
outside_datalink
=
(
"/"
).
join
(
dir_ls
[:
-
2
])
+
"/Outside"
outside_datalink
=
(
"/"
).
join
(
dir_ls
[:
-
2
])
+
"/Outside"
...
@@ -65,55 +65,28 @@ for userdata in result:
...
@@ -65,55 +65,28 @@ for userdata in result:
bias
,
learning_rate
=
0.05
)
bias
,
learning_rate
=
0.05
)
model
.
gradientDescent
()
model
.
gradientDescent
()
# Save the Parameters.
# - analysis_parameters
analysis_data
=
""
'''
for
i
in
range
(
len
(
model
.
weights
[
0
])):
# Test Codes Start.
'''
print
(
"After Linear Regression -
\n
"
)
test_data
=
np
.
array
([[
5
],
[
20
],
[
0
],
[
16.87
],
[
40
],
[
1011
],
[
0.72
],
[
26.70
],
[
47.00
],
[
64
]])
test_data
=
(
test_data
-
mean
)
/
std_d
y_hat
=
model
.
predict
(
test_data
,
model
.
weights
,
model
.
bias
)
print
(
"Test Data.
\n
"
,
test_data
,
"
\n
"
)
print
(
"Predict - standard deviation : "
,
y_hat
)
print
(
"Predict - temperature : "
,
y_hat
*
std_d
[
7
][
0
]
+
mean
[
7
][
0
],
"
\n
"
)
print
(
"Cost."
)
print
(
model
.
cost_MSE
(
model
.
train_x
,
model
.
train_t
,
model
.
weights
,
model
.
bias
),
"
\n
"
)
print
(
"Weights."
)
print
(
model
.
weights
,
"
\n
"
)
print
(
"Bias."
)
print
(
model
.
bias
)
'''
# Test Codes End.
'''
# Save the Parameters.
# - analysis_parameters
analysis_data
=
""
for
i
in
range
(
len
(
model
.
weights
[
0
])):
analysis_data
+=
str
(
model
.
weights
[
0
][
i
])
+
','
analysis_data
+=
str
(
model
.
weights
[
0
][
i
])
+
','
analysis_data
+=
str
(
model
.
bias
)
storeParameters
(
user_datalink
,
"/analysis_parameters.csv"
,
analysis_data
)
analysis_data
+=
str
(
model
.
bias
)
storeParameters
(
user_datalink
,
"/analysis_parameters.csv"
,
analysis_data
)
# - prediction_parameters
# - prediction_parameters
prediction_data
=
""
prediction_data
=
""
for
i
in
range
(
len
(
mean
)):
for
i
in
range
(
len
(
mean
)):
prediction_data
+=
str
(
mean
[
i
][
0
])
+
','
prediction_data
+=
str
(
mean
[
i
][
0
])
+
','
prediction_data
=
prediction_data
[:
-
1
]
prediction_data
=
prediction_data
[:
-
1
]
prediction_data
+=
'
\n
'
prediction_data
+=
'
\n
'
for
i
in
range
(
len
(
std_d
)):
for
i
in
range
(
len
(
std_d
)):
prediction_data
+=
str
(
std_d
[
i
][
0
])
+
','
prediction_data
+=
str
(
std_d
[
i
][
0
])
+
','
prediction_data
=
prediction_data
[:
-
1
]
prediction_data
=
prediction_data
[:
-
1
]
storeParameters
(
storeParameters
(
user_datalink
,
"/prediction_parameters.csv"
,
prediction_data
)
user_datalink
,
"/prediction_parameters.csv"
,
prediction_data
)
server/src/data_processing/preprocessing.py
View file @
4ca38377
...
@@ -34,7 +34,6 @@ def loadRawData(link, file_name):
...
@@ -34,7 +34,6 @@ def loadRawData(link, file_name):
return
None
return
None
data_file
=
open
(
file_dir
,
'r'
,
newline
=
''
)
data_file
=
open
(
file_dir
,
'r'
,
newline
=
''
)
print
(
"Data File before CSV reader.
\n
"
,
data_file
)
csv_data
=
csv
.
reader
(
data_file
)
csv_data
=
csv
.
reader
(
data_file
)
for
line
in
csv_data
:
for
line
in
csv_data
:
...
@@ -47,7 +46,7 @@ def loadRawData(link, file_name):
...
@@ -47,7 +46,7 @@ def loadRawData(link, file_name):
def
handleUserRawData
(
user_data
):
def
handleUserRawData
(
user_data
):
'''
'''
# User Raw Data (CSV 파일 데이터) 가공 함수
#
##
User Raw Data (CSV 파일 데이터) 가공 함수
- [ 월 / 일 / 시 / 분 / 온도 / 습도 / 광도 ]의 데이터를 변환하는 함수
- [ 월 / 일 / 시 / 분 / 온도 / 습도 / 광도 ]의 데이터를 변환하는 함수
- 월 / 일 / 분 제거
- 월 / 일 / 분 제거
- test_data(분이 제거된 데이터)와 true_data(단위 시간 후 실제 온도)로 나누기
- test_data(분이 제거된 데이터)와 true_data(단위 시간 후 실제 온도)로 나누기
...
@@ -72,7 +71,7 @@ def handleUserRawData(user_data):
...
@@ -72,7 +71,7 @@ def handleUserRawData(user_data):
def
handleOutRawData
(
out_data
):
def
handleOutRawData
(
out_data
):
'''
'''
# Out Raw Data (CSV 파일 데이터) 가공 함수
#
##
Out Raw Data (CSV 파일 데이터) 가공 함수
- [ 월 / 일 / 시 / 분 / 온도 / 습도 / 기압 / 풍속 ] 데이터를 변환하는 함수
- [ 월 / 일 / 시 / 분 / 온도 / 습도 / 기압 / 풍속 ] 데이터를 변환하는 함수
- '분' 을 제거합니다.
- '분' 을 제거합니다.
- 같은 시각의 데이터들은 평균을 구해서 데이터로 저장합니다.
- 같은 시각의 데이터들은 평균을 구해서 데이터로 저장합니다.
...
@@ -114,6 +113,11 @@ def handleOutRawData(out_data):
...
@@ -114,6 +113,11 @@ def handleOutRawData(out_data):
def
handleParameters
(
raw_w
):
def
handleParameters
(
raw_w
):
'''
### Weights & Bias를 처리하는 함수
- raw 데이터는 weights와 bias가 합쳐진 상태입니다.
- raw 데이터를 하나씩 잘라 실수로 변환한 뒤, 마지막의 편향을 잘라냅니다.
'''
if
raw_w
==
None
:
if
raw_w
==
None
:
return
None
,
None
return
None
,
None
...
@@ -131,7 +135,7 @@ def handleParameters(raw_w):
...
@@ -131,7 +135,7 @@ def handleParameters(raw_w):
def
combineXdata
(
user_x
,
out_dict
):
def
combineXdata
(
user_x
,
out_dict
):
'''
'''
# 분리된 입력 데이터를 합치는 함수
#
##
분리된 입력 데이터를 합치는 함수
- 사용자 데이터와 외부 데이터를 결합해 입력층의 값으로 가공합니다.
- 사용자 데이터와 외부 데이터를 결합해 입력층의 값으로 가공합니다.
'''
'''
train_x
=
[]
train_x
=
[]
...
@@ -160,6 +164,7 @@ def Xnormalize(data):
...
@@ -160,6 +164,7 @@ def Xnormalize(data):
'''
'''
### 정규화 함수
### 정규화 함수
- 입력 층의 데이터를 정규화 시킵니다.
- 입력 층의 데이터를 정규화 시킵니다.
- 월, 일 데이터의 평균과 표준 편차를 계산하여 값을 수정합니다.
'''
'''
normalized_data
=
data
.
T
# (n,10) -> (10,n)
normalized_data
=
data
.
T
# (n,10) -> (10,n)
...
@@ -195,8 +200,13 @@ def Xnormalize(data):
...
@@ -195,8 +200,13 @@ def Xnormalize(data):
return
normalized_data
,
new_mean
,
new_std_d
return
normalized_data
,
new_mean
,
new_std_d
def
normalize
(
data
):
def
Tnormalize
(
data
):
n_data
=
data
.
T
# (n,10) -> (10,n)
'''
### 데이터 정규화 함수
- 평균과 표준 편차를 이용해 입력된 데이터를 정규화 시킵니다.
- 현재 입력층의 데이터가 아닌 train 데이터의 참 값을 표준화 시킵니다.
'''
n_data
=
data
.
T
# (n,1) -> (1,n)
mean
=
np
.
mean
(
n_data
,
axis
=
1
)
# 평균
mean
=
np
.
mean
(
n_data
,
axis
=
1
)
# 평균
std_d
=
np
.
std
(
n_data
,
axis
=
1
)
# 표준편차
std_d
=
np
.
std
(
n_data
,
axis
=
1
)
# 표준편차
...
@@ -210,14 +220,13 @@ def normalize(data):
...
@@ -210,14 +220,13 @@ def normalize(data):
def
preprocessingData
(
user_link
,
out_link
):
def
preprocessingData
(
user_link
,
out_link
):
'''
'''
# 데이터 분석 전 데이터 전처리 함수
입니다.
# 데이터 분석 전 데이터 전처리 함수
1. 데이터 로드
1. 데이터 로드
2. 데이터 1차 가공 (handle~RawData)
2. 데이터 1차 가공 (handle~RawData)
3. 데이터 2차 가공 (combineXdata)
3. 데이터 2차 가공 (combineXdata)
4. 데이터 3차 가공 (nomalize~)
4. 데이터 3차 가공 (nomalize~)
5. 데이터 넘파이 형식 배열로 변환
4. 데이터 넘파이 형식 배열로 변환
6. 반환
5. 반환
'''
'''
raw_user_data
=
loadRawData
(
user_link
,
"/weather.csv"
)
raw_user_data
=
loadRawData
(
user_link
,
"/weather.csv"
)
raw_out_data
=
loadRawData
(
out_link
,
"/weather.csv"
)
raw_out_data
=
loadRawData
(
out_link
,
"/weather.csv"
)
...
@@ -233,7 +242,7 @@ def preprocessingData(user_link, out_link):
...
@@ -233,7 +242,7 @@ def preprocessingData(user_link, out_link):
train_x
,
mean
,
std_d
=
Xnormalize
(
train_x
)
train_x
,
mean
,
std_d
=
Xnormalize
(
train_x
)
train_t
=
np
.
array
(
train_t
)
# (10,1)
train_t
=
np
.
array
(
train_t
)
# (10,1)
train_t
=
normalize
(
train_t
)
train_t
=
T
normalize
(
train_t
)
weights
=
np
.
array
(
weights
)
if
weights
!=
None
else
None
weights
=
np
.
array
(
weights
)
if
weights
!=
None
else
None
bias
=
float
(
bias
)
if
bias
!=
None
else
None
bias
=
float
(
bias
)
if
bias
!=
None
else
None
...
...
server/src/schedules.js
View file @
4ca38377
...
@@ -33,11 +33,12 @@ const dataProcessingJob = schedule.scheduleJob(rule, () => {
...
@@ -33,11 +33,12 @@ const dataProcessingJob = schedule.scheduleJob(rule, () => {
pyprocess
.
stdout
.
on
(
"
data
"
,
(
data
)
=>
{
pyprocess
.
stdout
.
on
(
"
data
"
,
(
data
)
=>
{
console
.
log
(
"
Data processing is start.
"
);
console
.
log
(
"
Data processing is start.
"
);
console
.
log
(
data
.
toString
());
// Buffer to String.
});
});
pyprocess
.
stderr
.
on
(
"
data
"
,
(
error
)
=>
{
pyprocess
.
stderr
.
on
(
"
data
"
,
(
error
)
=>
{
console
.
log
(
"
Error in the data processing.
"
);
console
.
log
(
"
Error in the data processing.
"
);
console
.
log
(
error
);
console
.
log
(
error
.
toString
()
);
});
});
pyprocess
.
on
(
"
close
"
,
()
=>
{
pyprocess
.
on
(
"
close
"
,
()
=>
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment