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
9092566a
Commit
9092566a
authored
Aug 09, 2021
by
KangMin An
Browse files
Update: 데이터 분석 모델 수정.
parent
41d5b0e1
Changes
8
Show whitespace changes
Inline
Side-by-side
client/src/components/ChartTemp.js
View file @
9092566a
...
...
@@ -13,31 +13,37 @@ function ChartTemp() {
useEffect
(()
=>
{
if
(
isLogined
())
{
axios
.
get
(
routesClient
.
userWeather
,
{
withCredentials
:
true
})
axios
.
get
(
routesClient
.
userWeather
,
{
withCredentials
:
true
})
.
then
((
res
)
=>
{
console
.
log
(
'
temp
'
,
res
.
data
.
contents
)
const
userWeather
=
res
.
data
.
contents
.
weather_in
const
userWeatherPredict
=
res
.
data
.
contents
.
weather_predict
const
Array
=
[]
const
Array2
=
[]
console
.
log
(
"
temp
"
,
res
.
data
.
contents
)
;
const
userWeather
=
res
.
data
.
contents
.
weather_in
;
const
userWeatherPredict
=
res
.
data
.
contents
.
weather_predict
;
const
Array
=
[]
;
const
Array2
=
[]
;
for
(
let
i
=
3
;
i
<
9
;
i
++
)
{
Array
.
push
(
userWeather
[
i
].
temp
)
Array2
.
push
(
userWeather
[
i
].
collected_at
.
split
(
'
T
'
)[
1
].
split
(
'
.
'
)[
0
])
Array
.
push
(
userWeather
[
i
].
temp
);
Array2
.
push
(
userWeather
[
i
].
collected_at
.
split
(
"
T
"
)[
1
].
split
(
"
.
"
)[
0
]
);
}
for
(
let
j
=
0
;
j
<
3
;
j
++
)
{
Array
.
push
(
userWeatherPredict
[
j
].
temp
)
Array2
.
push
(
userWeatherPredict
[
j
].
collected_at
.
split
(
'
T
'
)[
1
].
split
(
'
.
'
)[
0
])
Array
.
push
(
userWeatherPredict
[
j
].
temp
);
Array2
.
push
(
userWeatherPredict
[
j
].
collected_at
.
split
(
"
T
"
)[
1
].
split
(
"
.
"
)[
0
]
);
}
setTemp
(
Array
)
setNewLabel
(
Array2
)
})
setTemp
(
Array
)
;
setNewLabel
(
Array2
)
;
})
;
}
else
{
axios
.
get
(
routesClient
.
outsideLoc
+
`3743011`
).
then
((
res
)
=>
{
const
outWeather
=
res
.
data
.
contents
.
weather_out
;
const
Array
=
[];
const
Array2
=
[];
console
.
log
(
outWeather
);
let
i
=
outWeather
.
length
-
9
;
// let i = outWeather.length - 9;
let
i
=
0
;
for
(
i
;
i
<
outWeather
.
length
;
i
++
)
{
Array
.
push
(
outWeather
[
i
].
temp
);
Array2
.
push
(
outWeather
[
i
].
collected_at
.
split
(
"
T
"
)[
1
].
split
(
"
.
"
)[
0
]);
...
...
server/.gitignore
View file @
9092566a
...
...
@@ -16,3 +16,4 @@ __pycache__
src/data_processing/temp.csv
src/data_processing/model.h5
src/data_processing/config.py
src/data_processing/models
server/data/LocCodeData.js
deleted
100644 → 0
View file @
41d5b0e1
This source diff could not be displayed because it is too large. You can
view the blob
instead.
server/src/data_processing/main.py
View file @
9092566a
...
...
@@ -20,7 +20,6 @@ dbconfig = {"host": DB["host"], "port": DB["port"], "user": DB["user"],
"password"
:
DB
[
"password"
],
"database"
:
DB
[
"database"
]}
data_dir
=
os
.
getcwd
()
+
"/src/data_processing/temp.csv"
model_dir
=
os
.
getcwd
()
+
"/src/data_processing/model.h5"
def
makeDateForm
():
...
...
@@ -51,33 +50,28 @@ for user in users:
standard_df
,
mean_df
,
std_df
=
preprocess
(
cursor
,
host
)
# 데이터 분석
modeling
(
standard_df
)
modeling
(
standard_df
,
host
[
"email"
]
)
# 데이터 분석 결과 저장
collected_at
=
makeDateForm
()
model_file
=
open
(
model_dir
,
'rb'
)
model_file_data
=
model_file
.
read
(
)
model_file
_path
=
"/src/data_processing/models/{0}/model.h5"
.
format
(
host
[
"email"
]
)
params
=
{
"mean"
:
mean_df
.
to_json
(),
"std"
:
std_df
.
to_json
()}
cursor
.
execute
(
"INSERT INTO
\"
Data_Processings
\"
(host,collected_at,model_file,params) VALUES (%s,%s,%s,%s)"
,
cursor
.
execute
(
"INSERT INTO
\"
Data_Processings
\"
(host,collected_at,model_file
_path
,params) VALUES (%s,%s,%s,%s)"
,
(
host
[
"email"
],
collected_at
,
model_file_
d
at
a
,
model_file_
p
at
h
,
Json
(
params
),))
connection
.
commit
()
model_file
.
close
()
if
os
.
path
.
isfile
(
data_dir
):
os
.
remove
(
data_dir
)
if
os
.
path
.
isfile
(
model_dir
):
os
.
remove
(
model_dir
)
# Cursor와 Connection 종료
cursor
.
close
()
connection
.
close
()
server/src/data_processing/model.py
View file @
9092566a
...
...
@@ -3,7 +3,7 @@ import os
import
tensorflow
as
tf
def
modeling
(
standard_df
):
def
modeling
(
standard_df
,
host
):
n
=
len
(
standard_df
)
test_size
=
int
(
0.3
*
n
)
...
...
@@ -43,4 +43,5 @@ def modeling(standard_df):
model
.
compile
(
loss
=
'mse'
,
optimizer
=
'adam'
)
# model.fit(train_feature, train_label, epochs=50, batch_size=1000)
model
.
save
(
os
.
getcwd
()
+
'/src/data_processing/model.h5'
)
model
.
save
(
os
.
getcwd
()
+
'/src/data_processing/models/{0}/model.h5'
.
format
(
host
))
server/src/data_processing/prediction.py
View file @
9092566a
...
...
@@ -10,7 +10,6 @@ import tensorflow as tf
import
numpy
as
np
if
__name__
==
"__main__"
:
dbconfig
=
{
"host"
:
DB
[
"host"
],
"port"
:
DB
[
"port"
],
"user"
:
DB
[
"user"
],
...
...
@@ -18,7 +17,6 @@ if __name__ == "__main__":
user_email
=
sys
.
argv
[
1
]
data_dir
=
os
.
getcwd
()
+
"/src/data_processing/temp.csv"
model_dir
=
os
.
getcwd
()
+
"/src/data_processing/model.h5"
# DB Connect and Make Cursor
connection
=
psycopg2
.
connect
(
...
...
@@ -27,13 +25,10 @@ if __name__ == "__main__":
# Get Model and Params, then Make File and Variable
cursor
.
execute
(
"SELECT model_file, params FROM
\"
Data_Processings
\"
WHERE host=%s"
,
(
user_email
,))
"SELECT model_file
_path
, params FROM
\"
Data_Processings
\"
WHERE host=%s"
,
(
user_email
,))
model_params
=
cursor
.
fetchone
()
blob_model
=
model_params
[
0
]
model_file
=
open
(
model_dir
,
"wb"
)
model_file
.
write
(
blob_model
)
model_file
.
close
()
model_file_path
=
model_params
[
0
]
params
=
model_params
[
1
]
mean
=
json
.
loads
(
params
[
"mean"
])
...
...
@@ -90,16 +85,12 @@ if __name__ == "__main__":
for
col
in
feature_cols
:
new_data
[
col
]
=
(
new_data
[
col
]
-
mean
[
col
])
/
std
[
col
]
model_pro
=
tf
.
keras
.
models
.
load_model
(
model_dir
)
model_pro
=
tf
.
keras
.
models
.
load_model
(
os
.
getcwd
()
+
model_file_path
)
prediction
=
model_pro
.
predict
(
new_data
)
prediction
=
prediction
*
std
[
'temp_out'
]
+
mean
[
'temp_out'
]
# 사용한 파일 삭제
if
os
.
path
.
isfile
(
data_dir
):
os
.
remove
(
data_dir
)
if
os
.
path
.
isfile
(
model_dir
):
os
.
remove
(
model_dir
)
print
(
prediction
)
server/src/db/eue.sql
deleted
100644 → 0
View file @
41d5b0e1
/*
# EUE Server Database Schema
- DataBase : PostgreSQL
- 실제 서버 동작시 Sequelize가 models 디렉토리의 모델들에 따라 테이블을 생성합니다. 따라서 해당 SQL파일은 참고용으로 사용합니다.
1. LOC_DO
- 행정구역 도/특별시/특별자치시 이름과 코드 저장
- LOCSIGUNGU와 LOC_EMD에 참조됨
2. LOC_SGG
- 행정구역 시/군/구 이름과 코드 저장
- LOC_DO를 참조
- LOC_EMD에 참조됨
3. LOC_EMD
- 행정구역 읍/면/동 이름과 코드
- LOC_DO와 LOC_SGG를 참조
- USERS와 WEATHER_OUT에 참조됨
4. USERS
- 사용자 ID, PassWord, 거주지역코드
- LOC_EMD를 참조
5. WEATHER_IN
- 사용자 ID, 수집 날짜 및 시간, 온도, 습도, 광도
- USERS와 LOC_EMD 참조
6. WEATHER_OUT
- 지역 코드, 수집 날짜 및 시간, 온도, 습도, 기압, 풍속
- LOC_EMD 참조
*/
CREATE
TABLE
DOE
(
CODE
INT
NOT
NULL
,
NAME_DO
VARCHAR
(
20
)
NOT
NULL
,
PRIMARY
KEY
(
CODE_DO
)
);
CREATE
TABLE
SGG
(
CODE
INT
NOT
NULL
,
CODE_DO
INT
NOT
NULL
,
NAME_SGG
VARCHAR
(
20
)
NOT
NULL
,
PRIMARY
KEY
(
CODE
),
FOREIGN
KEY
(
CODE_DO
)
REFERENCES
DO
(
CODE
)
ON
UPDATE
CASCADE
ON
DELETE
RESTRICT
);
CREATE
TABLE
EMD
(
CODE
INT
NOT
NULL
,
CODE_DO
INT
NOT
NULL
,
CODE_SGG
INT
NOT
NULL
,
NAME_EMD
VARCHAR
(
20
)
NOT
NULL
,
PRIMARY
KEY
(
CODE
),
FOREIGN
KEY
(
CODE_DO
)
REFERENCES
DO
(
CODE
)
ON
UPDATE
CASCADE
ON
DELETE
RESTRICT
,
FOREIGN
KEY
(
CODE_SGG
)
REFERENCES
SGG
(
CODE
)
ON
UPDATE
CASCADE
ON
DELETE
RESTRICT
);
CREATE
TABLE
USERS
(
EMAIL
VARCHAR
(
320
)
UNIQUE
NOT
NULL
,
PW
VARCHAR
(
20
)
NOT
NULL
,
LOC_CODE
INT
NOT
NULL
,
PRIMARY
KEY
(
EMAIL
),
FOREIGN
KEY
(
LOC_CODE
)
REFERENCES
EMD
(
CODE
)
ON
UPDATE
CASCADE
ON
DELETE
RESTRICT
);
CREATE
TABLE
WEATHER_IN
(
HOST
VARCHAR
(
320
)
NOT
NULL
,
COLLECTED_AT
TIMESTAMP
NOT
NULL
,
TEMP
FLOAT
DEFAULT
0
,
HUMI
FLOAT
DEFAULT
0
,
LIGHTS
FLOAT
DEFAULT
0
,
PRIMARY
KEY
(
EMAIL
,
COLLECTED_AT
),
FOREIGN
KEY
(
EMAIL
)
REFERENCES
USERS
(
EMAIL
)
ON
UPDATE
CASCADE
ON
DELETE
RESTRICT
);
CREATE
TABLE
WEATHER_OUT
(
LOC_CODE
INT
NOT
NULL
,
COLLECTED_AT
TIMESTAMP
NOT
NULL
,
TEMP
FLOAT
DEFAULT
0
,
HUMI
FLOAT
DEFAULT
0
,
PRESS
FLOAT
DEFAULT
0
,
WIND_SPEED
FLOAT
DEFAULT
0
,
PRIMARY
KEY
(
LOC_CODE
,
COLLECTED_AT
),
FOREIGN
KEY
(
LOC_CODE
)
REFERENCES
EMD
(
CODE
)
ON
UPDATE
CASCADE
ON
DELETE
RESTRICT
);
\ No newline at end of file
server/src/models/data_processing.js
View file @
9092566a
...
...
@@ -18,8 +18,8 @@ export class Data_Processing extends Model {
primaryKey
:
true
,
defaultValue
:
Date
.
now
(),
},
model_file
:
{
type
:
DataTypes
.
BLOB
,
model_file
_path
:
{
type
:
DataTypes
.
STRING
,
},
params
:
{
type
:
DataTypes
.
JSON
,
...
...
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