Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
2
2020-027
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Naduni Ranasinghe
2020-027
Commits
ff1483e2
Commit
ff1483e2
authored
Oct 26, 2020
by
inusha maduranga
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Machine learnning flask project
parent
abc10597
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
349 additions
and
0 deletions
+349
-0
inusha madurnaga/FlaskProject/Pipfile
inusha madurnaga/FlaskProject/Pipfile
+15
-0
inusha madurnaga/FlaskProject/Pipfile.lock
inusha madurnaga/FlaskProject/Pipfile.lock
+178
-0
inusha madurnaga/FlaskProject/app.py
inusha madurnaga/FlaskProject/app.py
+67
-0
inusha madurnaga/FlaskProject/db.yaml
inusha madurnaga/FlaskProject/db.yaml
+5
-0
inusha madurnaga/FlaskProject/model.py
inusha madurnaga/FlaskProject/model.py
+84
-0
No files found.
inusha madurnaga/FlaskProject/Pipfile
0 → 100644
View file @
ff1483e2
[[source]]
name
=
"pypi"
url
=
"https://pypi.org/simple"
verify_ssl
=
true
[dev-packages]
[packages]
flask
=
"*"
flask-sqlalchemy
=
"*"
flask-marshmallow
=
"*"
marshmallow-sqlalchemy
=
"*"
[requires]
python_version
=
"3.7"
inusha madurnaga/FlaskProject/Pipfile.lock
0 → 100644
View file @
ff1483e2
{
"_meta"
:
{
"hash"
:
{
"sha256"
:
"57a7becc58fea173db7f28cd79c4889df39eb68f9df42e9e205c6824b9ae7898"
},
"pipfile-spec"
:
6
,
"requires"
:
{
"python_version"
:
"3.7"
},
"sources"
:
[
{
"name"
:
"pypi"
,
"url"
:
"https://pypi.org/simple"
,
"verify_ssl"
:
true
}
]
},
"default"
:
{
"click"
:
{
"hashes"
:
[
"sha256:d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a"
,
"sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"
],
"markers"
:
"python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'"
,
"version"
:
"==7.1.2"
},
"flask"
:
{
"hashes"
:
[
"sha256:4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060"
,
"sha256:8a4fdd8936eba2512e9c85df320a37e694c93945b33ef33c89946a340a238557"
],
"index"
:
"pypi"
,
"version"
:
"==1.1.2"
},
"flask-marshmallow"
:
{
"hashes"
:
[
"sha256:1da1e6454a56a3e15107b987121729f152325bdef23f3df2f9b52bbd074af38e"
,
"sha256:aefc1f1d96256c430a409f08241bab75ffe97e5d14ac5d1f000764e39bf4873a"
],
"index"
:
"pypi"
,
"version"
:
"==0.13.0"
},
"flask-sqlalchemy"
:
{
"hashes"
:
[
"sha256:05b31d2034dd3f2a685cbbae4cfc4ed906b2a733cff7964ada450fd5e462b84e"
,
"sha256:bfc7150eaf809b1c283879302f04c42791136060c6eeb12c0c6674fb1291fae5"
],
"index"
:
"pypi"
,
"version"
:
"==2.4.4"
},
"itsdangerous"
:
{
"hashes"
:
[
"sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19"
,
"sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749"
],
"markers"
:
"python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'"
,
"version"
:
"==1.1.0"
},
"jinja2"
:
{
"hashes"
:
[
"sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0"
,
"sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"
],
"markers"
:
"python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'"
,
"version"
:
"==2.11.2"
},
"markupsafe"
:
{
"hashes"
:
[
"sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473"
,
"sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161"
,
"sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235"
,
"sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5"
,
"sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42"
,
"sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff"
,
"sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"
,
"sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1"
,
"sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e"
,
"sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183"
,
"sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66"
,
"sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b"
,
"sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1"
,
"sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15"
,
"sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1"
,
"sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e"
,
"sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b"
,
"sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905"
,
"sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735"
,
"sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d"
,
"sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e"
,
"sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d"
,
"sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"
,
"sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21"
,
"sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"
,
"sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5"
,
"sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b"
,
"sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"
,
"sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f"
,
"sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f"
,
"sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2"
,
"sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"
,
"sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"
],
"markers"
:
"python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'"
,
"version"
:
"==1.1.1"
},
"marshmallow"
:
{
"hashes"
:
[
"sha256:67bf4cae9d3275b3fc74bd7ff88a7c98ee8c57c94b251a67b031dc293ecc4b76"
,
"sha256:a2a5eefb4b75a3b43f05be1cca0b6686adf56af7465c3ca629e5ad8d1e1fe13d"
],
"markers"
:
"python_version >= '3.5'"
,
"version"
:
"==3.7.1"
},
"marshmallow-sqlalchemy"
:
{
"hashes"
:
[
"sha256:03a555b610bb307689b821b64e2416593ec21a85925c8c436c2cd08ebc6bb85e"
,
"sha256:0ef59c8da8da2e18e808e3880158049e9d72f3031c84cc804b6c533a0eb668a9"
],
"index"
:
"pypi"
,
"version"
:
"==0.23.1"
},
"six"
:
{
"hashes"
:
[
"sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"
,
"sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"
],
"markers"
:
"python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'"
,
"version"
:
"==1.15.0"
},
"sqlalchemy"
:
{
"hashes"
:
[
"sha256:072766c3bd09294d716b2d114d46ffc5ccf8ea0b714a4e1c48253014b771c6bb"
,
"sha256:107d4af989831d7b091e382d192955679ec07a9209996bf8090f1f539ffc5804"
,
"sha256:15c0bcd3c14f4086701c33a9e87e2c7ceb3bcb4a246cd88ec54a49cf2a5bd1a6"
,
"sha256:26c5ca9d09f0e21b8671a32f7d83caad5be1f6ff45eef5ec2f6fd0db85fc5dc0"
,
"sha256:276936d41111a501cf4a1a0543e25449108d87e9f8c94714f7660eaea89ae5fe"
,
"sha256:3292a28344922415f939ee7f4fc0c186f3d5a0bf02192ceabd4f1129d71b08de"
,
"sha256:33d29ae8f1dc7c75b191bb6833f55a19c932514b9b5ce8c3ab9bc3047da5db36"
,
"sha256:3bba2e9fbedb0511769780fe1d63007081008c5c2d7d715e91858c94dbaa260e"
,
"sha256:465c999ef30b1c7525f81330184121521418a67189053bcf585824d833c05b66"
,
"sha256:51064ee7938526bab92acd049d41a1dc797422256086b39c08bafeffb9d304c6"
,
"sha256:5a49e8473b1ab1228302ed27365ea0fadd4bf44bc0f9e73fe38e10fdd3d6b4fc"
,
"sha256:618db68745682f64cedc96ca93707805d1f3a031747b5a0d8e150cfd5055ae4d"
,
"sha256:6547b27698b5b3bbfc5210233bd9523de849b2bb8a0329cd754c9308fc8a05ce"
,
"sha256:6557af9e0d23f46b8cd56f8af08eaac72d2e3c632ac8d5cf4e20215a8dca7cea"
,
"sha256:73a40d4fcd35fdedce07b5885905753d5d4edf413fbe53544dd871f27d48bd4f"
,
"sha256:8280f9dae4adb5889ce0bb3ec6a541bf05434db5f9ab7673078c00713d148365"
,
"sha256:83469ad15262402b0e0974e612546bc0b05f379b5aa9072ebf66d0f8fef16bea"
,
"sha256:860d0fe234922fd5552b7f807fbb039e3e7ca58c18c8d38aa0d0a95ddf4f6c23"
,
"sha256:883c9fb62cebd1e7126dd683222b3b919657590c3e2db33bdc50ebbad53e0338"
,
"sha256:8afcb6f4064d234a43fea108859942d9795c4060ed0fbd9082b0f280181a15c1"
,
"sha256:96f51489ac187f4bab588cf51f9ff2d40b6d170ac9a4270ffaed535c8404256b"
,
"sha256:9e865835e36dfbb1873b65e722ea627c096c11b05f796831e3a9b542926e979e"
,
"sha256:aa0554495fe06172b550098909be8db79b5accdf6ffb59611900bea345df5eba"
,
"sha256:b595e71c51657f9ee3235db8b53d0b57c09eee74dfb5b77edff0e46d2218dc02"
,
"sha256:b6ff91356354b7ff3bd208adcf875056d3d886ed7cef90c571aef2ab8a554b12"
,
"sha256:b70bad2f1a5bd3460746c3fb3ab69e4e0eb5f59d977a23f9b66e5bdc74d97b86"
,
"sha256:c7adb1f69a80573698c2def5ead584138ca00fff4ad9785a4b0b2bf927ba308d"
,
"sha256:c898b3ebcc9eae7b36bd0b4bbbafce2d8076680f6868bcbacee2d39a7a9726a7"
,
"sha256:e49947d583fe4d29af528677e4f0aa21f5e535ca2ae69c48270ebebd0d8843c0"
,
"sha256:eb1d71643e4154398b02e88a42fc8b29db8c44ce4134cf0f4474bfc5cb5d4dac"
,
"sha256:f2e8a9c0c8813a468aa659a01af6592f71cd30237ec27c4cc0683f089f90dcfc"
,
"sha256:fe7fe11019fc3e6600819775a7d55abc5446dda07e9795f5954fdbf8a49e1c37"
],
"markers"
:
"python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'"
,
"version"
:
"==1.3.19"
},
"werkzeug"
:
{
"hashes"
:
[
"sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43"
,
"sha256:6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c"
],
"markers"
:
"python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'"
,
"version"
:
"==1.0.1"
}
},
"develop"
:
{}
}
inusha madurnaga/FlaskProject/app.py
0 → 100644
View file @
ff1483e2
from
flask
import
Flask
,
request
,
jsonify
,
render_template
,
redirect
import
os
from
flask_mysqldb
import
MySQL
import
yaml
import
model
import
numpy
as
np
# init app
app
=
Flask
(
__name__
)
# Configure db
db
=
yaml
.
load
(
open
(
'db.yaml'
))
# Load data from db.yaml file
app
.
config
[
'MYSQL_HOST'
]
=
db
[
'mysql_host'
]
app
.
config
[
'MYSQL_USER'
]
=
db
[
'mysql_user'
]
app
.
config
[
'MYSQL_PASSWORD'
]
=
db
[
'mysql_password'
]
app
.
config
[
'MYSQL_DB'
]
=
db
[
'mysql_db'
]
mysql
=
MySQL
(
app
)
@
app
.
route
(
'/progress/<uniqueId>'
,
methods
=
[
'get'
])
def
calculate_progress
(
uniqueId
):
gradient_list
=
[]
#Create connection to MYSql
cur
=
mysql
.
connection
.
cursor
()
#get paper numbers of the student
cur
.
execute
(
"SELECT PAPER_NO FROM paper_result_student_final WHERE UNIQUE_ID="
+
uniqueId
)
paper_no_list
=
[
item
[
0
]
for
item
in
cur
.
fetchall
()]
# Fetched data add to the list
for
i
in
range
(
0
,
len
(
paper_no_list
)):
# get paper number one by one
#Initialize list
weight_list
=
[]
time_list
=
[]
time_list_new
=
[]
#get WEIGHT using id and paper number
cur
.
execute
(
"SELECT WEIGHT FROM paper_result_student WHERE UNIQUE_ID= "
+
uniqueId
+
" AND PAPER_NO= "
+
str
(
paper_no_list
[
i
]))
weight_list
=
[
item
[
0
]
for
item
in
cur
.
fetchall
()]
for
w
in
range
(
0
,
len
(
weight_list
)):
weight_list
[
i
]
=
int
(
weight_list
[
w
])
#convert string to int
#get TIME using id and paper number
cur
.
execute
(
"SELECT TIME FROM paper_result_student WHERE UNIQUE_ID= "
+
uniqueId
+
" AND PAPER_NO= "
+
str
(
paper_no_list
[
i
]))
time_list
=
[
item
[
0
]
for
item
in
cur
.
fetchall
()]
#Tuple convert toList
for
t
in
range
(
0
,
len
(
time_list
)):
(
h
,
m
,
s
)
=
time_list
[
t
]
.
split
(
':'
)
#Time split to decimal number
time_in_decimal
=
int
(
h
)
*
3600
+
int
(
m
)
*
60
+
int
(
s
)
time_list_new
.
append
(
time_in_decimal
)
#pass weight_list and time_list_new to the Machine learning MODEL and get gradient
gradient
=
model
.
calculateGradientLinerRegressionAndSVR
(
weight_list
,
time_list_new
)
gradient_list
.
append
(
float
(
gradient
))
#Gradient convert to float and add to the list
#Close the db connections
cur
.
close
()
#gradient_list Convert to numpy array
arr
=
np
.
array
(
gradient_list
)
print
(
arr
.
tolist
())
return
({
'learningProgresList'
:
arr
.
tolist
()})
# return render_template('index2.html', students=data )
# Run Server
if
__name__
==
'__main__'
:
app
.
run
(
debug
=
True
)
inusha madurnaga/FlaskProject/db.yaml
0 → 100644
View file @
ff1483e2
mysql_host
:
'
localhost'
mysql_user
:
'
root'
# Enter your password in field below
mysql_password
:
'
123'
mysql_db
:
'
elearning_db'
\ No newline at end of file
inusha madurnaga/FlaskProject/model.py
0 → 100644
View file @
ff1483e2
# Importing the libraries
import
numpy
as
np
import
pandas
as
pd
import
matplotlib.pyplot
as
plt
from
sklearn
import
metrics
from
sklearn.model_selection
import
train_test_split
from
sklearn.impute
import
SimpleImputer
from
sklearn.linear_model
import
LinearRegression
from
sklearn.metrics
import
r2_score
from
sklearn.svm
import
SVR
def
calculateGradientLinerRegressionAndSVR
(
x_list
,
y_list
):
# -------- Preprocessing Input data -------------------------------------------------------
# Importing the dataset
X
=
np
.
array
(
x_list
)
Y
=
np
.
array
(
y_list
)
# Splitting the dataset into the Training set and Test set
X_train
,
X_test
,
y_train
,
y_test
=
train_test_split
(
X
,
Y
,
test_size
=
0.25
,
random_state
=
0
)
# Reshape (Gives a new shape to an array without changing its data. | 1D Array to 2D Array)
X_train
=
X_train
.
reshape
(
-
1
,
1
)
y_train
=
y_train
.
reshape
(
-
1
,
1
)
X_test
=
X_test
.
reshape
(
-
1
,
1
)
y_test
=
y_test
.
reshape
(
-
1
,
1
)
# -------- Build the Model ***Linear Regression(LR)*****---------------------------------
# Fitting Simple Linear Regression to the Training set
regressor_LR
=
LinearRegression
()
regressor_LR
.
fit
(
X_train
,
y_train
)
#training the algorithm
# Predicting the Test set result
y_pred
=
regressor_LR
.
predict
(
X_test
)
# Get Gradient
gradient_LR
=
regressor_LR
.
coef_
# Calulate r-Squared
r_squared_linear_regression
=
r2_score
(
y_test
,
y_pred
)
# Visualising the Training set result
plt
.
scatter
(
X_train
,
y_train
,
color
=
'red'
)
plt
.
plot
(
X_train
,
regressor_LR
.
predict
(
X_train
),
color
=
'blue'
)
plt
.
title
(
"Linear Regression"
)
plt
.
xlabel
(
'Allocated weight for question'
)
plt
.
ylabel
(
'Spend time per question'
)
# plt.show()
# -------- Build the Model ***Support Vector Regression(SVR)*****-------------------------------------
# Fitting Support Vector Regression to the Training set
regressor_SVR
=
SVR
(
kernel
=
'linear'
)
regressor_SVR
.
fit
(
X_train
,
y_train
)
#training the algorithm
# Predicting the Test set result
y_pred
=
regressor_SVR
.
predict
(
X_test
)
# Get Gradient
gradient_SVR
=
regressor_SVR
.
coef_
# Calulate r-Squared
r_squared_support_vector_regression
=
r2_score
(
y_test
,
y_pred
)
# Visualising the Training set result
plt
.
scatter
(
X_train
,
y_train
,
color
=
'red'
)
plt
.
plot
(
X_train
,
regressor_SVR
.
predict
(
X_train
),
color
=
'blue'
)
plt
.
title
(
"Support Vector Regression"
)
plt
.
xlabel
(
'Allocated weight for question'
)
plt
.
ylabel
(
'Spend time per question'
)
# plt.show()
# Compare and add best gradient to the list
if
r_squared_linear_regression
>=
r_squared_support_vector_regression
:
print
(
"linear_regression_Gardient = "
,
gradient_LR
)
print
(
"linear_regression_Gardient = "
,
gradient_SVR
)
print
(
"r_squared_linear_regression = "
,
r_squared_linear_regression
)
print
(
"r_squared_support_vector_regression = "
,
r_squared_support_vector_regression
)
return
gradient_LR
else
:
print
(
"support_vector_regression_Gardient = "
,
gradient_LR
)
print
(
"support_vector_regression_Gardient = "
,
gradient_SVR
)
print
(
"r_squared_linear_regression = "
,
r_squared_linear_regression
)
print
(
"r_squared_support_vector_regression = "
,
r_squared_support_vector_regression
)
return
gradient_SVR
\ No newline at end of file
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