-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLab7.py
More file actions
105 lines (79 loc) · 2.85 KB
/
Copy pathLab7.py
File metadata and controls
105 lines (79 loc) · 2.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# coding: utf-8
# In[87]:
#a-) 28x28 boyutlarında içeriği 0 ve 1 olan bir matris üretiniz.
# --- my_create_m(): return result=[]28x28 içeriği 0 1 matris
#b-) A şıkkında üretilen matrisle 1 leri içeren MBR dikdörtgeni üreten fonksiyonu yazınız
# --- def my_MBR (matrix_block) 1 leri içeren en küçük dikdörtgeni değeri elde edicek
#c-) Kendisine aktarılan iki vektörün benzerliğini return eden fonksiyonu yazınız.
# --- def ... (a,b) skaler çarpımı göndercek geri
#d-) A şıkkında yazdığınız fonksiyonu kullanarak 100 farklı matris elde edip birinci
#üretilen ile diğerlerini karşılaştırıp(distance) yakınlığını ve benzerliğini listeleyiniz
# --- 100 tane A daki fonk çağır ordaki 100 tanesini 1. ile karşılaştır
# haftaya mnist data
import numpy as np
import matplotlib.pyplot as plt
import random as random
#soru a
def my_create_m():
return np.random.randint(0,2,(28,28))
#soru b
def MBR_create_28_by_28_with_0_1(matris_a):
m=matris_a.shape[0]
n=matris_a.shape[1]
x_min=m
x_max=0 #başlangıç değerleri olası en olumsuz durum
y_min=n
y_max=0
for i in range(m):
for j in range(n):
if (matris_a[i,j]==1 and x_min>i): # resim/matris üzerinden
x_min=i # x_min, .... güncelleniyor
if (matris_a[i,j]==1 and x_max<i):
x_max=i
if (matris_a[i,j]==1 and y_min>j):
y_min=j
if (matris_a[i,j]==1 and y_max<j):
y_max=j
return (x_min,x_max,y_min,y_max)
#soru c
def get_similarity(character_a,character_b):
m=character_a.shape[0]
n=character_a.shape[1]
my_similarity=0
for i in range(m):
for j in range(n):
my_similarity=my_similarity+character_a[i,j]*character_b[i,j] #pixelleri çarpım olarak değilde direk aynı mı farklımı diye kontrol edebilirsin
return my_similarity
#soru d
def get_similarity_for_100_characters(kac_karakter=100):
characters=[]
for i in range(kac_karakter):
new_char=my_create_m()
characters.append(new_char)
for i in range(kac_karakter):
benzerlik=get_similarity(characters[0],characters[i])
print("0 -- "+str(i)+" ",benzerlik)
# In[88]:
print(my_create_m())
print(MBR_create_28_by_28_with_0_1(my_create_m()))
c_1=my_create_m()
c_2=my_create_m()
print(get_similarity(c_1,c_2))
# In[89]:
#d şıkkı versiyon 2
a=my_create_m()
benzerlik_max=0
c=np.zeros((28,28))
for i in range(100):
b=my_create_m()
if(get_similarity(a,b)>benzerlik_max):
benzerlik_max=get_similarity(a,b)
c=b
print("En Yüksek Benzerlik : ",benzerlik_max)
plt.imshow(a,interpolation='nearest',cmap='gray')
plt.show()
plt.imshow(c,interpolation='nearest',cmap='gray')
plt.show()
get_similarity_for_100_characters()
# In[ ]:
# In[ ]: