getallen_a
. getallen_b
aan: [3.14, 8, 0] en vervang getallen_a
door de samenvoeging van getallen_a
en getallen_b
getallen_a
: op welke plek staat het getal 3.14? En het getal 8? Hoe vaak komt het getal 8 voor in de lijst? Bevat de lijst het getal 4? Wat zijn de minimale en maximale waarde die in de lijst voorkomen?
In [6]:
# 1.1
getallen_a = []
# 1.2
for i in range(2, 11, 2):
getallen_a.append(i)
# 1.3
print("Lijst getallen_a:", getallen_a)
print("Lengte of aantal elementen:", len(getallen_a))
print("Getal op plek 0:", getallen_a[0])
print("Getal op plek 3:", getallen_a[3])
print("Getal op plek -1:", getallen_a[-1])
# 1.4
getallen_a.append(14.0)
getallen_a.insert(2, 7)
# 1.5
getallen_b = [3.14, 8, 0]
getallen_a = getallen_a + getallen_b # ook: getallen_a += getallen_b
print("Lijst getallen_a:", getallen_a)
# 1.6
print("Index van 3.14:", getallen_a.index(3.14))
print("Aantal van 8:", getallen_a.count(8))
print("Is 4 element van de lijst:", 4 in getallen_a)
# of: print("Is 4 element van de lijst:", getallen_a.count(4) > 0)
print("Minimum van lijst:", min(getallen_a))
print("Maximum van lijst:", min(getallen_b))
# 1.7
del getallen_a[4]
print("Lijst getallen_a:", getallen_a)
# 1.8
getallen_a.sort()
print("Lijst getallen_a:", getallen_a)
getallen_a.reverse()
print("Lijst getallen_a:", getallen_a)
len()
-functie te gebruiken.in
-operator of de functies index()
of count()
.for
-loop om dit te bepalen.****
*********
*******
In [15]:
# 2.1
numbers = [2, 4, 6, 8]
length = 0
for i in numbers:
length += 1
print("Lengte van numbers:", length)
# 2.2
numbers = range(2, 10, 2)
multiplier = float(input("Geef de multiplier op:"))
for number in numbers:
print(number * multiplier)
# of:
numbers = list(range(2, 10, 2))
multiplier = float(input("Geef de multiplier op:"))
for i in range(len(numbers)):
numbers[i] *= multiplier # dit past de inhoud van de list aan!
print("Producten:", numbers)
# 2.3
numbers = [1, 3, 5, 7]
print("Getallen:", numbers)
query = int(input("Welk geheel getal zoek je?"))
is_element = False
for number in numbers:
if number == query:
is_element = True
print("Het getal {} zit in de lijst: {}".format(query, is_element))
# 2.4
numbers_a = [1, 3, 5, 7]
numbers_b = [2, 4, 6, 8]
has_common_elem = False
for number_a in numbers_a:
for number_b in numbers_b:
if number_a == number_b:
has_common_elem = True
print(("De lijsten hebben (minstens) een "
"gemeenschappelijk element:"), has_common_elem)
# 2.5
values = [4, 9, 7]
for value in values:
print("*" * value)
Tijdens het college is (naive) Bayesian spam detection besproken. Er werden twee voorbeelden behandeld en in beide gevallen werd de kans op spam bepaald voor een bericht van één woord. Maar de meeste e-mails bestaan uit meer woorden.
Wanneer we, helaas wat optimistisch, de aanname doen dat woorden in e-mails onafhankelijk van elkaar optreden, kunnen we met de behandelde vergelijking (Bayes' theorem) uitspraken doen over de kans dat een e-mail met meerdere woorden spam is.
M = "rolex korting amsterdam"
als je uitgaat van onderlinge onafhankelijkheid van de woorden in een bericht. rolex replica korting
, klik korting viagra
, korting politiek krediet
politiek bepaalt korting
, lariekoek in politiek
, klik politiek verslag
, journalist bespeelt politiek
, politiek amsterdam stagneert
message = "rolex korting amsterdam"
words = message.split() # split maakt een list van de elementen
# na het splitsen op whitespace
Hint: begin met uit uitdrukken van $P(M|Spam)$ als $P(W_1, W_2, W_3|Spam) = P(W_1|Spam) \cdot P(W_2|Spam) \cdot P(W_3|Spam)$ en evenzo voor $P(M|Ham)$.
In [27]:
# 3.2
spam = [
"rolex", "replica", "korting",
"klik", "korting", "viagra",
"korting", "politiek", "krediet",
]
ham = [
"politiek", "bepaalt", "korting",
"lariekoek", "in", "politiek",
"klik", "politiek", "verslag",
"journalist", "bespeelt", "politiek",
"politiek", "amsterdam", "stagneert",
]
message = "rolex korting amsterdam"
words = message.split()
P_words_spam = 1.0
P_words_ham = 1.0
for word in words:
if word in spam:
P_words_spam *= spam.count(word) / len(spam)
if word in ham:
P_words_ham *= ham.count(word) / len(ham)
P_spam = len(spam) / (len(spam) + len(ham))
P_ham = len(ham) / (len(spam) + len(ham))
P_message_spam = ((P_words_spam * P_spam) /
((P_words_spam * P_spam) + (P_words_ham * P_ham)))
print("P(M|Spam) = {:.4f}".format(P_message_spam))