Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
M
MEML
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Fabian Poker
MEML
Commits
56662096
Commit
56662096
authored
1 year ago
by
Fabian Poker
Browse files
Options
Downloads
Patches
Plain Diff
Beliebig viele Features P10
parent
61efcce5
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
algorithm/decision_tree/tree.py
+1
-1
1 addition, 1 deletion
algorithm/decision_tree/tree.py
aufgaben/p10/evaluation.py
+6
-3
6 additions, 3 deletions
aufgaben/p10/evaluation.py
aufgaben/p4/testdata.py
+28
-31
28 additions, 31 deletions
aufgaben/p4/testdata.py
with
35 additions
and
35 deletions
algorithm/decision_tree/tree.py
+
1
−
1
View file @
56662096
...
...
@@ -55,6 +55,6 @@ class Tree:
def
str_content
(
self
):
if
self
.
children
:
return
f
'
θ:
{
self
.
threshold
}
'
return
f
'
Attr:
{
self
.
best_attribute
}
,
θ:
{
self
.
threshold
}
'
else
:
return
f
'
Classification:
{
self
.
threshold
}
'
This diff is collapsed.
Click to expand it.
aufgaben/p10/evaluation.py
+
6
−
3
View file @
56662096
...
...
@@ -9,7 +9,10 @@ from algorithm.k_nearest_neighbors.k_nearest_neighbors_algorithm import KNearest
from
aufgaben.p4.testdata
import
get_evaluation_data
from
aufgaben.p6.error_rate
import
ErrorRate
from
aufgaben.p6.multiclass_error_rate
import
Multiclass_ErrorRate
from
features.standard_deviation
import
standard_deviation
from
features.arithmetic_mean
import
arithmetic_mean
from
features.median
import
median
from
features.extremwerte
import
maximum
def
evaluate_algorithm
(
training_data
,
test_data
,
algorithm
,
evaluator
,
args
=
None
):
if
args
is
None
:
...
...
@@ -30,7 +33,7 @@ def evaluate_algorithm(training_data, test_data, algorithm, evaluator, args=None
def
evaluate
():
test_data
,
training_data
=
get_evaluation_data
(
200
,
True
)
test_data
,
training_data
=
get_evaluation_data
(
200
,
[
standard_deviation
,
arithmetic_mean
,
median
,
maximum
]
)
classes
=
list
(
set
(
test
[
1
]
for
test
in
test_data
))
# DecisionTree
...
...
@@ -44,7 +47,7 @@ def evaluate():
# PLA
print
(
"
\n
PLA
"
)
weights
=
[
random
.
random
(),
random
.
random
()]
weights
=
[
random
.
random
(),
random
.
random
(),
random
.
random
(),
random
.
random
()]
threshold
=
0.5
perceptron
=
Perceptron
(
weights
,
threshold
,
numpy
.
tanh
)
train
(
perceptron
,
training_data
,
10000
,
0.1
)
...
...
This diff is collapsed.
Click to expand it.
aufgaben/p4/testdata.py
+
28
−
31
View file @
56662096
...
...
@@ -79,45 +79,42 @@ def get_labeled_testdata():
return
test_data
,
training_data
def
get_evaluation_data
(
window_size
,
second_feature
=
False
):
# Hole die aus den Sensordaten berechneten Merkmale
joggen_feature
,
kniebeuge_feature
,
jj_feature
=
classification_evaluation
(
window_size
,
standard_deviation
)
# Wir nehmen nur DATA_LIMIT an Daten (sonst ist K-Nearest-Neighbors zu langsam)
joggen_feature
=
joggen_feature
[:
min
(
DATA_LIMIT_PER_TYPE
,
len
(
joggen_feature
))]
kniebeuge_feature
=
kniebeuge_feature
[:
min
(
DATA_LIMIT_PER_TYPE
,
len
(
kniebeuge_feature
))]
jj_feature
=
jj_feature
[:
min
(
DATA_LIMIT_PER_TYPE
,
len
(
jj_feature
))]
# Wandel Liste an Merkmalen in einzelne Merkmalsvektoren um
if
second_feature
:
joggen_feature2
,
kniebeuge_feature2
,
jj_feature2
=
classification_evaluation
(
window_size
,
arithmetic_mean
)
joggen_feature2
=
joggen_feature2
[:
min
(
DATA_LIMIT_PER_TYPE
,
len
(
joggen_feature2
))]
kniebeuge_feature2
=
kniebeuge_feature2
[:
min
(
DATA_LIMIT_PER_TYPE
,
len
(
kniebeuge_feature2
))]
jj_feature2
=
jj_feature2
[:
min
(
DATA_LIMIT_PER_TYPE
,
len
(
jj_feature2
))]
joggen_vector
=
[]
def
get_evaluation_data
(
window_size
,
feature_list
:
[]):
joggen_vector
=
None
kniebeugen_vector
=
None
jj_vector
=
None
for
feature
in
feature_list
:
# Hole die aus den Sensordaten berechneten Merkmale
joggen_feature
,
kniebeuge_feature
,
jj_feature
=
classification_evaluation
(
window_size
,
feature
)
if
not
joggen_vector
:
joggen_vector
=
[[]
for
_
in
joggen_feature
][:
min
(
DATA_LIMIT_PER_TYPE
,
len
(
joggen_feature
))]
kniebeugen_vector
=
[[]
for
_
in
kniebeuge_feature
][:
min
(
DATA_LIMIT_PER_TYPE
,
len
(
kniebeuge_feature
))]
jj_vector
=
[[]
for
_
in
jj_feature
][:
min
(
DATA_LIMIT_PER_TYPE
,
len
(
jj_feature
))]
# Wir nehmen nur DATA_LIMIT an Daten (sonst ist K-Nearest-Neighbors zu langsam)
joggen_feature
=
joggen_feature
[:
min
(
DATA_LIMIT_PER_TYPE
,
len
(
joggen_feature
))]
kniebeuge_feature
=
kniebeuge_feature
[:
min
(
DATA_LIMIT_PER_TYPE
,
len
(
kniebeuge_feature
))]
jj_feature
=
jj_feature
[:
min
(
DATA_LIMIT_PER_TYPE
,
len
(
jj_feature
))]
for
i
in
range
(
len
(
joggen_feature
)):
joggen_vector
.
append
([
joggen_feature
[
i
],
joggen_feature2
[
i
]])
kniebeugen_vector
=
[]
joggen_vector
[
i
].
append
(
joggen_feature
[
i
])
for
i
in
range
(
len
(
kniebeuge_feature
)):
kniebeugen_vector
.
append
([
kniebeuge_feature
[
i
],
kniebeuge_feature2
[
i
]])
jj_vector
=
[]
kniebeugen_vector
[
i
].
append
(
kniebeuge_feature
[
i
])
for
i
in
range
(
len
(
jj_feature
)):
jj_vector
.
append
([
jj_feature
[
i
],
jj_feature2
[
i
]])
else
:
joggen_vector
=
([
element
]
for
element
in
joggen_feature
)
kniebeugen_vector
=
([
element
]
for
element
in
kniebeuge_feature
)
jj_vector
=
([
element
]
for
element
in
jj_feature
)
jj_vector
[
i
].
append
(
jj_feature
[
i
])
# Weise den Trainingsdaten eine Klasse zu
# 0 = Kniebeuge, 1 = Joggen
training_data_joggen
=
list
(
zip
(
joggen_vector
,
[
CLASS_JOGGEN
]
*
len
(
joggen_
feature
)))
training_data_kniebeuge
=
list
(
zip
(
kniebeugen_vector
,
[
CLASS_KNIEBEUGE
]
*
len
(
kniebeuge
_feature
)))
training_data_jj
=
list
(
zip
(
jj_vector
,
[
CLASS_JUMPINGJACK
]
*
len
(
jj_
feature
)))
training_data_joggen
=
list
(
zip
(
joggen_vector
,
[
CLASS_JOGGEN
]
*
len
(
joggen_
vector
)))
training_data_kniebeuge
=
list
(
zip
(
kniebeugen_vector
,
[
CLASS_KNIEBEUGE
]
*
len
(
kniebeuge
n_vector
)))
training_data_jj
=
list
(
zip
(
jj_vector
,
[
CLASS_JUMPINGJACK
]
*
len
(
jj_
vector
)))
# Wir nehmen 90 % der Testdaten zum Trainieren und 10 % zum Testen
delimiter_joggen
=
floor
(
len
(
joggen_
feature
)
*
TRAINING_DATA_PERCENTAGE
)
delimiter_kniebeuge
=
floor
(
len
(
kniebeuge
_feature
)
*
TRAINING_DATA_PERCENTAGE
)
delimiter_jj
=
floor
(
len
(
jj_
feature
)
*
TRAINING_DATA_PERCENTAGE
)
delimiter_joggen
=
floor
(
len
(
joggen_
vector
)
*
TRAINING_DATA_PERCENTAGE
)
delimiter_kniebeuge
=
floor
(
len
(
kniebeuge
n_vector
)
*
TRAINING_DATA_PERCENTAGE
)
delimiter_jj
=
floor
(
len
(
jj_
vector
)
*
TRAINING_DATA_PERCENTAGE
)
training_data
=
training_data_joggen
[:
delimiter_joggen
]
+
training_data_kniebeuge
[:
delimiter_kniebeuge
]
+
training_data_jj
[:
delimiter_jj
]
test_data
=
training_data_joggen
[
delimiter_joggen
:]
+
training_data_kniebeuge
[
delimiter_kniebeuge
:]
+
training_data_jj
[
delimiter_jj
:]
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment