Compare commits

..

No commits in common. 'master' and 'demo/2' have entirely different histories.

@ -43,8 +43,7 @@
La première réalisation va être le code en lui-même de KNN naïf et de 3nar.<br></br>
Deuxièmement, une démo de l'algorithme dans le cas d'une relation linéaire (le prix des habitations de Californie en fonction du nombre de m²).<br/></br>
Troisièmement, une démo de l'algorithme dans le cas d'une relation non-linéaire fictive (les données vont être inventées à partir d'une relation polynomiale aléatoire.)</br></br>
Enfin, si j'ai le temps, j'aimerais également réaliser une démo de l'algorithme dans le cas de la réduction de bruit d'une image (bruit qui serait ajouté artificiellement avant le traitement).</br></br>
Suite à une discution avec le proféseur, j'ai décidé d'ajouter un exemple d'uttilisation pour classifier les éspèce d'iris.
Enfin, si j'ai le temps, j'aimerais également réaliser une démo de l'algorithme dans le cas de la réduction de bruit d'une image (bruit qui serait ajouté artificiellement avant le traitement).
</p>
</section>
@ -55,18 +54,7 @@
<p>
Le prix des maisons en fonction du nombre de m²:
<a href="https://www.kaggle.com/datasets/yasserh/housing-prices-dataset/data">https://www.kaggle.com/datasets/yasserh/housing-prices-dataset/data</a></br></br>
L'image utilisée pour le traitement: <a href="https://www.auvergnevolcansancy.com/app/uploads/2022/08/puy-de-dome-et-de-come-p.soisson-683x1024.jpg">https://www.auvergnevolcansancy.com/app/uploads/2022/08/puy-de-dome-et-de-come-p.soisson-683x1024.jpg</a></br></br>
la base de données des fleurs: <a href="https://www.kaggle.com/datasets/uciml/iris">https://www.kaggle.com/datasets/uciml/iris</a>
</p>
</section>
<section>
<h2>
Pour lancer les demos:
</h2>
<p>
export PYTHONPATH="./code"</br>
python demoX.py
L'image utilisée pour le traitement: <a href="https://www.auvergnevolcansancy.com/app/uploads/2022/08/puy-de-dome-et-de-come-p.soisson-683x1024.jpg">https://www.auvergnevolcansancy.com/app/uploads/2022/08/puy-de-dome-et-de-come-p.soisson-683x1024.jpg</a>
</p>
</section>
@ -80,7 +68,6 @@
display:flex;
justify-content:center;
border:0px;
transform: translate(12.5%);
}
.a {
color:#f00;

@ -1,151 +0,0 @@
Id,SepalLengthCm,SepalWidthCm,PetalLengthCm,PetalWidthCm,Species
1,5.1,3.5,1.4,0.2,Iris-setosa
2,4.9,3.0,1.4,0.2,Iris-setosa
3,4.7,3.2,1.3,0.2,Iris-setosa
4,4.6,3.1,1.5,0.2,Iris-setosa
5,5.0,3.6,1.4,0.2,Iris-setosa
6,5.4,3.9,1.7,0.4,Iris-setosa
7,4.6,3.4,1.4,0.3,Iris-setosa
8,5.0,3.4,1.5,0.2,Iris-setosa
9,4.4,2.9,1.4,0.2,Iris-setosa
10,4.9,3.1,1.5,0.1,Iris-setosa
11,5.4,3.7,1.5,0.2,Iris-setosa
12,4.8,3.4,1.6,0.2,Iris-setosa
13,4.8,3.0,1.4,0.1,Iris-setosa
14,4.3,3.0,1.1,0.1,Iris-setosa
15,5.8,4.0,1.2,0.2,Iris-setosa
16,5.7,4.4,1.5,0.4,Iris-setosa
17,5.4,3.9,1.3,0.4,Iris-setosa
18,5.1,3.5,1.4,0.3,Iris-setosa
19,5.7,3.8,1.7,0.3,Iris-setosa
20,5.1,3.8,1.5,0.3,Iris-setosa
21,5.4,3.4,1.7,0.2,Iris-setosa
22,5.1,3.7,1.5,0.4,Iris-setosa
23,4.6,3.6,1.0,0.2,Iris-setosa
24,5.1,3.3,1.7,0.5,Iris-setosa
25,4.8,3.4,1.9,0.2,Iris-setosa
26,5.0,3.0,1.6,0.2,Iris-setosa
27,5.0,3.4,1.6,0.4,Iris-setosa
28,5.2,3.5,1.5,0.2,Iris-setosa
29,5.2,3.4,1.4,0.2,Iris-setosa
30,4.7,3.2,1.6,0.2,Iris-setosa
31,4.8,3.1,1.6,0.2,Iris-setosa
32,5.4,3.4,1.5,0.4,Iris-setosa
33,5.2,4.1,1.5,0.1,Iris-setosa
34,5.5,4.2,1.4,0.2,Iris-setosa
35,4.9,3.1,1.5,0.1,Iris-setosa
36,5.0,3.2,1.2,0.2,Iris-setosa
37,5.5,3.5,1.3,0.2,Iris-setosa
38,4.9,3.1,1.5,0.1,Iris-setosa
39,4.4,3.0,1.3,0.2,Iris-setosa
40,5.1,3.4,1.5,0.2,Iris-setosa
41,5.0,3.5,1.3,0.3,Iris-setosa
42,4.5,2.3,1.3,0.3,Iris-setosa
43,4.4,3.2,1.3,0.2,Iris-setosa
44,5.0,3.5,1.6,0.6,Iris-setosa
45,5.1,3.8,1.9,0.4,Iris-setosa
46,4.8,3.0,1.4,0.3,Iris-setosa
47,5.1,3.8,1.6,0.2,Iris-setosa
48,4.6,3.2,1.4,0.2,Iris-setosa
49,5.3,3.7,1.5,0.2,Iris-setosa
50,5.0,3.3,1.4,0.2,Iris-setosa
51,7.0,3.2,4.7,1.4,Iris-versicolor
52,6.4,3.2,4.5,1.5,Iris-versicolor
53,6.9,3.1,4.9,1.5,Iris-versicolor
54,5.5,2.3,4.0,1.3,Iris-versicolor
55,6.5,2.8,4.6,1.5,Iris-versicolor
56,5.7,2.8,4.5,1.3,Iris-versicolor
57,6.3,3.3,4.7,1.6,Iris-versicolor
58,4.9,2.4,3.3,1.0,Iris-versicolor
59,6.6,2.9,4.6,1.3,Iris-versicolor
60,5.2,2.7,3.9,1.4,Iris-versicolor
61,5.0,2.0,3.5,1.0,Iris-versicolor
62,5.9,3.0,4.2,1.5,Iris-versicolor
63,6.0,2.2,4.0,1.0,Iris-versicolor
64,6.1,2.9,4.7,1.4,Iris-versicolor
65,5.6,2.9,3.6,1.3,Iris-versicolor
66,6.7,3.1,4.4,1.4,Iris-versicolor
67,5.6,3.0,4.5,1.5,Iris-versicolor
68,5.8,2.7,4.1,1.0,Iris-versicolor
69,6.2,2.2,4.5,1.5,Iris-versicolor
70,5.6,2.5,3.9,1.1,Iris-versicolor
71,5.9,3.2,4.8,1.8,Iris-versicolor
72,6.1,2.8,4.0,1.3,Iris-versicolor
73,6.3,2.5,4.9,1.5,Iris-versicolor
74,6.1,2.8,4.7,1.2,Iris-versicolor
75,6.4,2.9,4.3,1.3,Iris-versicolor
76,6.6,3.0,4.4,1.4,Iris-versicolor
77,6.8,2.8,4.8,1.4,Iris-versicolor
78,6.7,3.0,5.0,1.7,Iris-versicolor
79,6.0,2.9,4.5,1.5,Iris-versicolor
80,5.7,2.6,3.5,1.0,Iris-versicolor
81,5.5,2.4,3.8,1.1,Iris-versicolor
82,5.5,2.4,3.7,1.0,Iris-versicolor
83,5.8,2.7,3.9,1.2,Iris-versicolor
84,6.0,2.7,5.1,1.6,Iris-versicolor
85,5.4,3.0,4.5,1.5,Iris-versicolor
86,6.0,3.4,4.5,1.6,Iris-versicolor
87,6.7,3.1,4.7,1.5,Iris-versicolor
88,6.3,2.3,4.4,1.3,Iris-versicolor
89,5.6,3.0,4.1,1.3,Iris-versicolor
90,5.5,2.5,4.0,1.3,Iris-versicolor
91,5.5,2.6,4.4,1.2,Iris-versicolor
92,6.1,3.0,4.6,1.4,Iris-versicolor
93,5.8,2.6,4.0,1.2,Iris-versicolor
94,5.0,2.3,3.3,1.0,Iris-versicolor
95,5.6,2.7,4.2,1.3,Iris-versicolor
96,5.7,3.0,4.2,1.2,Iris-versicolor
97,5.7,2.9,4.2,1.3,Iris-versicolor
98,6.2,2.9,4.3,1.3,Iris-versicolor
99,5.1,2.5,3.0,1.1,Iris-versicolor
100,5.7,2.8,4.1,1.3,Iris-versicolor
101,6.3,3.3,6.0,2.5,Iris-virginica
102,5.8,2.7,5.1,1.9,Iris-virginica
103,7.1,3.0,5.9,2.1,Iris-virginica
104,6.3,2.9,5.6,1.8,Iris-virginica
105,6.5,3.0,5.8,2.2,Iris-virginica
106,7.6,3.0,6.6,2.1,Iris-virginica
107,4.9,2.5,4.5,1.7,Iris-virginica
108,7.3,2.9,6.3,1.8,Iris-virginica
109,6.7,2.5,5.8,1.8,Iris-virginica
110,7.2,3.6,6.1,2.5,Iris-virginica
111,6.5,3.2,5.1,2.0,Iris-virginica
112,6.4,2.7,5.3,1.9,Iris-virginica
113,6.8,3.0,5.5,2.1,Iris-virginica
114,5.7,2.5,5.0,2.0,Iris-virginica
115,5.8,2.8,5.1,2.4,Iris-virginica
116,6.4,3.2,5.3,2.3,Iris-virginica
117,6.5,3.0,5.5,1.8,Iris-virginica
118,7.7,3.8,6.7,2.2,Iris-virginica
119,7.7,2.6,6.9,2.3,Iris-virginica
120,6.0,2.2,5.0,1.5,Iris-virginica
121,6.9,3.2,5.7,2.3,Iris-virginica
122,5.6,2.8,4.9,2.0,Iris-virginica
123,7.7,2.8,6.7,2.0,Iris-virginica
124,6.3,2.7,4.9,1.8,Iris-virginica
125,6.7,3.3,5.7,2.1,Iris-virginica
126,7.2,3.2,6.0,1.8,Iris-virginica
127,6.2,2.8,4.8,1.8,Iris-virginica
128,6.1,3.0,4.9,1.8,Iris-virginica
129,6.4,2.8,5.6,2.1,Iris-virginica
130,7.2,3.0,5.8,1.6,Iris-virginica
131,7.4,2.8,6.1,1.9,Iris-virginica
132,7.9,3.8,6.4,2.0,Iris-virginica
133,6.4,2.8,5.6,2.2,Iris-virginica
134,6.3,2.8,5.1,1.5,Iris-virginica
135,6.1,2.6,5.6,1.4,Iris-virginica
136,7.7,3.0,6.1,2.3,Iris-virginica
137,6.3,3.4,5.6,2.4,Iris-virginica
138,6.4,3.1,5.5,1.8,Iris-virginica
139,6.0,3.0,4.8,1.8,Iris-virginica
140,6.9,3.1,5.4,2.1,Iris-virginica
141,6.7,3.1,5.6,2.4,Iris-virginica
142,6.9,3.1,5.1,2.3,Iris-virginica
143,5.8,2.7,5.1,1.9,Iris-virginica
144,6.8,3.2,5.9,2.3,Iris-virginica
145,6.7,3.3,5.7,2.5,Iris-virginica
146,6.7,3.0,5.2,2.3,Iris-virginica
147,6.3,2.5,5.0,1.9,Iris-virginica
148,6.5,3.0,5.2,2.0,Iris-virginica
149,6.2,3.4,5.4,2.3,Iris-virginica
150,5.9,3.0,5.1,1.8,Iris-virginica
1 Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species
2 1 5.1 3.5 1.4 0.2 Iris-setosa
3 2 4.9 3.0 1.4 0.2 Iris-setosa
4 3 4.7 3.2 1.3 0.2 Iris-setosa
5 4 4.6 3.1 1.5 0.2 Iris-setosa
6 5 5.0 3.6 1.4 0.2 Iris-setosa
7 6 5.4 3.9 1.7 0.4 Iris-setosa
8 7 4.6 3.4 1.4 0.3 Iris-setosa
9 8 5.0 3.4 1.5 0.2 Iris-setosa
10 9 4.4 2.9 1.4 0.2 Iris-setosa
11 10 4.9 3.1 1.5 0.1 Iris-setosa
12 11 5.4 3.7 1.5 0.2 Iris-setosa
13 12 4.8 3.4 1.6 0.2 Iris-setosa
14 13 4.8 3.0 1.4 0.1 Iris-setosa
15 14 4.3 3.0 1.1 0.1 Iris-setosa
16 15 5.8 4.0 1.2 0.2 Iris-setosa
17 16 5.7 4.4 1.5 0.4 Iris-setosa
18 17 5.4 3.9 1.3 0.4 Iris-setosa
19 18 5.1 3.5 1.4 0.3 Iris-setosa
20 19 5.7 3.8 1.7 0.3 Iris-setosa
21 20 5.1 3.8 1.5 0.3 Iris-setosa
22 21 5.4 3.4 1.7 0.2 Iris-setosa
23 22 5.1 3.7 1.5 0.4 Iris-setosa
24 23 4.6 3.6 1.0 0.2 Iris-setosa
25 24 5.1 3.3 1.7 0.5 Iris-setosa
26 25 4.8 3.4 1.9 0.2 Iris-setosa
27 26 5.0 3.0 1.6 0.2 Iris-setosa
28 27 5.0 3.4 1.6 0.4 Iris-setosa
29 28 5.2 3.5 1.5 0.2 Iris-setosa
30 29 5.2 3.4 1.4 0.2 Iris-setosa
31 30 4.7 3.2 1.6 0.2 Iris-setosa
32 31 4.8 3.1 1.6 0.2 Iris-setosa
33 32 5.4 3.4 1.5 0.4 Iris-setosa
34 33 5.2 4.1 1.5 0.1 Iris-setosa
35 34 5.5 4.2 1.4 0.2 Iris-setosa
36 35 4.9 3.1 1.5 0.1 Iris-setosa
37 36 5.0 3.2 1.2 0.2 Iris-setosa
38 37 5.5 3.5 1.3 0.2 Iris-setosa
39 38 4.9 3.1 1.5 0.1 Iris-setosa
40 39 4.4 3.0 1.3 0.2 Iris-setosa
41 40 5.1 3.4 1.5 0.2 Iris-setosa
42 41 5.0 3.5 1.3 0.3 Iris-setosa
43 42 4.5 2.3 1.3 0.3 Iris-setosa
44 43 4.4 3.2 1.3 0.2 Iris-setosa
45 44 5.0 3.5 1.6 0.6 Iris-setosa
46 45 5.1 3.8 1.9 0.4 Iris-setosa
47 46 4.8 3.0 1.4 0.3 Iris-setosa
48 47 5.1 3.8 1.6 0.2 Iris-setosa
49 48 4.6 3.2 1.4 0.2 Iris-setosa
50 49 5.3 3.7 1.5 0.2 Iris-setosa
51 50 5.0 3.3 1.4 0.2 Iris-setosa
52 51 7.0 3.2 4.7 1.4 Iris-versicolor
53 52 6.4 3.2 4.5 1.5 Iris-versicolor
54 53 6.9 3.1 4.9 1.5 Iris-versicolor
55 54 5.5 2.3 4.0 1.3 Iris-versicolor
56 55 6.5 2.8 4.6 1.5 Iris-versicolor
57 56 5.7 2.8 4.5 1.3 Iris-versicolor
58 57 6.3 3.3 4.7 1.6 Iris-versicolor
59 58 4.9 2.4 3.3 1.0 Iris-versicolor
60 59 6.6 2.9 4.6 1.3 Iris-versicolor
61 60 5.2 2.7 3.9 1.4 Iris-versicolor
62 61 5.0 2.0 3.5 1.0 Iris-versicolor
63 62 5.9 3.0 4.2 1.5 Iris-versicolor
64 63 6.0 2.2 4.0 1.0 Iris-versicolor
65 64 6.1 2.9 4.7 1.4 Iris-versicolor
66 65 5.6 2.9 3.6 1.3 Iris-versicolor
67 66 6.7 3.1 4.4 1.4 Iris-versicolor
68 67 5.6 3.0 4.5 1.5 Iris-versicolor
69 68 5.8 2.7 4.1 1.0 Iris-versicolor
70 69 6.2 2.2 4.5 1.5 Iris-versicolor
71 70 5.6 2.5 3.9 1.1 Iris-versicolor
72 71 5.9 3.2 4.8 1.8 Iris-versicolor
73 72 6.1 2.8 4.0 1.3 Iris-versicolor
74 73 6.3 2.5 4.9 1.5 Iris-versicolor
75 74 6.1 2.8 4.7 1.2 Iris-versicolor
76 75 6.4 2.9 4.3 1.3 Iris-versicolor
77 76 6.6 3.0 4.4 1.4 Iris-versicolor
78 77 6.8 2.8 4.8 1.4 Iris-versicolor
79 78 6.7 3.0 5.0 1.7 Iris-versicolor
80 79 6.0 2.9 4.5 1.5 Iris-versicolor
81 80 5.7 2.6 3.5 1.0 Iris-versicolor
82 81 5.5 2.4 3.8 1.1 Iris-versicolor
83 82 5.5 2.4 3.7 1.0 Iris-versicolor
84 83 5.8 2.7 3.9 1.2 Iris-versicolor
85 84 6.0 2.7 5.1 1.6 Iris-versicolor
86 85 5.4 3.0 4.5 1.5 Iris-versicolor
87 86 6.0 3.4 4.5 1.6 Iris-versicolor
88 87 6.7 3.1 4.7 1.5 Iris-versicolor
89 88 6.3 2.3 4.4 1.3 Iris-versicolor
90 89 5.6 3.0 4.1 1.3 Iris-versicolor
91 90 5.5 2.5 4.0 1.3 Iris-versicolor
92 91 5.5 2.6 4.4 1.2 Iris-versicolor
93 92 6.1 3.0 4.6 1.4 Iris-versicolor
94 93 5.8 2.6 4.0 1.2 Iris-versicolor
95 94 5.0 2.3 3.3 1.0 Iris-versicolor
96 95 5.6 2.7 4.2 1.3 Iris-versicolor
97 96 5.7 3.0 4.2 1.2 Iris-versicolor
98 97 5.7 2.9 4.2 1.3 Iris-versicolor
99 98 6.2 2.9 4.3 1.3 Iris-versicolor
100 99 5.1 2.5 3.0 1.1 Iris-versicolor
101 100 5.7 2.8 4.1 1.3 Iris-versicolor
102 101 6.3 3.3 6.0 2.5 Iris-virginica
103 102 5.8 2.7 5.1 1.9 Iris-virginica
104 103 7.1 3.0 5.9 2.1 Iris-virginica
105 104 6.3 2.9 5.6 1.8 Iris-virginica
106 105 6.5 3.0 5.8 2.2 Iris-virginica
107 106 7.6 3.0 6.6 2.1 Iris-virginica
108 107 4.9 2.5 4.5 1.7 Iris-virginica
109 108 7.3 2.9 6.3 1.8 Iris-virginica
110 109 6.7 2.5 5.8 1.8 Iris-virginica
111 110 7.2 3.6 6.1 2.5 Iris-virginica
112 111 6.5 3.2 5.1 2.0 Iris-virginica
113 112 6.4 2.7 5.3 1.9 Iris-virginica
114 113 6.8 3.0 5.5 2.1 Iris-virginica
115 114 5.7 2.5 5.0 2.0 Iris-virginica
116 115 5.8 2.8 5.1 2.4 Iris-virginica
117 116 6.4 3.2 5.3 2.3 Iris-virginica
118 117 6.5 3.0 5.5 1.8 Iris-virginica
119 118 7.7 3.8 6.7 2.2 Iris-virginica
120 119 7.7 2.6 6.9 2.3 Iris-virginica
121 120 6.0 2.2 5.0 1.5 Iris-virginica
122 121 6.9 3.2 5.7 2.3 Iris-virginica
123 122 5.6 2.8 4.9 2.0 Iris-virginica
124 123 7.7 2.8 6.7 2.0 Iris-virginica
125 124 6.3 2.7 4.9 1.8 Iris-virginica
126 125 6.7 3.3 5.7 2.1 Iris-virginica
127 126 7.2 3.2 6.0 1.8 Iris-virginica
128 127 6.2 2.8 4.8 1.8 Iris-virginica
129 128 6.1 3.0 4.9 1.8 Iris-virginica
130 129 6.4 2.8 5.6 2.1 Iris-virginica
131 130 7.2 3.0 5.8 1.6 Iris-virginica
132 131 7.4 2.8 6.1 1.9 Iris-virginica
133 132 7.9 3.8 6.4 2.0 Iris-virginica
134 133 6.4 2.8 5.6 2.2 Iris-virginica
135 134 6.3 2.8 5.1 1.5 Iris-virginica
136 135 6.1 2.6 5.6 1.4 Iris-virginica
137 136 7.7 3.0 6.1 2.3 Iris-virginica
138 137 6.3 3.4 5.6 2.4 Iris-virginica
139 138 6.4 3.1 5.5 1.8 Iris-virginica
140 139 6.0 3.0 4.8 1.8 Iris-virginica
141 140 6.9 3.1 5.4 2.1 Iris-virginica
142 141 6.7 3.1 5.6 2.4 Iris-virginica
143 142 6.9 3.1 5.1 2.3 Iris-virginica
144 143 5.8 2.7 5.1 1.9 Iris-virginica
145 144 6.8 3.2 5.9 2.3 Iris-virginica
146 145 6.7 3.3 5.7 2.5 Iris-virginica
147 146 6.7 3.0 5.2 2.3 Iris-virginica
148 147 6.3 2.5 5.0 1.9 Iris-virginica
149 148 6.5 3.0 5.2 2.0 Iris-virginica
150 149 6.2 3.4 5.4 2.3 Iris-virginica
151 150 5.9 3.0 5.1 1.8 Iris-virginica

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

@ -1,546 +0,0 @@
price,area,bedrooms,bathrooms,stories,mainroad,guestroom,basement,hotwaterheating,airconditioning,parking,prefarea,furnishingstatus
13300000,7420,4,2,3,yes,no,no,no,yes,2,yes,furnished
12250000,8960,4,4,4,yes,no,no,no,yes,3,no,furnished
12250000,9960,3,2,2,yes,no,yes,no,no,2,yes,semi-furnished
12215000,7500,4,2,2,yes,no,yes,no,yes,3,yes,furnished
11410000,7420,4,1,2,yes,yes,yes,no,yes,2,no,furnished
10850000,7500,3,3,1,yes,no,yes,no,yes,2,yes,semi-furnished
10150000,8580,4,3,4,yes,no,no,no,yes,2,yes,semi-furnished
10150000,16200,5,3,2,yes,no,no,no,no,0,no,unfurnished
9870000,8100,4,1,2,yes,yes,yes,no,yes,2,yes,furnished
9800000,5750,3,2,4,yes,yes,no,no,yes,1,yes,unfurnished
9800000,13200,3,1,2,yes,no,yes,no,yes,2,yes,furnished
9681000,6000,4,3,2,yes,yes,yes,yes,no,2,no,semi-furnished
9310000,6550,4,2,2,yes,no,no,no,yes,1,yes,semi-furnished
9240000,3500,4,2,2,yes,no,no,yes,no,2,no,furnished
9240000,7800,3,2,2,yes,no,no,no,no,0,yes,semi-furnished
9100000,6000,4,1,2,yes,no,yes,no,no,2,no,semi-furnished
9100000,6600,4,2,2,yes,yes,yes,no,yes,1,yes,unfurnished
8960000,8500,3,2,4,yes,no,no,no,yes,2,no,furnished
8890000,4600,3,2,2,yes,yes,no,no,yes,2,no,furnished
8855000,6420,3,2,2,yes,no,no,no,yes,1,yes,semi-furnished
8750000,4320,3,1,2,yes,no,yes,yes,no,2,no,semi-furnished
8680000,7155,3,2,1,yes,yes,yes,no,yes,2,no,unfurnished
8645000,8050,3,1,1,yes,yes,yes,no,yes,1,no,furnished
8645000,4560,3,2,2,yes,yes,yes,no,yes,1,no,furnished
8575000,8800,3,2,2,yes,no,no,no,yes,2,no,furnished
8540000,6540,4,2,2,yes,yes,yes,no,yes,2,yes,furnished
8463000,6000,3,2,4,yes,yes,yes,no,yes,0,yes,semi-furnished
8400000,8875,3,1,1,yes,no,no,no,no,1,no,semi-furnished
8400000,7950,5,2,2,yes,no,yes,yes,no,2,no,unfurnished
8400000,5500,4,2,2,yes,no,yes,no,yes,1,yes,semi-furnished
8400000,7475,3,2,4,yes,no,no,no,yes,2,no,unfurnished
8400000,7000,3,1,4,yes,no,no,no,yes,2,no,semi-furnished
8295000,4880,4,2,2,yes,no,no,no,yes,1,yes,furnished
8190000,5960,3,3,2,yes,yes,yes,no,no,1,no,unfurnished
8120000,6840,5,1,2,yes,yes,yes,no,yes,1,no,furnished
8080940,7000,3,2,4,yes,no,no,no,yes,2,no,furnished
8043000,7482,3,2,3,yes,no,no,yes,no,1,yes,furnished
7980000,9000,4,2,4,yes,no,no,no,yes,2,no,furnished
7962500,6000,3,1,4,yes,yes,no,no,yes,2,no,unfurnished
7910000,6000,4,2,4,yes,no,no,no,yes,1,no,semi-furnished
7875000,6550,3,1,2,yes,no,yes,no,yes,0,yes,furnished
7840000,6360,3,2,4,yes,no,no,no,yes,0,yes,furnished
7700000,6480,3,2,4,yes,no,no,no,yes,2,no,unfurnished
7700000,6000,4,2,4,yes,no,no,no,no,2,no,semi-furnished
7560000,6000,4,2,4,yes,no,no,no,yes,1,no,furnished
7560000,6000,3,2,3,yes,no,no,no,yes,0,no,semi-furnished
7525000,6000,3,2,4,yes,no,no,no,yes,1,no,furnished
7490000,6600,3,1,4,yes,no,no,no,yes,3,yes,furnished
7455000,4300,3,2,2,yes,no,yes,no,no,1,no,unfurnished
7420000,7440,3,2,1,yes,yes,yes,no,yes,0,yes,semi-furnished
7420000,7440,3,2,4,yes,no,no,no,no,1,yes,unfurnished
7420000,6325,3,1,4,yes,no,no,no,yes,1,no,unfurnished
7350000,6000,4,2,4,yes,yes,no,no,yes,1,no,furnished
7350000,5150,3,2,4,yes,no,no,no,yes,2,no,semi-furnished
7350000,6000,3,2,2,yes,yes,no,no,yes,1,no,semi-furnished
7350000,6000,3,1,2,yes,no,no,no,yes,1,no,unfurnished
7343000,11440,4,1,2,yes,no,yes,no,no,1,yes,semi-furnished
7245000,9000,4,2,4,yes,yes,no,no,yes,1,yes,furnished
7210000,7680,4,2,4,yes,yes,no,no,yes,1,no,semi-furnished
7210000,6000,3,2,4,yes,yes,no,no,yes,1,no,furnished
7140000,6000,3,2,2,yes,yes,no,no,no,1,no,semi-furnished
7070000,8880,2,1,1,yes,no,no,no,yes,1,no,semi-furnished
7070000,6240,4,2,2,yes,no,no,no,yes,1,no,furnished
7035000,6360,4,2,3,yes,no,no,no,yes,2,yes,furnished
7000000,11175,3,1,1,yes,no,yes,no,yes,1,yes,furnished
6930000,8880,3,2,2,yes,no,yes,no,yes,1,no,furnished
6930000,13200,2,1,1,yes,no,yes,yes,no,1,no,furnished
6895000,7700,3,2,1,yes,no,no,no,no,2,no,unfurnished
6860000,6000,3,1,1,yes,no,no,no,yes,1,no,furnished
6790000,12090,4,2,2,yes,no,no,no,no,2,yes,furnished
6790000,4000,3,2,2,yes,no,yes,no,yes,0,yes,semi-furnished
6755000,6000,4,2,4,yes,no,no,no,yes,0,no,unfurnished
6720000,5020,3,1,4,yes,no,no,no,yes,0,yes,unfurnished
6685000,6600,2,2,4,yes,no,yes,no,no,0,yes,furnished
6650000,4040,3,1,2,yes,no,yes,yes,no,1,no,furnished
6650000,4260,4,2,2,yes,no,no,yes,no,0,no,semi-furnished
6650000,6420,3,2,3,yes,no,no,no,yes,0,yes,furnished
6650000,6500,3,2,3,yes,no,no,no,yes,0,yes,furnished
6650000,5700,3,1,1,yes,yes,yes,no,yes,2,yes,furnished
6650000,6000,3,2,3,yes,yes,no,no,yes,0,no,furnished
6629000,6000,3,1,2,yes,no,no,yes,no,1,yes,semi-furnished
6615000,4000,3,2,2,yes,no,yes,no,yes,1,no,semi-furnished
6615000,10500,3,2,1,yes,no,yes,no,yes,1,yes,furnished
6580000,6000,3,2,4,yes,no,no,no,yes,0,no,semi-furnished
6510000,3760,3,1,2,yes,no,no,yes,no,2,no,semi-furnished
6510000,8250,3,2,3,yes,no,no,no,yes,0,no,furnished
6510000,6670,3,1,3,yes,no,yes,no,no,0,yes,unfurnished
6475000,3960,3,1,1,yes,no,yes,no,no,2,no,semi-furnished
6475000,7410,3,1,1,yes,yes,yes,no,yes,2,yes,unfurnished
6440000,8580,5,3,2,yes,no,no,no,no,2,no,furnished
6440000,5000,3,1,2,yes,no,no,no,yes,0,no,semi-furnished
6419000,6750,2,1,1,yes,yes,yes,no,no,2,yes,furnished
6405000,4800,3,2,4,yes,yes,no,no,yes,0,no,furnished
6300000,7200,3,2,1,yes,no,yes,no,yes,3,no,semi-furnished
6300000,6000,4,2,4,yes,no,no,no,no,1,no,semi-furnished
6300000,4100,3,2,3,yes,no,no,no,yes,2,no,semi-furnished
6300000,9000,3,1,1,yes,no,yes,no,no,1,yes,furnished
6300000,6400,3,1,1,yes,yes,yes,no,yes,1,yes,semi-furnished
6293000,6600,3,2,3,yes,no,no,no,yes,0,yes,unfurnished
6265000,6000,4,1,3,yes,yes,yes,no,no,0,yes,unfurnished
6230000,6600,3,2,1,yes,no,yes,no,yes,0,yes,unfurnished
6230000,5500,3,1,3,yes,no,no,no,no,1,yes,unfurnished
6195000,5500,3,2,4,yes,yes,no,no,yes,1,no,semi-furnished
6195000,6350,3,2,3,yes,yes,no,no,yes,0,no,furnished
6195000,5500,3,2,1,yes,yes,yes,no,no,2,yes,furnished
6160000,4500,3,1,4,yes,no,no,no,yes,0,no,unfurnished
6160000,5450,4,2,1,yes,no,yes,no,yes,0,yes,semi-furnished
6125000,6420,3,1,3,yes,no,yes,no,no,0,yes,unfurnished
6107500,3240,4,1,3,yes,no,no,no,no,1,no,semi-furnished
6090000,6615,4,2,2,yes,yes,no,yes,no,1,no,semi-furnished
6090000,6600,3,1,1,yes,yes,yes,no,no,2,yes,semi-furnished
6090000,8372,3,1,3,yes,no,no,no,yes,2,no,unfurnished
6083000,4300,6,2,2,yes,no,no,no,no,0,no,furnished
6083000,9620,3,1,1,yes,no,yes,no,no,2,yes,furnished
6020000,6800,2,1,1,yes,yes,yes,no,no,2,no,furnished
6020000,8000,3,1,1,yes,yes,yes,no,yes,2,yes,semi-furnished
6020000,6900,3,2,1,yes,yes,yes,no,no,0,yes,unfurnished
5950000,3700,4,1,2,yes,yes,no,no,yes,0,no,furnished
5950000,6420,3,1,1,yes,no,yes,no,yes,0,yes,furnished
5950000,7020,3,1,1,yes,no,yes,no,yes,2,yes,semi-furnished
5950000,6540,3,1,1,yes,yes,yes,no,no,2,yes,furnished
5950000,7231,3,1,2,yes,yes,yes,no,yes,0,yes,semi-furnished
5950000,6254,4,2,1,yes,no,yes,no,no,1,yes,semi-furnished
5950000,7320,4,2,2,yes,no,no,no,no,0,no,furnished
5950000,6525,3,2,4,yes,no,no,no,no,1,no,furnished
5943000,15600,3,1,1,yes,no,no,no,yes,2,no,semi-furnished
5880000,7160,3,1,1,yes,no,yes,no,no,2,yes,unfurnished
5880000,6500,3,2,3,yes,no,no,no,yes,0,no,unfurnished
5873000,5500,3,1,3,yes,yes,no,no,yes,1,no,furnished
5873000,11460,3,1,3,yes,no,no,no,no,2,yes,semi-furnished
5866000,4800,3,1,1,yes,yes,yes,no,no,0,no,unfurnished
5810000,5828,4,1,4,yes,yes,no,no,no,0,no,semi-furnished
5810000,5200,3,1,3,yes,no,no,no,yes,0,no,semi-furnished
5810000,4800,3,1,3,yes,no,no,no,yes,0,no,unfurnished
5803000,7000,3,1,1,yes,no,yes,no,no,2,yes,semi-furnished
5775000,6000,3,2,4,yes,no,no,no,yes,0,no,unfurnished
5740000,5400,4,2,2,yes,no,no,no,yes,2,no,unfurnished
5740000,4640,4,1,2,yes,no,no,no,no,1,no,semi-furnished
5740000,5000,3,1,3,yes,no,no,no,yes,0,no,semi-furnished
5740000,6360,3,1,1,yes,yes,yes,no,yes,2,yes,furnished
5740000,5800,3,2,4,yes,no,no,no,yes,0,no,unfurnished
5652500,6660,4,2,2,yes,yes,yes,no,no,1,yes,semi-furnished
5600000,10500,4,2,2,yes,no,no,no,no,1,no,semi-furnished
5600000,4800,5,2,3,no,no,yes,yes,no,0,no,unfurnished
5600000,4700,4,1,2,yes,yes,yes,no,yes,1,no,furnished
5600000,5000,3,1,4,yes,no,no,no,no,0,no,furnished
5600000,10500,2,1,1,yes,no,no,no,no,1,no,semi-furnished
5600000,5500,3,2,2,yes,no,no,no,no,1,no,semi-furnished
5600000,6360,3,1,3,yes,no,no,no,no,0,yes,semi-furnished
5600000,6600,4,2,1,yes,no,yes,no,no,0,yes,semi-furnished
5600000,5136,3,1,2,yes,yes,yes,no,yes,0,yes,unfurnished
5565000,4400,4,1,2,yes,no,no,no,yes,2,yes,semi-furnished
5565000,5400,5,1,2,yes,yes,yes,no,yes,0,yes,furnished
5530000,3300,3,3,2,yes,no,yes,no,no,0,no,semi-furnished
5530000,3650,3,2,2,yes,no,no,no,no,2,no,semi-furnished
5530000,6100,3,2,1,yes,no,yes,no,no,2,yes,furnished
5523000,6900,3,1,1,yes,yes,yes,no,no,0,yes,semi-furnished
5495000,2817,4,2,2,no,yes,yes,no,no,1,no,furnished
5495000,7980,3,1,1,yes,no,no,no,no,2,no,semi-furnished
5460000,3150,3,2,1,yes,yes,yes,no,yes,0,no,furnished
5460000,6210,4,1,4,yes,yes,no,no,yes,0,no,furnished
5460000,6100,3,1,3,yes,yes,no,no,yes,0,yes,semi-furnished
5460000,6600,4,2,2,yes,yes,yes,no,no,0,yes,semi-furnished
5425000,6825,3,1,1,yes,yes,yes,no,yes,0,yes,semi-furnished
5390000,6710,3,2,2,yes,yes,yes,no,no,1,yes,furnished
5383000,6450,3,2,1,yes,yes,yes,yes,no,0,no,unfurnished
5320000,7800,3,1,1,yes,no,yes,no,yes,2,yes,unfurnished
5285000,4600,2,2,1,yes,no,no,no,yes,2,no,semi-furnished
5250000,4260,4,1,2,yes,no,yes,no,yes,0,no,furnished
5250000,6540,4,2,2,no,no,no,no,yes,0,no,semi-furnished
5250000,5500,3,2,1,yes,no,yes,no,no,0,no,semi-furnished
5250000,10269,3,1,1,yes,no,no,no,no,1,yes,semi-furnished
5250000,8400,3,1,2,yes,yes,yes,no,yes,2,yes,unfurnished
5250000,5300,4,2,1,yes,no,no,no,yes,0,yes,unfurnished
5250000,3800,3,1,2,yes,yes,yes,no,no,1,yes,unfurnished
5250000,9800,4,2,2,yes,yes,no,no,no,2,no,semi-furnished
5250000,8520,3,1,1,yes,no,no,no,yes,2,no,furnished
5243000,6050,3,1,1,yes,no,yes,no,no,0,yes,semi-furnished
5229000,7085,3,1,1,yes,yes,yes,no,no,2,yes,semi-furnished
5215000,3180,3,2,2,yes,no,no,no,no,2,no,semi-furnished
5215000,4500,4,2,1,no,no,yes,no,yes,2,no,semi-furnished
5215000,7200,3,1,2,yes,yes,yes,no,no,1,yes,furnished
5145000,3410,3,1,2,no,no,no,no,yes,0,no,semi-furnished
5145000,7980,3,1,1,yes,no,no,no,no,1,yes,semi-furnished
5110000,3000,3,2,2,yes,yes,yes,no,no,0,no,furnished
5110000,3000,3,1,2,yes,no,yes,no,no,0,no,unfurnished
5110000,11410,2,1,2,yes,no,no,no,no,0,yes,furnished
5110000,6100,3,1,1,yes,no,yes,no,yes,0,yes,semi-furnished
5075000,5720,2,1,2,yes,no,no,no,yes,0,yes,unfurnished
5040000,3540,2,1,1,no,yes,yes,no,no,0,no,semi-furnished
5040000,7600,4,1,2,yes,no,no,no,yes,2,no,furnished
5040000,10700,3,1,2,yes,yes,yes,no,no,0,no,semi-furnished
5040000,6600,3,1,1,yes,yes,yes,no,no,0,yes,furnished
5033000,4800,2,1,1,yes,yes,yes,no,no,0,no,semi-furnished
5005000,8150,3,2,1,yes,yes,yes,no,no,0,no,semi-furnished
4970000,4410,4,3,2,yes,no,yes,no,no,2,no,semi-furnished
4970000,7686,3,1,1,yes,yes,yes,yes,no,0,no,semi-furnished
4956000,2800,3,2,2,no,no,yes,no,yes,1,no,semi-furnished
4935000,5948,3,1,2,yes,no,no,no,yes,0,no,semi-furnished
4907000,4200,3,1,2,yes,no,no,no,no,1,no,furnished
4900000,4520,3,1,2,yes,no,yes,no,yes,0,no,semi-furnished
4900000,4095,3,1,2,no,yes,yes,no,yes,0,no,semi-furnished
4900000,4120,2,1,1,yes,no,yes,no,no,1,no,semi-furnished
4900000,5400,4,1,2,yes,no,no,no,no,0,no,semi-furnished
4900000,4770,3,1,1,yes,yes,yes,no,no,0,no,semi-furnished
4900000,6300,3,1,1,yes,no,no,no,yes,2,no,semi-furnished
4900000,5800,2,1,1,yes,yes,yes,no,yes,0,no,semi-furnished
4900000,3000,3,1,2,yes,no,yes,no,yes,0,no,semi-furnished
4900000,2970,3,1,3,yes,no,no,no,no,0,no,semi-furnished
4900000,6720,3,1,1,yes,no,no,no,no,0,no,unfurnished
4900000,4646,3,1,2,yes,yes,yes,no,no,2,no,semi-furnished
4900000,12900,3,1,1,yes,no,no,no,no,2,no,furnished
4893000,3420,4,2,2,yes,no,yes,no,yes,2,no,semi-furnished
4893000,4995,4,2,1,yes,no,yes,no,no,0,no,semi-furnished
4865000,4350,2,1,1,yes,no,yes,no,no,0,no,unfurnished
4830000,4160,3,1,3,yes,no,no,no,no,0,no,unfurnished
4830000,6040,3,1,1,yes,no,no,no,no,2,yes,semi-furnished
4830000,6862,3,1,2,yes,no,no,no,yes,2,yes,furnished
4830000,4815,2,1,1,yes,no,no,no,yes,0,yes,semi-furnished
4795000,7000,3,1,2,yes,no,yes,no,no,0,no,unfurnished
4795000,8100,4,1,4,yes,no,yes,no,yes,2,no,semi-furnished
4767000,3420,4,2,2,yes,no,no,no,no,0,no,semi-furnished
4760000,9166,2,1,1,yes,no,yes,no,yes,2,no,semi-furnished
4760000,6321,3,1,2,yes,no,yes,no,yes,1,no,furnished
4760000,10240,2,1,1,yes,no,no,no,yes,2,yes,unfurnished
4753000,6440,2,1,1,yes,no,no,no,yes,3,no,semi-furnished
4690000,5170,3,1,4,yes,no,no,no,yes,0,no,semi-furnished
4690000,6000,2,1,1,yes,no,yes,no,yes,1,no,furnished
4690000,3630,3,1,2,yes,no,no,no,no,2,no,semi-furnished
4690000,9667,4,2,2,yes,yes,yes,no,no,1,no,semi-furnished
4690000,5400,2,1,2,yes,no,no,no,no,0,yes,semi-furnished
4690000,4320,3,1,1,yes,no,no,no,no,0,yes,semi-furnished
4655000,3745,3,1,2,yes,no,yes,no,no,0,no,furnished
4620000,4160,3,1,1,yes,yes,yes,no,yes,0,no,unfurnished
4620000,3880,3,2,2,yes,no,yes,no,no,2,no,semi-furnished
4620000,5680,3,1,2,yes,yes,no,no,yes,1,no,semi-furnished
4620000,2870,2,1,2,yes,yes,yes,no,no,0,yes,semi-furnished
4620000,5010,3,1,2,yes,no,yes,no,no,0,no,semi-furnished
4613000,4510,4,2,2,yes,no,yes,no,no,0,no,semi-furnished
4585000,4000,3,1,2,yes,no,no,no,no,1,no,furnished
4585000,3840,3,1,2,yes,no,no,no,no,1,yes,semi-furnished
4550000,3760,3,1,1,yes,no,no,no,no,2,no,semi-furnished
4550000,3640,3,1,2,yes,no,no,no,yes,0,no,furnished
4550000,2550,3,1,2,yes,no,yes,no,no,0,no,furnished
4550000,5320,3,1,2,yes,yes,yes,no,no,0,yes,semi-furnished
4550000,5360,3,1,2,yes,no,no,no,no,2,yes,unfurnished
4550000,3520,3,1,1,yes,no,no,no,no,0,yes,semi-furnished
4550000,8400,4,1,4,yes,no,no,no,no,3,no,unfurnished
4543000,4100,2,2,1,yes,yes,yes,no,no,0,no,semi-furnished
4543000,4990,4,2,2,yes,yes,yes,no,no,0,yes,furnished
4515000,3510,3,1,3,yes,no,no,no,no,0,no,semi-furnished
4515000,3450,3,1,2,yes,no,yes,no,no,1,no,semi-furnished
4515000,9860,3,1,1,yes,no,no,no,no,0,no,semi-furnished
4515000,3520,2,1,2,yes,no,no,no,no,0,yes,furnished
4480000,4510,4,1,2,yes,no,no,no,yes,2,no,semi-furnished
4480000,5885,2,1,1,yes,no,no,no,yes,1,no,unfurnished
4480000,4000,3,1,2,yes,no,no,no,no,2,no,furnished
4480000,8250,3,1,1,yes,no,no,no,no,0,no,furnished
4480000,4040,3,1,2,yes,no,no,no,no,1,no,semi-furnished
4473000,6360,2,1,1,yes,no,yes,no,yes,1,no,furnished
4473000,3162,3,1,2,yes,no,no,no,yes,1,no,furnished
4473000,3510,3,1,2,yes,no,no,no,no,0,no,semi-furnished
4445000,3750,2,1,1,yes,yes,yes,no,no,0,no,semi-furnished
4410000,3968,3,1,2,no,no,no,no,no,0,no,semi-furnished
4410000,4900,2,1,2,yes,no,yes,no,no,0,no,semi-furnished
4403000,2880,3,1,2,yes,no,no,no,no,0,yes,semi-furnished
4403000,4880,3,1,1,yes,no,no,no,no,2,yes,unfurnished
4403000,4920,3,1,2,yes,no,no,no,no,1,no,semi-furnished
4382000,4950,4,1,2,yes,no,no,no,yes,0,no,semi-furnished
4375000,3900,3,1,2,yes,no,no,no,no,0,no,unfurnished
4340000,4500,3,2,3,yes,no,no,yes,no,1,no,furnished
4340000,1905,5,1,2,no,no,yes,no,no,0,no,semi-furnished
4340000,4075,3,1,1,yes,yes,yes,no,no,2,no,semi-furnished
4340000,3500,4,1,2,yes,no,no,no,no,2,no,furnished
4340000,6450,4,1,2,yes,no,no,no,no,0,no,semi-furnished
4319000,4032,2,1,1,yes,no,yes,no,no,0,no,furnished
4305000,4400,2,1,1,yes,no,no,no,no,1,no,semi-furnished
4305000,10360,2,1,1,yes,no,no,no,no,1,yes,semi-furnished
4277000,3400,3,1,2,yes,no,yes,no,no,2,yes,semi-furnished
4270000,6360,2,1,1,yes,no,no,no,no,0,no,furnished
4270000,6360,2,1,2,yes,no,no,no,no,0,no,unfurnished
4270000,4500,2,1,1,yes,no,no,no,yes,2,no,furnished
4270000,2175,3,1,2,no,yes,yes,no,yes,0,no,unfurnished
4270000,4360,4,1,2,yes,no,no,no,no,0,no,furnished
4270000,7770,2,1,1,yes,no,no,no,no,1,no,furnished
4235000,6650,3,1,2,yes,yes,no,no,no,0,no,semi-furnished
4235000,2787,3,1,1,yes,no,yes,no,no,0,yes,furnished
4200000,5500,3,1,2,yes,no,no,no,yes,0,no,unfurnished
4200000,5040,3,1,2,yes,no,yes,no,yes,0,no,unfurnished
4200000,5850,2,1,1,yes,yes,yes,no,no,2,no,semi-furnished
4200000,2610,4,3,2,no,no,no,no,no,0,no,semi-furnished
4200000,2953,3,1,2,yes,no,yes,no,yes,0,no,unfurnished
4200000,2747,4,2,2,no,no,no,no,no,0,no,semi-furnished
4200000,4410,2,1,1,no,no,no,no,no,1,no,unfurnished
4200000,4000,4,2,2,no,no,no,no,no,0,no,semi-furnished
4200000,2325,3,1,2,no,no,no,no,no,0,no,semi-furnished
4200000,4600,3,2,2,yes,no,no,no,yes,1,no,semi-furnished
4200000,3640,3,2,2,yes,no,yes,no,no,0,no,unfurnished
4200000,5800,3,1,1,yes,no,no,yes,no,2,no,semi-furnished
4200000,7000,3,1,1,yes,no,no,no,no,3,no,furnished
4200000,4079,3,1,3,yes,no,no,no,no,0,no,semi-furnished
4200000,3520,3,1,2,yes,no,no,no,no,0,yes,semi-furnished
4200000,2145,3,1,3,yes,no,no,no,no,1,yes,unfurnished
4200000,4500,3,1,1,yes,no,yes,no,no,0,no,furnished
4193000,8250,3,1,1,yes,no,yes,no,no,3,no,semi-furnished
4193000,3450,3,1,2,yes,no,no,no,no,1,no,semi-furnished
4165000,4840,3,1,2,yes,no,no,no,no,1,no,semi-furnished
4165000,4080,3,1,2,yes,no,no,no,no,2,no,semi-furnished
4165000,4046,3,1,2,yes,no,yes,no,no,1,no,semi-furnished
4130000,4632,4,1,2,yes,no,no,no,yes,0,no,semi-furnished
4130000,5985,3,1,1,yes,no,yes,no,no,0,no,semi-furnished
4123000,6060,2,1,1,yes,no,yes,no,no,1,no,semi-furnished
4098500,3600,3,1,1,yes,no,yes,no,yes,0,yes,furnished
4095000,3680,3,2,2,yes,no,no,no,no,0,no,semi-furnished
4095000,4040,2,1,2,yes,no,no,no,no,1,no,semi-furnished
4095000,5600,2,1,1,yes,no,no,no,yes,0,no,semi-furnished
4060000,5900,4,2,2,no,no,yes,no,no,1,no,unfurnished
4060000,4992,3,2,2,yes,no,no,no,no,2,no,unfurnished
4060000,4340,3,1,1,yes,no,no,no,no,0,no,semi-furnished
4060000,3000,4,1,3,yes,no,yes,no,yes,2,no,semi-furnished
4060000,4320,3,1,2,yes,no,no,no,no,2,yes,furnished
4025000,3630,3,2,2,yes,no,no,yes,no,2,no,semi-furnished
4025000,3460,3,2,1,yes,no,yes,no,yes,1,no,furnished
4025000,5400,3,1,1,yes,no,no,no,no,3,no,semi-furnished
4007500,4500,3,1,2,no,no,yes,no,yes,0,no,semi-furnished
4007500,3460,4,1,2,yes,no,no,no,yes,0,no,semi-furnished
3990000,4100,4,1,1,no,no,yes,no,no,0,no,unfurnished
3990000,6480,3,1,2,no,no,no,no,yes,1,no,semi-furnished
3990000,4500,3,2,2,no,no,yes,no,yes,0,no,semi-furnished
3990000,3960,3,1,2,yes,no,no,no,no,0,no,furnished
3990000,4050,2,1,2,yes,yes,yes,no,no,0,yes,unfurnished
3920000,7260,3,2,1,yes,yes,yes,no,no,3,no,furnished
3920000,5500,4,1,2,yes,yes,yes,no,no,0,no,semi-furnished
3920000,3000,3,1,2,yes,no,no,no,no,0,no,semi-furnished
3920000,3290,2,1,1,yes,no,no,yes,no,1,no,furnished
3920000,3816,2,1,1,yes,no,yes,no,yes,2,no,furnished
3920000,8080,3,1,1,yes,no,no,no,yes,2,no,semi-furnished
3920000,2145,4,2,1,yes,no,yes,no,no,0,yes,unfurnished
3885000,3780,2,1,2,yes,yes,yes,no,no,0,no,semi-furnished
3885000,3180,4,2,2,yes,no,no,no,no,0,no,furnished
3850000,5300,5,2,2,yes,no,no,no,no,0,no,semi-furnished
3850000,3180,2,2,1,yes,no,yes,no,no,2,no,semi-furnished
3850000,7152,3,1,2,yes,no,no,no,yes,0,no,furnished
3850000,4080,2,1,1,yes,no,no,no,no,0,no,semi-furnished
3850000,3850,2,1,1,yes,no,no,no,no,0,no,semi-furnished
3850000,2015,3,1,2,yes,no,yes,no,no,0,yes,semi-furnished
3850000,2176,2,1,2,yes,yes,no,no,no,0,yes,semi-furnished
3836000,3350,3,1,2,yes,no,no,no,no,0,no,unfurnished
3815000,3150,2,2,1,no,no,yes,no,no,0,no,semi-furnished
3780000,4820,3,1,2,yes,no,no,no,no,0,no,semi-furnished
3780000,3420,2,1,2,yes,no,no,yes,no,1,no,semi-furnished
3780000,3600,2,1,1,yes,no,no,no,no,0,no,semi-furnished
3780000,5830,2,1,1,yes,no,no,no,no,2,no,unfurnished
3780000,2856,3,1,3,yes,no,no,no,no,0,yes,furnished
3780000,8400,2,1,1,yes,no,no,no,no,1,no,furnished
3773000,8250,3,1,1,yes,no,no,no,no,2,no,furnished
3773000,2520,5,2,1,no,no,yes,no,yes,1,no,furnished
3773000,6930,4,1,2,no,no,no,no,no,1,no,furnished
3745000,3480,2,1,1,yes,no,no,no,no,0,yes,semi-furnished
3710000,3600,3,1,1,yes,no,no,no,no,1,no,unfurnished
3710000,4040,2,1,1,yes,no,no,no,no,0,no,semi-furnished
3710000,6020,3,1,1,yes,no,no,no,no,0,no,semi-furnished
3710000,4050,2,1,1,yes,no,no,no,no,0,no,furnished
3710000,3584,2,1,1,yes,no,no,yes,no,0,no,semi-furnished
3703000,3120,3,1,2,no,no,yes,yes,no,0,no,semi-furnished
3703000,5450,2,1,1,yes,no,no,no,no,0,no,furnished
3675000,3630,2,1,1,yes,no,yes,no,no,0,no,furnished
3675000,3630,2,1,1,yes,no,no,no,yes,0,no,unfurnished
3675000,5640,2,1,1,no,no,no,no,no,0,no,semi-furnished
3675000,3600,2,1,1,yes,no,no,no,no,0,no,furnished
3640000,4280,2,1,1,yes,no,no,no,yes,2,no,semi-furnished
3640000,3570,3,1,2,yes,no,yes,no,no,0,no,semi-furnished
3640000,3180,3,1,2,no,no,yes,no,no,0,no,semi-furnished
3640000,3000,2,1,2,yes,no,no,no,yes,0,no,furnished
3640000,3520,2,2,1,yes,no,yes,no,no,0,no,semi-furnished
3640000,5960,3,1,2,yes,yes,yes,no,no,0,no,unfurnished
3640000,4130,3,2,2,yes,no,no,no,no,2,no,semi-furnished
3640000,2850,3,2,2,no,no,yes,no,no,0,yes,unfurnished
3640000,2275,3,1,3,yes,no,no,yes,yes,0,yes,semi-furnished
3633000,3520,3,1,1,yes,no,no,no,no,2,yes,unfurnished
3605000,4500,2,1,1,yes,no,no,no,no,0,no,semi-furnished
3605000,4000,2,1,1,yes,no,no,no,no,0,yes,semi-furnished
3570000,3150,3,1,2,yes,no,yes,no,no,0,no,furnished
3570000,4500,4,2,2,yes,no,yes,no,no,2,no,furnished
3570000,4500,2,1,1,no,no,no,no,no,0,no,furnished
3570000,3640,2,1,1,yes,no,no,no,no,0,no,unfurnished
3535000,3850,3,1,1,yes,no,no,no,no,2,no,unfurnished
3500000,4240,3,1,2,yes,no,no,no,yes,0,no,semi-furnished
3500000,3650,3,1,2,yes,no,no,no,no,0,no,unfurnished
3500000,4600,4,1,2,yes,no,no,no,no,0,no,semi-furnished
3500000,2135,3,2,2,no,no,no,no,no,0,no,unfurnished
3500000,3036,3,1,2,yes,no,yes,no,no,0,no,semi-furnished
3500000,3990,3,1,2,yes,no,no,no,no,0,no,semi-furnished
3500000,7424,3,1,1,no,no,no,no,no,0,no,unfurnished
3500000,3480,3,1,1,no,no,no,no,yes,0,no,unfurnished
3500000,3600,6,1,2,yes,no,no,no,no,1,no,unfurnished
3500000,3640,2,1,1,yes,no,no,no,no,1,no,semi-furnished
3500000,5900,2,1,1,yes,no,no,no,no,1,no,furnished
3500000,3120,3,1,2,yes,no,no,no,no,1,no,unfurnished
3500000,7350,2,1,1,yes,no,no,no,no,1,no,semi-furnished
3500000,3512,2,1,1,yes,no,no,no,no,1,yes,unfurnished
3500000,9500,3,1,2,yes,no,no,no,no,3,yes,unfurnished
3500000,5880,2,1,1,yes,no,no,no,no,0,no,unfurnished
3500000,12944,3,1,1,yes,no,no,no,no,0,no,unfurnished
3493000,4900,3,1,2,no,no,no,no,no,0,no,unfurnished
3465000,3060,3,1,1,yes,no,no,no,no,0,no,unfurnished
3465000,5320,2,1,1,yes,no,no,no,no,1,yes,unfurnished
3465000,2145,3,1,3,yes,no,no,no,no,0,yes,furnished
3430000,4000,2,1,1,yes,no,no,no,no,0,no,unfurnished
3430000,3185,2,1,1,yes,no,no,no,no,2,no,unfurnished
3430000,3850,3,1,1,yes,no,no,no,no,0,no,unfurnished
3430000,2145,3,1,3,yes,no,no,no,no,0,yes,furnished
3430000,2610,3,1,2,yes,no,yes,no,no,0,yes,unfurnished
3430000,1950,3,2,2,yes,no,yes,no,no,0,yes,unfurnished
3423000,4040,2,1,1,yes,no,no,no,no,0,no,unfurnished
3395000,4785,3,1,2,yes,yes,yes,no,yes,1,no,furnished
3395000,3450,3,1,1,yes,no,yes,no,no,2,no,unfurnished
3395000,3640,2,1,1,yes,no,no,no,no,0,no,furnished
3360000,3500,4,1,2,yes,no,no,no,yes,2,no,unfurnished
3360000,4960,4,1,3,no,no,no,no,no,0,no,semi-furnished
3360000,4120,2,1,2,yes,no,no,no,no,0,no,unfurnished
3360000,4750,2,1,1,yes,no,no,no,no,0,no,unfurnished
3360000,3720,2,1,1,no,no,no,no,yes,0,no,unfurnished
3360000,3750,3,1,1,yes,no,no,no,no,0,no,unfurnished
3360000,3100,3,1,2,no,no,yes,no,no,0,no,semi-furnished
3360000,3185,2,1,1,yes,no,yes,no,no,2,no,furnished
3353000,2700,3,1,1,no,no,no,no,no,0,no,furnished
3332000,2145,3,1,2,yes,no,yes,no,no,0,yes,furnished
3325000,4040,2,1,1,yes,no,no,no,no,1,no,unfurnished
3325000,4775,4,1,2,yes,no,no,no,no,0,no,unfurnished
3290000,2500,2,1,1,no,no,no,no,yes,0,no,unfurnished
3290000,3180,4,1,2,yes,no,yes,no,yes,0,no,unfurnished
3290000,6060,3,1,1,yes,yes,yes,no,no,0,no,furnished
3290000,3480,4,1,2,no,no,no,no,no,1,no,semi-furnished
3290000,3792,4,1,2,yes,no,no,no,no,0,no,semi-furnished
3290000,4040,2,1,1,yes,no,no,no,no,0,no,unfurnished
3290000,2145,3,1,2,yes,no,yes,no,no,0,yes,furnished
3290000,5880,3,1,1,yes,no,no,no,no,1,no,unfurnished
3255000,4500,2,1,1,no,no,no,no,no,0,no,semi-furnished
3255000,3930,2,1,1,no,no,no,no,no,0,no,unfurnished
3234000,3640,4,1,2,yes,no,yes,no,no,0,no,unfurnished
3220000,4370,3,1,2,yes,no,no,no,no,0,no,unfurnished
3220000,2684,2,1,1,yes,no,no,no,yes,1,no,unfurnished
3220000,4320,3,1,1,no,no,no,no,no,1,no,unfurnished
3220000,3120,3,1,2,no,no,no,no,no,0,no,furnished
3150000,3450,1,1,1,yes,no,no,no,no,0,no,furnished
3150000,3986,2,2,1,no,yes,yes,no,no,1,no,unfurnished
3150000,3500,2,1,1,no,no,yes,no,no,0,no,semi-furnished
3150000,4095,2,1,1,yes,no,no,no,no,2,no,semi-furnished
3150000,1650,3,1,2,no,no,yes,no,no,0,no,unfurnished
3150000,3450,3,1,2,yes,no,yes,no,no,0,no,semi-furnished
3150000,6750,2,1,1,yes,no,no,no,no,0,no,semi-furnished
3150000,9000,3,1,2,yes,no,no,no,no,2,no,semi-furnished
3150000,3069,2,1,1,yes,no,no,no,no,1,no,unfurnished
3143000,4500,3,1,2,yes,no,no,no,yes,0,no,unfurnished
3129000,5495,3,1,1,yes,no,yes,no,no,0,no,unfurnished
3118850,2398,3,1,1,yes,no,no,no,no,0,yes,semi-furnished
3115000,3000,3,1,1,no,no,no,no,yes,0,no,unfurnished
3115000,3850,3,1,2,yes,no,no,no,no,0,no,unfurnished
3115000,3500,2,1,1,yes,no,no,no,no,0,no,unfurnished
3087000,8100,2,1,1,yes,no,no,no,no,1,no,unfurnished
3080000,4960,2,1,1,yes,no,yes,no,yes,0,no,unfurnished
3080000,2160,3,1,2,no,no,yes,no,no,0,no,semi-furnished
3080000,3090,2,1,1,yes,yes,yes,no,no,0,no,unfurnished
3080000,4500,2,1,2,yes,no,no,yes,no,1,no,semi-furnished
3045000,3800,2,1,1,yes,no,no,no,no,0,no,unfurnished
3010000,3090,3,1,2,no,no,no,no,no,0,no,semi-furnished
3010000,3240,3,1,2,yes,no,no,no,no,2,no,semi-furnished
3010000,2835,2,1,1,yes,no,no,no,no,0,no,semi-furnished
3010000,4600,2,1,1,yes,no,no,no,no,0,no,furnished
3010000,5076,3,1,1,no,no,no,no,no,0,no,unfurnished
3010000,3750,3,1,2,yes,no,no,no,no,0,no,unfurnished
3010000,3630,4,1,2,yes,no,no,no,no,3,no,semi-furnished
3003000,8050,2,1,1,yes,no,no,no,no,0,no,unfurnished
2975000,4352,4,1,2,no,no,no,no,no,1,no,unfurnished
2961000,3000,2,1,2,yes,no,no,no,no,0,no,semi-furnished
2940000,5850,3,1,2,yes,no,yes,no,no,1,no,unfurnished
2940000,4960,2,1,1,yes,no,no,no,no,0,no,unfurnished
2940000,3600,3,1,2,no,no,no,no,no,1,no,unfurnished
2940000,3660,4,1,2,no,no,no,no,no,0,no,unfurnished
2940000,3480,3,1,2,no,no,no,no,no,1,no,semi-furnished
2940000,2700,2,1,1,no,no,no,no,no,0,no,furnished
2940000,3150,3,1,2,no,no,no,no,no,0,no,unfurnished
2940000,6615,3,1,2,yes,no,no,no,no,0,no,semi-furnished
2870000,3040,2,1,1,no,no,no,no,no,0,no,unfurnished
2870000,3630,2,1,1,yes,no,no,no,no,0,no,unfurnished
2870000,6000,2,1,1,yes,no,no,no,no,0,no,semi-furnished
2870000,5400,4,1,2,yes,no,no,no,no,0,no,unfurnished
2852500,5200,4,1,3,yes,no,no,no,no,0,no,unfurnished
2835000,3300,3,1,2,no,no,no,no,no,1,no,semi-furnished
2835000,4350,3,1,2,no,no,no,yes,no,1,no,unfurnished
2835000,2640,2,1,1,no,no,no,no,no,1,no,furnished
2800000,2650,3,1,2,yes,no,yes,no,no,1,no,unfurnished
2800000,3960,3,1,1,yes,no,no,no,no,0,no,furnished
2730000,6800,2,1,1,yes,no,no,no,no,0,no,unfurnished
2730000,4000,3,1,2,yes,no,no,no,no,1,no,unfurnished
2695000,4000,2,1,1,yes,no,no,no,no,0,no,unfurnished
2660000,3934,2,1,1,yes,no,no,no,no,0,no,unfurnished
2660000,2000,2,1,2,yes,no,no,no,no,0,no,semi-furnished
2660000,3630,3,3,2,no,yes,no,no,no,0,no,unfurnished
2660000,2800,3,1,1,yes,no,no,no,no,0,no,unfurnished
2660000,2430,3,1,1,no,no,no,no,no,0,no,unfurnished
2660000,3480,2,1,1,yes,no,no,no,no,1,no,semi-furnished
2660000,4000,3,1,1,yes,no,no,no,no,0,no,semi-furnished
2653000,3185,2,1,1,yes,no,no,no,yes,0,no,unfurnished
2653000,4000,3,1,2,yes,no,no,no,yes,0,no,unfurnished
2604000,2910,2,1,1,no,no,no,no,no,0,no,unfurnished
2590000,3600,2,1,1,yes,no,no,no,no,0,no,unfurnished
2590000,4400,2,1,1,yes,no,no,no,no,0,no,unfurnished
2590000,3600,2,2,2,yes,no,yes,no,no,1,no,furnished
2520000,2880,3,1,1,no,no,no,no,no,0,no,unfurnished
2520000,3180,3,1,1,no,no,no,no,no,0,no,unfurnished
2520000,3000,2,1,2,yes,no,no,no,no,0,no,furnished
2485000,4400,3,1,2,yes,no,no,no,no,0,no,unfurnished
2485000,3000,3,1,2,no,no,no,no,no,0,no,semi-furnished
2450000,3210,3,1,2,yes,no,yes,no,no,0,no,unfurnished
2450000,3240,2,1,1,no,yes,no,no,no,1,no,unfurnished
2450000,3000,2,1,1,yes,no,no,no,no,1,no,unfurnished
2450000,3500,2,1,1,yes,yes,no,no,no,0,no,unfurnished
2450000,4840,2,1,2,yes,no,no,no,no,0,no,unfurnished
2450000,7700,2,1,1,yes,no,no,no,no,0,no,unfurnished
2408000,3635,2,1,1,no,no,no,no,no,0,no,unfurnished
2380000,2475,3,1,2,yes,no,no,no,no,0,no,furnished
2380000,2787,4,2,2,yes,no,no,no,no,0,no,furnished
2380000,3264,2,1,1,yes,no,no,no,no,0,no,unfurnished
2345000,3640,2,1,1,yes,no,no,no,no,0,no,unfurnished
2310000,3180,2,1,1,yes,no,no,no,no,0,no,unfurnished
2275000,1836,2,1,1,no,no,yes,no,no,0,no,semi-furnished
2275000,3970,1,1,1,no,no,no,no,no,0,no,unfurnished
2275000,3970,3,1,2,yes,no,yes,no,no,0,no,unfurnished
2240000,1950,3,1,1,no,no,no,yes,no,0,no,unfurnished
2233000,5300,3,1,1,no,no,no,no,yes,0,yes,unfurnished
2135000,3000,2,1,1,no,no,no,no,no,0,no,unfurnished
2100000,2400,3,1,2,yes,no,no,no,no,0,no,unfurnished
2100000,3000,4,1,2,yes,no,no,no,no,0,no,unfurnished
2100000,3360,2,1,1,yes,no,no,no,no,1,no,unfurnished
1960000,3420,5,1,2,no,no,no,no,no,0,no,unfurnished
1890000,1700,3,1,2,yes,no,no,no,no,0,no,unfurnished
1890000,3649,2,1,1,yes,no,no,no,no,0,no,unfurnished
1855000,2990,2,1,1,no,no,no,no,no,1,no,unfurnished
1820000,3000,2,1,1,yes,no,yes,no,no,2,no,unfurnished
1767150,2400,3,1,1,no,no,no,no,no,0,no,semi-furnished
1750000,3620,2,1,1,yes,no,no,no,no,0,no,unfurnished
1750000,2910,3,1,1,no,no,no,no,no,0,no,furnished
1750000,3850,3,1,2,yes,no,no,no,no,0,no,unfurnished
1 price area bedrooms bathrooms stories mainroad guestroom basement hotwaterheating airconditioning parking prefarea furnishingstatus
2 13300000 7420 4 2 3 yes no no no yes 2 yes furnished
3 12250000 8960 4 4 4 yes no no no yes 3 no furnished
4 12250000 9960 3 2 2 yes no yes no no 2 yes semi-furnished
5 12215000 7500 4 2 2 yes no yes no yes 3 yes furnished
6 11410000 7420 4 1 2 yes yes yes no yes 2 no furnished
7 10850000 7500 3 3 1 yes no yes no yes 2 yes semi-furnished
8 10150000 8580 4 3 4 yes no no no yes 2 yes semi-furnished
9 10150000 16200 5 3 2 yes no no no no 0 no unfurnished
10 9870000 8100 4 1 2 yes yes yes no yes 2 yes furnished
11 9800000 5750 3 2 4 yes yes no no yes 1 yes unfurnished
12 9800000 13200 3 1 2 yes no yes no yes 2 yes furnished
13 9681000 6000 4 3 2 yes yes yes yes no 2 no semi-furnished
14 9310000 6550 4 2 2 yes no no no yes 1 yes semi-furnished
15 9240000 3500 4 2 2 yes no no yes no 2 no furnished
16 9240000 7800 3 2 2 yes no no no no 0 yes semi-furnished
17 9100000 6000 4 1 2 yes no yes no no 2 no semi-furnished
18 9100000 6600 4 2 2 yes yes yes no yes 1 yes unfurnished
19 8960000 8500 3 2 4 yes no no no yes 2 no furnished
20 8890000 4600 3 2 2 yes yes no no yes 2 no furnished
21 8855000 6420 3 2 2 yes no no no yes 1 yes semi-furnished
22 8750000 4320 3 1 2 yes no yes yes no 2 no semi-furnished
23 8680000 7155 3 2 1 yes yes yes no yes 2 no unfurnished
24 8645000 8050 3 1 1 yes yes yes no yes 1 no furnished
25 8645000 4560 3 2 2 yes yes yes no yes 1 no furnished
26 8575000 8800 3 2 2 yes no no no yes 2 no furnished
27 8540000 6540 4 2 2 yes yes yes no yes 2 yes furnished
28 8463000 6000 3 2 4 yes yes yes no yes 0 yes semi-furnished
29 8400000 8875 3 1 1 yes no no no no 1 no semi-furnished
30 8400000 7950 5 2 2 yes no yes yes no 2 no unfurnished
31 8400000 5500 4 2 2 yes no yes no yes 1 yes semi-furnished
32 8400000 7475 3 2 4 yes no no no yes 2 no unfurnished
33 8400000 7000 3 1 4 yes no no no yes 2 no semi-furnished
34 8295000 4880 4 2 2 yes no no no yes 1 yes furnished
35 8190000 5960 3 3 2 yes yes yes no no 1 no unfurnished
36 8120000 6840 5 1 2 yes yes yes no yes 1 no furnished
37 8080940 7000 3 2 4 yes no no no yes 2 no furnished
38 8043000 7482 3 2 3 yes no no yes no 1 yes furnished
39 7980000 9000 4 2 4 yes no no no yes 2 no furnished
40 7962500 6000 3 1 4 yes yes no no yes 2 no unfurnished
41 7910000 6000 4 2 4 yes no no no yes 1 no semi-furnished
42 7875000 6550 3 1 2 yes no yes no yes 0 yes furnished
43 7840000 6360 3 2 4 yes no no no yes 0 yes furnished
44 7700000 6480 3 2 4 yes no no no yes 2 no unfurnished
45 7700000 6000 4 2 4 yes no no no no 2 no semi-furnished
46 7560000 6000 4 2 4 yes no no no yes 1 no furnished
47 7560000 6000 3 2 3 yes no no no yes 0 no semi-furnished
48 7525000 6000 3 2 4 yes no no no yes 1 no furnished
49 7490000 6600 3 1 4 yes no no no yes 3 yes furnished
50 7455000 4300 3 2 2 yes no yes no no 1 no unfurnished
51 7420000 7440 3 2 1 yes yes yes no yes 0 yes semi-furnished
52 7420000 7440 3 2 4 yes no no no no 1 yes unfurnished
53 7420000 6325 3 1 4 yes no no no yes 1 no unfurnished
54 7350000 6000 4 2 4 yes yes no no yes 1 no furnished
55 7350000 5150 3 2 4 yes no no no yes 2 no semi-furnished
56 7350000 6000 3 2 2 yes yes no no yes 1 no semi-furnished
57 7350000 6000 3 1 2 yes no no no yes 1 no unfurnished
58 7343000 11440 4 1 2 yes no yes no no 1 yes semi-furnished
59 7245000 9000 4 2 4 yes yes no no yes 1 yes furnished
60 7210000 7680 4 2 4 yes yes no no yes 1 no semi-furnished
61 7210000 6000 3 2 4 yes yes no no yes 1 no furnished
62 7140000 6000 3 2 2 yes yes no no no 1 no semi-furnished
63 7070000 8880 2 1 1 yes no no no yes 1 no semi-furnished
64 7070000 6240 4 2 2 yes no no no yes 1 no furnished
65 7035000 6360 4 2 3 yes no no no yes 2 yes furnished
66 7000000 11175 3 1 1 yes no yes no yes 1 yes furnished
67 6930000 8880 3 2 2 yes no yes no yes 1 no furnished
68 6930000 13200 2 1 1 yes no yes yes no 1 no furnished
69 6895000 7700 3 2 1 yes no no no no 2 no unfurnished
70 6860000 6000 3 1 1 yes no no no yes 1 no furnished
71 6790000 12090 4 2 2 yes no no no no 2 yes furnished
72 6790000 4000 3 2 2 yes no yes no yes 0 yes semi-furnished
73 6755000 6000 4 2 4 yes no no no yes 0 no unfurnished
74 6720000 5020 3 1 4 yes no no no yes 0 yes unfurnished
75 6685000 6600 2 2 4 yes no yes no no 0 yes furnished
76 6650000 4040 3 1 2 yes no yes yes no 1 no furnished
77 6650000 4260 4 2 2 yes no no yes no 0 no semi-furnished
78 6650000 6420 3 2 3 yes no no no yes 0 yes furnished
79 6650000 6500 3 2 3 yes no no no yes 0 yes furnished
80 6650000 5700 3 1 1 yes yes yes no yes 2 yes furnished
81 6650000 6000 3 2 3 yes yes no no yes 0 no furnished
82 6629000 6000 3 1 2 yes no no yes no 1 yes semi-furnished
83 6615000 4000 3 2 2 yes no yes no yes 1 no semi-furnished
84 6615000 10500 3 2 1 yes no yes no yes 1 yes furnished
85 6580000 6000 3 2 4 yes no no no yes 0 no semi-furnished
86 6510000 3760 3 1 2 yes no no yes no 2 no semi-furnished
87 6510000 8250 3 2 3 yes no no no yes 0 no furnished
88 6510000 6670 3 1 3 yes no yes no no 0 yes unfurnished
89 6475000 3960 3 1 1 yes no yes no no 2 no semi-furnished
90 6475000 7410 3 1 1 yes yes yes no yes 2 yes unfurnished
91 6440000 8580 5 3 2 yes no no no no 2 no furnished
92 6440000 5000 3 1 2 yes no no no yes 0 no semi-furnished
93 6419000 6750 2 1 1 yes yes yes no no 2 yes furnished
94 6405000 4800 3 2 4 yes yes no no yes 0 no furnished
95 6300000 7200 3 2 1 yes no yes no yes 3 no semi-furnished
96 6300000 6000 4 2 4 yes no no no no 1 no semi-furnished
97 6300000 4100 3 2 3 yes no no no yes 2 no semi-furnished
98 6300000 9000 3 1 1 yes no yes no no 1 yes furnished
99 6300000 6400 3 1 1 yes yes yes no yes 1 yes semi-furnished
100 6293000 6600 3 2 3 yes no no no yes 0 yes unfurnished
101 6265000 6000 4 1 3 yes yes yes no no 0 yes unfurnished
102 6230000 6600 3 2 1 yes no yes no yes 0 yes unfurnished
103 6230000 5500 3 1 3 yes no no no no 1 yes unfurnished
104 6195000 5500 3 2 4 yes yes no no yes 1 no semi-furnished
105 6195000 6350 3 2 3 yes yes no no yes 0 no furnished
106 6195000 5500 3 2 1 yes yes yes no no 2 yes furnished
107 6160000 4500 3 1 4 yes no no no yes 0 no unfurnished
108 6160000 5450 4 2 1 yes no yes no yes 0 yes semi-furnished
109 6125000 6420 3 1 3 yes no yes no no 0 yes unfurnished
110 6107500 3240 4 1 3 yes no no no no 1 no semi-furnished
111 6090000 6615 4 2 2 yes yes no yes no 1 no semi-furnished
112 6090000 6600 3 1 1 yes yes yes no no 2 yes semi-furnished
113 6090000 8372 3 1 3 yes no no no yes 2 no unfurnished
114 6083000 4300 6 2 2 yes no no no no 0 no furnished
115 6083000 9620 3 1 1 yes no yes no no 2 yes furnished
116 6020000 6800 2 1 1 yes yes yes no no 2 no furnished
117 6020000 8000 3 1 1 yes yes yes no yes 2 yes semi-furnished
118 6020000 6900 3 2 1 yes yes yes no no 0 yes unfurnished
119 5950000 3700 4 1 2 yes yes no no yes 0 no furnished
120 5950000 6420 3 1 1 yes no yes no yes 0 yes furnished
121 5950000 7020 3 1 1 yes no yes no yes 2 yes semi-furnished
122 5950000 6540 3 1 1 yes yes yes no no 2 yes furnished
123 5950000 7231 3 1 2 yes yes yes no yes 0 yes semi-furnished
124 5950000 6254 4 2 1 yes no yes no no 1 yes semi-furnished
125 5950000 7320 4 2 2 yes no no no no 0 no furnished
126 5950000 6525 3 2 4 yes no no no no 1 no furnished
127 5943000 15600 3 1 1 yes no no no yes 2 no semi-furnished
128 5880000 7160 3 1 1 yes no yes no no 2 yes unfurnished
129 5880000 6500 3 2 3 yes no no no yes 0 no unfurnished
130 5873000 5500 3 1 3 yes yes no no yes 1 no furnished
131 5873000 11460 3 1 3 yes no no no no 2 yes semi-furnished
132 5866000 4800 3 1 1 yes yes yes no no 0 no unfurnished
133 5810000 5828 4 1 4 yes yes no no no 0 no semi-furnished
134 5810000 5200 3 1 3 yes no no no yes 0 no semi-furnished
135 5810000 4800 3 1 3 yes no no no yes 0 no unfurnished
136 5803000 7000 3 1 1 yes no yes no no 2 yes semi-furnished
137 5775000 6000 3 2 4 yes no no no yes 0 no unfurnished
138 5740000 5400 4 2 2 yes no no no yes 2 no unfurnished
139 5740000 4640 4 1 2 yes no no no no 1 no semi-furnished
140 5740000 5000 3 1 3 yes no no no yes 0 no semi-furnished
141 5740000 6360 3 1 1 yes yes yes no yes 2 yes furnished
142 5740000 5800 3 2 4 yes no no no yes 0 no unfurnished
143 5652500 6660 4 2 2 yes yes yes no no 1 yes semi-furnished
144 5600000 10500 4 2 2 yes no no no no 1 no semi-furnished
145 5600000 4800 5 2 3 no no yes yes no 0 no unfurnished
146 5600000 4700 4 1 2 yes yes yes no yes 1 no furnished
147 5600000 5000 3 1 4 yes no no no no 0 no furnished
148 5600000 10500 2 1 1 yes no no no no 1 no semi-furnished
149 5600000 5500 3 2 2 yes no no no no 1 no semi-furnished
150 5600000 6360 3 1 3 yes no no no no 0 yes semi-furnished
151 5600000 6600 4 2 1 yes no yes no no 0 yes semi-furnished
152 5600000 5136 3 1 2 yes yes yes no yes 0 yes unfurnished
153 5565000 4400 4 1 2 yes no no no yes 2 yes semi-furnished
154 5565000 5400 5 1 2 yes yes yes no yes 0 yes furnished
155 5530000 3300 3 3 2 yes no yes no no 0 no semi-furnished
156 5530000 3650 3 2 2 yes no no no no 2 no semi-furnished
157 5530000 6100 3 2 1 yes no yes no no 2 yes furnished
158 5523000 6900 3 1 1 yes yes yes no no 0 yes semi-furnished
159 5495000 2817 4 2 2 no yes yes no no 1 no furnished
160 5495000 7980 3 1 1 yes no no no no 2 no semi-furnished
161 5460000 3150 3 2 1 yes yes yes no yes 0 no furnished
162 5460000 6210 4 1 4 yes yes no no yes 0 no furnished
163 5460000 6100 3 1 3 yes yes no no yes 0 yes semi-furnished
164 5460000 6600 4 2 2 yes yes yes no no 0 yes semi-furnished
165 5425000 6825 3 1 1 yes yes yes no yes 0 yes semi-furnished
166 5390000 6710 3 2 2 yes yes yes no no 1 yes furnished
167 5383000 6450 3 2 1 yes yes yes yes no 0 no unfurnished
168 5320000 7800 3 1 1 yes no yes no yes 2 yes unfurnished
169 5285000 4600 2 2 1 yes no no no yes 2 no semi-furnished
170 5250000 4260 4 1 2 yes no yes no yes 0 no furnished
171 5250000 6540 4 2 2 no no no no yes 0 no semi-furnished
172 5250000 5500 3 2 1 yes no yes no no 0 no semi-furnished
173 5250000 10269 3 1 1 yes no no no no 1 yes semi-furnished
174 5250000 8400 3 1 2 yes yes yes no yes 2 yes unfurnished
175 5250000 5300 4 2 1 yes no no no yes 0 yes unfurnished
176 5250000 3800 3 1 2 yes yes yes no no 1 yes unfurnished
177 5250000 9800 4 2 2 yes yes no no no 2 no semi-furnished
178 5250000 8520 3 1 1 yes no no no yes 2 no furnished
179 5243000 6050 3 1 1 yes no yes no no 0 yes semi-furnished
180 5229000 7085 3 1 1 yes yes yes no no 2 yes semi-furnished
181 5215000 3180 3 2 2 yes no no no no 2 no semi-furnished
182 5215000 4500 4 2 1 no no yes no yes 2 no semi-furnished
183 5215000 7200 3 1 2 yes yes yes no no 1 yes furnished
184 5145000 3410 3 1 2 no no no no yes 0 no semi-furnished
185 5145000 7980 3 1 1 yes no no no no 1 yes semi-furnished
186 5110000 3000 3 2 2 yes yes yes no no 0 no furnished
187 5110000 3000 3 1 2 yes no yes no no 0 no unfurnished
188 5110000 11410 2 1 2 yes no no no no 0 yes furnished
189 5110000 6100 3 1 1 yes no yes no yes 0 yes semi-furnished
190 5075000 5720 2 1 2 yes no no no yes 0 yes unfurnished
191 5040000 3540 2 1 1 no yes yes no no 0 no semi-furnished
192 5040000 7600 4 1 2 yes no no no yes 2 no furnished
193 5040000 10700 3 1 2 yes yes yes no no 0 no semi-furnished
194 5040000 6600 3 1 1 yes yes yes no no 0 yes furnished
195 5033000 4800 2 1 1 yes yes yes no no 0 no semi-furnished
196 5005000 8150 3 2 1 yes yes yes no no 0 no semi-furnished
197 4970000 4410 4 3 2 yes no yes no no 2 no semi-furnished
198 4970000 7686 3 1 1 yes yes yes yes no 0 no semi-furnished
199 4956000 2800 3 2 2 no no yes no yes 1 no semi-furnished
200 4935000 5948 3 1 2 yes no no no yes 0 no semi-furnished
201 4907000 4200 3 1 2 yes no no no no 1 no furnished
202 4900000 4520 3 1 2 yes no yes no yes 0 no semi-furnished
203 4900000 4095 3 1 2 no yes yes no yes 0 no semi-furnished
204 4900000 4120 2 1 1 yes no yes no no 1 no semi-furnished
205 4900000 5400 4 1 2 yes no no no no 0 no semi-furnished
206 4900000 4770 3 1 1 yes yes yes no no 0 no semi-furnished
207 4900000 6300 3 1 1 yes no no no yes 2 no semi-furnished
208 4900000 5800 2 1 1 yes yes yes no yes 0 no semi-furnished
209 4900000 3000 3 1 2 yes no yes no yes 0 no semi-furnished
210 4900000 2970 3 1 3 yes no no no no 0 no semi-furnished
211 4900000 6720 3 1 1 yes no no no no 0 no unfurnished
212 4900000 4646 3 1 2 yes yes yes no no 2 no semi-furnished
213 4900000 12900 3 1 1 yes no no no no 2 no furnished
214 4893000 3420 4 2 2 yes no yes no yes 2 no semi-furnished
215 4893000 4995 4 2 1 yes no yes no no 0 no semi-furnished
216 4865000 4350 2 1 1 yes no yes no no 0 no unfurnished
217 4830000 4160 3 1 3 yes no no no no 0 no unfurnished
218 4830000 6040 3 1 1 yes no no no no 2 yes semi-furnished
219 4830000 6862 3 1 2 yes no no no yes 2 yes furnished
220 4830000 4815 2 1 1 yes no no no yes 0 yes semi-furnished
221 4795000 7000 3 1 2 yes no yes no no 0 no unfurnished
222 4795000 8100 4 1 4 yes no yes no yes 2 no semi-furnished
223 4767000 3420 4 2 2 yes no no no no 0 no semi-furnished
224 4760000 9166 2 1 1 yes no yes no yes 2 no semi-furnished
225 4760000 6321 3 1 2 yes no yes no yes 1 no furnished
226 4760000 10240 2 1 1 yes no no no yes 2 yes unfurnished
227 4753000 6440 2 1 1 yes no no no yes 3 no semi-furnished
228 4690000 5170 3 1 4 yes no no no yes 0 no semi-furnished
229 4690000 6000 2 1 1 yes no yes no yes 1 no furnished
230 4690000 3630 3 1 2 yes no no no no 2 no semi-furnished
231 4690000 9667 4 2 2 yes yes yes no no 1 no semi-furnished
232 4690000 5400 2 1 2 yes no no no no 0 yes semi-furnished
233 4690000 4320 3 1 1 yes no no no no 0 yes semi-furnished
234 4655000 3745 3 1 2 yes no yes no no 0 no furnished
235 4620000 4160 3 1 1 yes yes yes no yes 0 no unfurnished
236 4620000 3880 3 2 2 yes no yes no no 2 no semi-furnished
237 4620000 5680 3 1 2 yes yes no no yes 1 no semi-furnished
238 4620000 2870 2 1 2 yes yes yes no no 0 yes semi-furnished
239 4620000 5010 3 1 2 yes no yes no no 0 no semi-furnished
240 4613000 4510 4 2 2 yes no yes no no 0 no semi-furnished
241 4585000 4000 3 1 2 yes no no no no 1 no furnished
242 4585000 3840 3 1 2 yes no no no no 1 yes semi-furnished
243 4550000 3760 3 1 1 yes no no no no 2 no semi-furnished
244 4550000 3640 3 1 2 yes no no no yes 0 no furnished
245 4550000 2550 3 1 2 yes no yes no no 0 no furnished
246 4550000 5320 3 1 2 yes yes yes no no 0 yes semi-furnished
247 4550000 5360 3 1 2 yes no no no no 2 yes unfurnished
248 4550000 3520 3 1 1 yes no no no no 0 yes semi-furnished
249 4550000 8400 4 1 4 yes no no no no 3 no unfurnished
250 4543000 4100 2 2 1 yes yes yes no no 0 no semi-furnished
251 4543000 4990 4 2 2 yes yes yes no no 0 yes furnished
252 4515000 3510 3 1 3 yes no no no no 0 no semi-furnished
253 4515000 3450 3 1 2 yes no yes no no 1 no semi-furnished
254 4515000 9860 3 1 1 yes no no no no 0 no semi-furnished
255 4515000 3520 2 1 2 yes no no no no 0 yes furnished
256 4480000 4510 4 1 2 yes no no no yes 2 no semi-furnished
257 4480000 5885 2 1 1 yes no no no yes 1 no unfurnished
258 4480000 4000 3 1 2 yes no no no no 2 no furnished
259 4480000 8250 3 1 1 yes no no no no 0 no furnished
260 4480000 4040 3 1 2 yes no no no no 1 no semi-furnished
261 4473000 6360 2 1 1 yes no yes no yes 1 no furnished
262 4473000 3162 3 1 2 yes no no no yes 1 no furnished
263 4473000 3510 3 1 2 yes no no no no 0 no semi-furnished
264 4445000 3750 2 1 1 yes yes yes no no 0 no semi-furnished
265 4410000 3968 3 1 2 no no no no no 0 no semi-furnished
266 4410000 4900 2 1 2 yes no yes no no 0 no semi-furnished
267 4403000 2880 3 1 2 yes no no no no 0 yes semi-furnished
268 4403000 4880 3 1 1 yes no no no no 2 yes unfurnished
269 4403000 4920 3 1 2 yes no no no no 1 no semi-furnished
270 4382000 4950 4 1 2 yes no no no yes 0 no semi-furnished
271 4375000 3900 3 1 2 yes no no no no 0 no unfurnished
272 4340000 4500 3 2 3 yes no no yes no 1 no furnished
273 4340000 1905 5 1 2 no no yes no no 0 no semi-furnished
274 4340000 4075 3 1 1 yes yes yes no no 2 no semi-furnished
275 4340000 3500 4 1 2 yes no no no no 2 no furnished
276 4340000 6450 4 1 2 yes no no no no 0 no semi-furnished
277 4319000 4032 2 1 1 yes no yes no no 0 no furnished
278 4305000 4400 2 1 1 yes no no no no 1 no semi-furnished
279 4305000 10360 2 1 1 yes no no no no 1 yes semi-furnished
280 4277000 3400 3 1 2 yes no yes no no 2 yes semi-furnished
281 4270000 6360 2 1 1 yes no no no no 0 no furnished
282 4270000 6360 2 1 2 yes no no no no 0 no unfurnished
283 4270000 4500 2 1 1 yes no no no yes 2 no furnished
284 4270000 2175 3 1 2 no yes yes no yes 0 no unfurnished
285 4270000 4360 4 1 2 yes no no no no 0 no furnished
286 4270000 7770 2 1 1 yes no no no no 1 no furnished
287 4235000 6650 3 1 2 yes yes no no no 0 no semi-furnished
288 4235000 2787 3 1 1 yes no yes no no 0 yes furnished
289 4200000 5500 3 1 2 yes no no no yes 0 no unfurnished
290 4200000 5040 3 1 2 yes no yes no yes 0 no unfurnished
291 4200000 5850 2 1 1 yes yes yes no no 2 no semi-furnished
292 4200000 2610 4 3 2 no no no no no 0 no semi-furnished
293 4200000 2953 3 1 2 yes no yes no yes 0 no unfurnished
294 4200000 2747 4 2 2 no no no no no 0 no semi-furnished
295 4200000 4410 2 1 1 no no no no no 1 no unfurnished
296 4200000 4000 4 2 2 no no no no no 0 no semi-furnished
297 4200000 2325 3 1 2 no no no no no 0 no semi-furnished
298 4200000 4600 3 2 2 yes no no no yes 1 no semi-furnished
299 4200000 3640 3 2 2 yes no yes no no 0 no unfurnished
300 4200000 5800 3 1 1 yes no no yes no 2 no semi-furnished
301 4200000 7000 3 1 1 yes no no no no 3 no furnished
302 4200000 4079 3 1 3 yes no no no no 0 no semi-furnished
303 4200000 3520 3 1 2 yes no no no no 0 yes semi-furnished
304 4200000 2145 3 1 3 yes no no no no 1 yes unfurnished
305 4200000 4500 3 1 1 yes no yes no no 0 no furnished
306 4193000 8250 3 1 1 yes no yes no no 3 no semi-furnished
307 4193000 3450 3 1 2 yes no no no no 1 no semi-furnished
308 4165000 4840 3 1 2 yes no no no no 1 no semi-furnished
309 4165000 4080 3 1 2 yes no no no no 2 no semi-furnished
310 4165000 4046 3 1 2 yes no yes no no 1 no semi-furnished
311 4130000 4632 4 1 2 yes no no no yes 0 no semi-furnished
312 4130000 5985 3 1 1 yes no yes no no 0 no semi-furnished
313 4123000 6060 2 1 1 yes no yes no no 1 no semi-furnished
314 4098500 3600 3 1 1 yes no yes no yes 0 yes furnished
315 4095000 3680 3 2 2 yes no no no no 0 no semi-furnished
316 4095000 4040 2 1 2 yes no no no no 1 no semi-furnished
317 4095000 5600 2 1 1 yes no no no yes 0 no semi-furnished
318 4060000 5900 4 2 2 no no yes no no 1 no unfurnished
319 4060000 4992 3 2 2 yes no no no no 2 no unfurnished
320 4060000 4340 3 1 1 yes no no no no 0 no semi-furnished
321 4060000 3000 4 1 3 yes no yes no yes 2 no semi-furnished
322 4060000 4320 3 1 2 yes no no no no 2 yes furnished
323 4025000 3630 3 2 2 yes no no yes no 2 no semi-furnished
324 4025000 3460 3 2 1 yes no yes no yes 1 no furnished
325 4025000 5400 3 1 1 yes no no no no 3 no semi-furnished
326 4007500 4500 3 1 2 no no yes no yes 0 no semi-furnished
327 4007500 3460 4 1 2 yes no no no yes 0 no semi-furnished
328 3990000 4100 4 1 1 no no yes no no 0 no unfurnished
329 3990000 6480 3 1 2 no no no no yes 1 no semi-furnished
330 3990000 4500 3 2 2 no no yes no yes 0 no semi-furnished
331 3990000 3960 3 1 2 yes no no no no 0 no furnished
332 3990000 4050 2 1 2 yes yes yes no no 0 yes unfurnished
333 3920000 7260 3 2 1 yes yes yes no no 3 no furnished
334 3920000 5500 4 1 2 yes yes yes no no 0 no semi-furnished
335 3920000 3000 3 1 2 yes no no no no 0 no semi-furnished
336 3920000 3290 2 1 1 yes no no yes no 1 no furnished
337 3920000 3816 2 1 1 yes no yes no yes 2 no furnished
338 3920000 8080 3 1 1 yes no no no yes 2 no semi-furnished
339 3920000 2145 4 2 1 yes no yes no no 0 yes unfurnished
340 3885000 3780 2 1 2 yes yes yes no no 0 no semi-furnished
341 3885000 3180 4 2 2 yes no no no no 0 no furnished
342 3850000 5300 5 2 2 yes no no no no 0 no semi-furnished
343 3850000 3180 2 2 1 yes no yes no no 2 no semi-furnished
344 3850000 7152 3 1 2 yes no no no yes 0 no furnished
345 3850000 4080 2 1 1 yes no no no no 0 no semi-furnished
346 3850000 3850 2 1 1 yes no no no no 0 no semi-furnished
347 3850000 2015 3 1 2 yes no yes no no 0 yes semi-furnished
348 3850000 2176 2 1 2 yes yes no no no 0 yes semi-furnished
349 3836000 3350 3 1 2 yes no no no no 0 no unfurnished
350 3815000 3150 2 2 1 no no yes no no 0 no semi-furnished
351 3780000 4820 3 1 2 yes no no no no 0 no semi-furnished
352 3780000 3420 2 1 2 yes no no yes no 1 no semi-furnished
353 3780000 3600 2 1 1 yes no no no no 0 no semi-furnished
354 3780000 5830 2 1 1 yes no no no no 2 no unfurnished
355 3780000 2856 3 1 3 yes no no no no 0 yes furnished
356 3780000 8400 2 1 1 yes no no no no 1 no furnished
357 3773000 8250 3 1 1 yes no no no no 2 no furnished
358 3773000 2520 5 2 1 no no yes no yes 1 no furnished
359 3773000 6930 4 1 2 no no no no no 1 no furnished
360 3745000 3480 2 1 1 yes no no no no 0 yes semi-furnished
361 3710000 3600 3 1 1 yes no no no no 1 no unfurnished
362 3710000 4040 2 1 1 yes no no no no 0 no semi-furnished
363 3710000 6020 3 1 1 yes no no no no 0 no semi-furnished
364 3710000 4050 2 1 1 yes no no no no 0 no furnished
365 3710000 3584 2 1 1 yes no no yes no 0 no semi-furnished
366 3703000 3120 3 1 2 no no yes yes no 0 no semi-furnished
367 3703000 5450 2 1 1 yes no no no no 0 no furnished
368 3675000 3630 2 1 1 yes no yes no no 0 no furnished
369 3675000 3630 2 1 1 yes no no no yes 0 no unfurnished
370 3675000 5640 2 1 1 no no no no no 0 no semi-furnished
371 3675000 3600 2 1 1 yes no no no no 0 no furnished
372 3640000 4280 2 1 1 yes no no no yes 2 no semi-furnished
373 3640000 3570 3 1 2 yes no yes no no 0 no semi-furnished
374 3640000 3180 3 1 2 no no yes no no 0 no semi-furnished
375 3640000 3000 2 1 2 yes no no no yes 0 no furnished
376 3640000 3520 2 2 1 yes no yes no no 0 no semi-furnished
377 3640000 5960 3 1 2 yes yes yes no no 0 no unfurnished
378 3640000 4130 3 2 2 yes no no no no 2 no semi-furnished
379 3640000 2850 3 2 2 no no yes no no 0 yes unfurnished
380 3640000 2275 3 1 3 yes no no yes yes 0 yes semi-furnished
381 3633000 3520 3 1 1 yes no no no no 2 yes unfurnished
382 3605000 4500 2 1 1 yes no no no no 0 no semi-furnished
383 3605000 4000 2 1 1 yes no no no no 0 yes semi-furnished
384 3570000 3150 3 1 2 yes no yes no no 0 no furnished
385 3570000 4500 4 2 2 yes no yes no no 2 no furnished
386 3570000 4500 2 1 1 no no no no no 0 no furnished
387 3570000 3640 2 1 1 yes no no no no 0 no unfurnished
388 3535000 3850 3 1 1 yes no no no no 2 no unfurnished
389 3500000 4240 3 1 2 yes no no no yes 0 no semi-furnished
390 3500000 3650 3 1 2 yes no no no no 0 no unfurnished
391 3500000 4600 4 1 2 yes no no no no 0 no semi-furnished
392 3500000 2135 3 2 2 no no no no no 0 no unfurnished
393 3500000 3036 3 1 2 yes no yes no no 0 no semi-furnished
394 3500000 3990 3 1 2 yes no no no no 0 no semi-furnished
395 3500000 7424 3 1 1 no no no no no 0 no unfurnished
396 3500000 3480 3 1 1 no no no no yes 0 no unfurnished
397 3500000 3600 6 1 2 yes no no no no 1 no unfurnished
398 3500000 3640 2 1 1 yes no no no no 1 no semi-furnished
399 3500000 5900 2 1 1 yes no no no no 1 no furnished
400 3500000 3120 3 1 2 yes no no no no 1 no unfurnished
401 3500000 7350 2 1 1 yes no no no no 1 no semi-furnished
402 3500000 3512 2 1 1 yes no no no no 1 yes unfurnished
403 3500000 9500 3 1 2 yes no no no no 3 yes unfurnished
404 3500000 5880 2 1 1 yes no no no no 0 no unfurnished
405 3500000 12944 3 1 1 yes no no no no 0 no unfurnished
406 3493000 4900 3 1 2 no no no no no 0 no unfurnished
407 3465000 3060 3 1 1 yes no no no no 0 no unfurnished
408 3465000 5320 2 1 1 yes no no no no 1 yes unfurnished
409 3465000 2145 3 1 3 yes no no no no 0 yes furnished
410 3430000 4000 2 1 1 yes no no no no 0 no unfurnished
411 3430000 3185 2 1 1 yes no no no no 2 no unfurnished
412 3430000 3850 3 1 1 yes no no no no 0 no unfurnished
413 3430000 2145 3 1 3 yes no no no no 0 yes furnished
414 3430000 2610 3 1 2 yes no yes no no 0 yes unfurnished
415 3430000 1950 3 2 2 yes no yes no no 0 yes unfurnished
416 3423000 4040 2 1 1 yes no no no no 0 no unfurnished
417 3395000 4785 3 1 2 yes yes yes no yes 1 no furnished
418 3395000 3450 3 1 1 yes no yes no no 2 no unfurnished
419 3395000 3640 2 1 1 yes no no no no 0 no furnished
420 3360000 3500 4 1 2 yes no no no yes 2 no unfurnished
421 3360000 4960 4 1 3 no no no no no 0 no semi-furnished
422 3360000 4120 2 1 2 yes no no no no 0 no unfurnished
423 3360000 4750 2 1 1 yes no no no no 0 no unfurnished
424 3360000 3720 2 1 1 no no no no yes 0 no unfurnished
425 3360000 3750 3 1 1 yes no no no no 0 no unfurnished
426 3360000 3100 3 1 2 no no yes no no 0 no semi-furnished
427 3360000 3185 2 1 1 yes no yes no no 2 no furnished
428 3353000 2700 3 1 1 no no no no no 0 no furnished
429 3332000 2145 3 1 2 yes no yes no no 0 yes furnished
430 3325000 4040 2 1 1 yes no no no no 1 no unfurnished
431 3325000 4775 4 1 2 yes no no no no 0 no unfurnished
432 3290000 2500 2 1 1 no no no no yes 0 no unfurnished
433 3290000 3180 4 1 2 yes no yes no yes 0 no unfurnished
434 3290000 6060 3 1 1 yes yes yes no no 0 no furnished
435 3290000 3480 4 1 2 no no no no no 1 no semi-furnished
436 3290000 3792 4 1 2 yes no no no no 0 no semi-furnished
437 3290000 4040 2 1 1 yes no no no no 0 no unfurnished
438 3290000 2145 3 1 2 yes no yes no no 0 yes furnished
439 3290000 5880 3 1 1 yes no no no no 1 no unfurnished
440 3255000 4500 2 1 1 no no no no no 0 no semi-furnished
441 3255000 3930 2 1 1 no no no no no 0 no unfurnished
442 3234000 3640 4 1 2 yes no yes no no 0 no unfurnished
443 3220000 4370 3 1 2 yes no no no no 0 no unfurnished
444 3220000 2684 2 1 1 yes no no no yes 1 no unfurnished
445 3220000 4320 3 1 1 no no no no no 1 no unfurnished
446 3220000 3120 3 1 2 no no no no no 0 no furnished
447 3150000 3450 1 1 1 yes no no no no 0 no furnished
448 3150000 3986 2 2 1 no yes yes no no 1 no unfurnished
449 3150000 3500 2 1 1 no no yes no no 0 no semi-furnished
450 3150000 4095 2 1 1 yes no no no no 2 no semi-furnished
451 3150000 1650 3 1 2 no no yes no no 0 no unfurnished
452 3150000 3450 3 1 2 yes no yes no no 0 no semi-furnished
453 3150000 6750 2 1 1 yes no no no no 0 no semi-furnished
454 3150000 9000 3 1 2 yes no no no no 2 no semi-furnished
455 3150000 3069 2 1 1 yes no no no no 1 no unfurnished
456 3143000 4500 3 1 2 yes no no no yes 0 no unfurnished
457 3129000 5495 3 1 1 yes no yes no no 0 no unfurnished
458 3118850 2398 3 1 1 yes no no no no 0 yes semi-furnished
459 3115000 3000 3 1 1 no no no no yes 0 no unfurnished
460 3115000 3850 3 1 2 yes no no no no 0 no unfurnished
461 3115000 3500 2 1 1 yes no no no no 0 no unfurnished
462 3087000 8100 2 1 1 yes no no no no 1 no unfurnished
463 3080000 4960 2 1 1 yes no yes no yes 0 no unfurnished
464 3080000 2160 3 1 2 no no yes no no 0 no semi-furnished
465 3080000 3090 2 1 1 yes yes yes no no 0 no unfurnished
466 3080000 4500 2 1 2 yes no no yes no 1 no semi-furnished
467 3045000 3800 2 1 1 yes no no no no 0 no unfurnished
468 3010000 3090 3 1 2 no no no no no 0 no semi-furnished
469 3010000 3240 3 1 2 yes no no no no 2 no semi-furnished
470 3010000 2835 2 1 1 yes no no no no 0 no semi-furnished
471 3010000 4600 2 1 1 yes no no no no 0 no furnished
472 3010000 5076 3 1 1 no no no no no 0 no unfurnished
473 3010000 3750 3 1 2 yes no no no no 0 no unfurnished
474 3010000 3630 4 1 2 yes no no no no 3 no semi-furnished
475 3003000 8050 2 1 1 yes no no no no 0 no unfurnished
476 2975000 4352 4 1 2 no no no no no 1 no unfurnished
477 2961000 3000 2 1 2 yes no no no no 0 no semi-furnished
478 2940000 5850 3 1 2 yes no yes no no 1 no unfurnished
479 2940000 4960 2 1 1 yes no no no no 0 no unfurnished
480 2940000 3600 3 1 2 no no no no no 1 no unfurnished
481 2940000 3660 4 1 2 no no no no no 0 no unfurnished
482 2940000 3480 3 1 2 no no no no no 1 no semi-furnished
483 2940000 2700 2 1 1 no no no no no 0 no furnished
484 2940000 3150 3 1 2 no no no no no 0 no unfurnished
485 2940000 6615 3 1 2 yes no no no no 0 no semi-furnished
486 2870000 3040 2 1 1 no no no no no 0 no unfurnished
487 2870000 3630 2 1 1 yes no no no no 0 no unfurnished
488 2870000 6000 2 1 1 yes no no no no 0 no semi-furnished
489 2870000 5400 4 1 2 yes no no no no 0 no unfurnished
490 2852500 5200 4 1 3 yes no no no no 0 no unfurnished
491 2835000 3300 3 1 2 no no no no no 1 no semi-furnished
492 2835000 4350 3 1 2 no no no yes no 1 no unfurnished
493 2835000 2640 2 1 1 no no no no no 1 no furnished
494 2800000 2650 3 1 2 yes no yes no no 1 no unfurnished
495 2800000 3960 3 1 1 yes no no no no 0 no furnished
496 2730000 6800 2 1 1 yes no no no no 0 no unfurnished
497 2730000 4000 3 1 2 yes no no no no 1 no unfurnished
498 2695000 4000 2 1 1 yes no no no no 0 no unfurnished
499 2660000 3934 2 1 1 yes no no no no 0 no unfurnished
500 2660000 2000 2 1 2 yes no no no no 0 no semi-furnished
501 2660000 3630 3 3 2 no yes no no no 0 no unfurnished
502 2660000 2800 3 1 1 yes no no no no 0 no unfurnished
503 2660000 2430 3 1 1 no no no no no 0 no unfurnished
504 2660000 3480 2 1 1 yes no no no no 1 no semi-furnished
505 2660000 4000 3 1 1 yes no no no no 0 no semi-furnished
506 2653000 3185 2 1 1 yes no no no yes 0 no unfurnished
507 2653000 4000 3 1 2 yes no no no yes 0 no unfurnished
508 2604000 2910 2 1 1 no no no no no 0 no unfurnished
509 2590000 3600 2 1 1 yes no no no no 0 no unfurnished
510 2590000 4400 2 1 1 yes no no no no 0 no unfurnished
511 2590000 3600 2 2 2 yes no yes no no 1 no furnished
512 2520000 2880 3 1 1 no no no no no 0 no unfurnished
513 2520000 3180 3 1 1 no no no no no 0 no unfurnished
514 2520000 3000 2 1 2 yes no no no no 0 no furnished
515 2485000 4400 3 1 2 yes no no no no 0 no unfurnished
516 2485000 3000 3 1 2 no no no no no 0 no semi-furnished
517 2450000 3210 3 1 2 yes no yes no no 0 no unfurnished
518 2450000 3240 2 1 1 no yes no no no 1 no unfurnished
519 2450000 3000 2 1 1 yes no no no no 1 no unfurnished
520 2450000 3500 2 1 1 yes yes no no no 0 no unfurnished
521 2450000 4840 2 1 2 yes no no no no 0 no unfurnished
522 2450000 7700 2 1 1 yes no no no no 0 no unfurnished
523 2408000 3635 2 1 1 no no no no no 0 no unfurnished
524 2380000 2475 3 1 2 yes no no no no 0 no furnished
525 2380000 2787 4 2 2 yes no no no no 0 no furnished
526 2380000 3264 2 1 1 yes no no no no 0 no unfurnished
527 2345000 3640 2 1 1 yes no no no no 0 no unfurnished
528 2310000 3180 2 1 1 yes no no no no 0 no unfurnished
529 2275000 1836 2 1 1 no no yes no no 0 no semi-furnished
530 2275000 3970 1 1 1 no no no no no 0 no unfurnished
531 2275000 3970 3 1 2 yes no yes no no 0 no unfurnished
532 2240000 1950 3 1 1 no no no yes no 0 no unfurnished
533 2233000 5300 3 1 1 no no no no yes 0 yes unfurnished
534 2135000 3000 2 1 1 no no no no no 0 no unfurnished
535 2100000 2400 3 1 2 yes no no no no 0 no unfurnished
536 2100000 3000 4 1 2 yes no no no no 0 no unfurnished
537 2100000 3360 2 1 1 yes no no no no 1 no unfurnished
538 1960000 3420 5 1 2 no no no no no 0 no unfurnished
539 1890000 1700 3 1 2 yes no no no no 0 no unfurnished
540 1890000 3649 2 1 1 yes no no no no 0 no unfurnished
541 1855000 2990 2 1 1 no no no no no 1 no unfurnished
542 1820000 3000 2 1 1 yes no yes no no 2 no unfurnished
543 1767150 2400 3 1 1 no no no no no 0 no semi-furnished
544 1750000 3620 2 1 1 yes no no no no 0 no unfurnished
545 1750000 2910 3 1 1 no no no no no 0 no furnished
546 1750000 3850 3 1 2 yes no no no no 0 no unfurnished

@ -1,63 +0,0 @@
import os
import sys
parent_dir_name = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
sys.path.append(parent_dir_name + "/3nar/code")
from nnnar import *
from knn import *
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
# varriable globale
trainTestRatio = 0.8
nnnarSubDiv = 10
# initialisation du modèle
if (sys.argv[1] == "knn"):
model = Knn()
else:
model = Nnnar(4, 0, 100, nnnarSubDiv)
# lecture des données
df = pd.read_csv('./data/maison.csv')
df = df.iloc[:, 0:5]
# Normalisation des données
df.iloc[:, 1] = df.iloc[:, 1] - df.iloc[:, 1].min()
df.iloc[:, 2] = df.iloc[:, 2] - df.iloc[:, 2].min()
df.iloc[:, 3] = df.iloc[:, 3] - df.iloc[:, 3].min()
df.iloc[:, 4] = df.iloc[:, 4] - df.iloc[:, 4].min()
df.iloc[:, 1] = df.iloc[:, 1] / df.iloc[:, 1].max()
df.iloc[:, 2] = df.iloc[:, 2] / df.iloc[:, 2].max()
df.iloc[:, 3] = df.iloc[:, 3] / df.iloc[:, 3].max()
df.iloc[:, 4] = df.iloc[:, 4] / df.iloc[:, 4].max()
df.iloc[:, 1:5] = df.iloc[:, 1:5] * 99
# Création des données d'entrainement et de test
train = df.sample(frac=trainTestRatio)
test = df.drop(train.index)
# Entrainement du modèle
coord = train.iloc[:, 1:].values
value = train.iloc[:, 0].values
for i in range(len(coord)):
model.addPoint(np.array(coord[i]), np.array([value[i]]))
# Test du modèles
coord = test.iloc[:, 1:].values
value = test.iloc[:, 0].values
nbError = 0
for i in range(len(coord)):
v = model.getValueOfPoint(np.array(coord[i]),5)[0]
if v != value[i]:
nbError += 100*abs(v-value[i])/value.max()
print("accuracy moyenne:",str(100-nbError/len(coord)))

@ -1,19 +1,10 @@
import os
import sys
parent_dir_name = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
sys.path.append(parent_dir_name + "/3nar/code")
from nnnar import *
from knn import *
import matplotlib.pyplot as plt
from random import *
# initialisation du modèle
if (sys.argv[1] == "knn"):
model = Knn()
else:
model = Nnnar(1, 0, 1000, 10)
knn = Knn()
nnnar = Nnnar(1, 0, 1000, 10)
def getRandomParam():
return [random()*10-5, random()*10-5,random()*10-5]
@ -31,18 +22,21 @@ y = []
for i in [minx + (maxx-minx)*i/nbPoints for i in range(nbPoints)]:
x.append(i)
y.append(applyFunction(i,param))
model.addPoint(np.array([i]),np.array([y[-1]]))
knn.addPoint(np.array([i]),np.array([y[-1]]))
nnnar.addPoint(np.array([i]),np.array([y[-1]]))
error = 0
nbInfer = 20
for i in range(nbInfer):
xt = random()*maxx
yt = model.getValueOfPoint(np.array([xt]),2)
yt = nnnar.getValueOfPoint(np.array([xt]),2)
yr = applyFunction(xt,param)
error += abs(100*(yt[0]-yr)/applyFunction(maxx,param))
error += abs(yt[0]-yr)
ytk = knn.getValueOfPoint(np.array([xt]),2)
plt.plot(xt,yt[0],'xr')
plt.plot(xt,ytk[0],'xg')
print("accuracy: ",100-error/nbInfer)
print("Error: ",(error/nbInfer)/applyFunction(maxx,param))
plt.plot(x,y)
plt.title("f(x) = "+str(param[0])+"*x^2 + "+str(param[1])+"*x + "+str(param[2]))

@ -1,95 +0,0 @@
import os
import sys
parent_dir_name = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
sys.path.append(parent_dir_name + "/3nar/code")
from nnnar import *
from knn import *
import random
import matplotlib.pyplot as plt
import numpy as np
from time import time
#########################
# #
# function #
# #
#########################
def replaceRandomPixel(image,nb):
for i in range(nb):
y = random.randint(0, height - 1)
x = random.randint(0, width - 1)
image[y,x] = [255,255,255]
return image
#########################
# #
# programme #
# #
#########################
image = plt.imread('./data/img.jpg')
image = np.array(image)
imageOg = image.copy()
height, width, _ = image.shape
print("image lue")
# remplacer l'image par une image avec des pixels corrompus
image = replaceRandomPixel(image, 1000)
differences = np.zeros((height, width))
for y in range(1, height-1):
for x in range(1, width-1):
pixel = image[y,x].astype(int)
neighbors = []
n = [[y-1,x], [y+1,x], [y,x-1], [y,x+1]]
for ny, nx in n:
if ny >= 0 and ny < height and nx >= 0 and nx < width:
neighbors.append(image[ny,nx])
avg_diff = np.mean([np.abs(pixel - n).sum() for n in neighbors])
differences[y,x] = avg_diff
print("image corompue")
# Trouver les pixels corrompus algorithmiquement
corrupted_pixels = np.where(differences > 200)
yCor = corrupted_pixels[0]
xCor = corrupted_pixels[1]
badPix = list(zip(yCor, xCor))
goodPix = [(y, x) for y in range(height) for x in range(width) if (y, x) not in badPix]
print("pixel corompu trouvé")
# Fournir les données d'entrainement au model
t = time()
if (sys.argv[1] == "knn"):
model = Knn()
else:
model = Nnnar(2,0,260,125)
for y, x in goodPix:
model.addPoint(np.array([x,y]), np.array(image[y,x]))
# Remplacer les pixels corrompus par des pixels prédits
image2 = image.copy()
for y, x in badPix:
coord = np.array([x,y])
image2[y,x] = model.getValueOfPoint(coord, 8)
print("temps d'infération des",str(len(badPix)),"pixels:",str(round(time()-t,3)),"s")
plt.figure(figsize=(13, 6))
plt.subplot(131)
plt.imshow(imageOg)
plt.axis('off')
plt.title('orininal')
plt.subplot(132)
plt.imshow(image)
plt.axis('off')
plt.title('corompu')
plt.subplot(133)
plt.imshow(image2)
plt.axis('off')
plt.title('corrigé')
plt.show()

@ -1,69 +0,0 @@
import os
import sys
parent_dir_name = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
sys.path.append(parent_dir_name + "/3nar/code")
from nnnar import *
from knn import *
import numpy as np
import pandas as pd
from time import time
df = pd.read_csv('./data/Iris.csv')
df = df.iloc[:, 1:]
# Normalisation des données
df.iloc[:, 0] = df.iloc[:, 0] - df.iloc[:, 0].min()
df.iloc[:, 1] = df.iloc[:, 1] - df.iloc[:, 1].min()
df.iloc[:, 2] = df.iloc[:, 2] - df.iloc[:, 2].min()
df.iloc[:, 3] = df.iloc[:, 3] - df.iloc[:, 3].min()
df.iloc[:, 0] = df.iloc[:, 0] / df.iloc[:, 0].max()
df.iloc[:, 1] = df.iloc[:, 1] / df.iloc[:, 1].max()
df.iloc[:, 2] = df.iloc[:, 2] / df.iloc[:, 2].max()
df.iloc[:, 3] = df.iloc[:, 3] / df.iloc[:, 3].max()
df.iloc[:, 0:4] = df.iloc[:, 0:4] * 100
def runOneTest(model,df):
# Création des données d'entrainement et de test
train = df.sample(frac=0.8)
test = df.drop(train.index)
# Entrainement du modèle
trainCoord = train.iloc[:, :-1].values
trainValue = train.iloc[:, -1].values
# Test du modèle
coord = test.iloc[:, :-1].values
value = test.iloc[:, -1].values
for i in range(len(trainCoord)):
model.addPoint(np.array(trainCoord[i]), np.array([trainValue[i]]))
nbError = 0
for i in range(len(coord)):
if model.getLabelOfPoint(np.array(coord[i]), 5) != value[i]:
nbError += 1
return 100 - nbError / len(coord) * 100
if (sys.argv[1] == "knn"):
model = Knn()
else:
model = Nnnar(4, 0, 100.001, 5)
t1 = time()
nbRepetition = 100
accuracy = 0
for i in range(nbRepetition):
model.reset()
accuracy += runOneTest(model,df)
t2 = time()
print("accuracy moyenne:",str(accuracy/nbRepetition))
print("delta temps:",str(t2-t1))

@ -7,9 +7,6 @@ class Knn:
def __init__(self):
self.space = np.array([])
def reset(self):
self.space = np.array([])
def addPoint(self, coord, value):
self.space = np.append(self.space, Point(coord, value))
@ -28,18 +25,6 @@ class Knn:
value[i] = value[i] / ttPart
return value
def getLabelOfPoint(self, coord,nbNearest):
points, dists = self.getNNearest(coord, nbNearest)
label = {}
for idx in range(len(points)):
tvalue = points[idx].value[0]
if tvalue in label:
label[tvalue] += 1/(dists[idx]+1)
else:
label[tvalue] = 1/(dists[idx]+1)
value = max(label, key=label.get)
return value
def getNNearest(self, coord, nbNearest):
dist = np.copy(self.space)
dist = np.frompyfunc(lambda x: x.getDistFromCoord(coord), 1, 1)(dist)

@ -17,30 +17,11 @@ class Nnnar:
self.space = fillSpace(self.space)
self.calculatedSpaceAroundIdx = []
def reset(self):
coord = np.zeros(self.nbDimensions,dtype=int) + self.nbSubdivisions
self.space = np.zeros(coord)
fillSpace = np.vectorize(lambda x: [], otypes=[object])
self.space = fillSpace(self.space)
def addPoint(self, coord, value):
if len(coord) != self.nbDimensions:
raise AttributeError("Error: wrong number of dimensions")
self.space[*self.getSpaceIdxFromCoord(coord)].append(Point(coord, value))
def getLabelOfPoint(self, coord,nbNearest):
points, dists = self.getNNearest(coord, nbNearest)
label = {}
for idx in range(len(points)):
tvalue = points[idx].value[0]
if tvalue in label:
label[tvalue] += 1/(dists[idx]+1)
else:
label[tvalue] = 1/(dists[idx]+1)
value = max(label, key=label.get)
return value
def getValueOfPoint(self, coord,nbNearest):
points, dists = self.getNNearest(coord, nbNearest)
ttPart = 1/(dists[0]+1)

@ -1,85 +0,0 @@
import os
import sys
parent_dir_name = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
sys.path.append(parent_dir_name + "/3nar/code")
from nnnar import *
from knn import *
import matplotlib.pyplot as plt
import numpy as np
from time import time
# initialisation du modèle
comp = False
if (sys.argv[1] == "comp"):
model1 = Knn()
model2 = Nnnar(1, 0, 1, 50)
comp = True
if (sys.argv[1] == "knn"):
model = Knn()
else:
model = Nnnar(1, 0, 1, 50)
maxVal = 20_000
nbTest = 100
nbPts = 10
# Création des données d'entrainement
train = []
test = []
for i in range(maxVal):
x = np.random.rand()
y = np.random.rand()
train.append([x,y])
for i in range(nbTest):
x = np.random.rand()
test.append(x)
train = np.array(train)
test = np.array(test)
def testModel(model, train ,test):
model.reset()
t = time()
# Entrainement du modèle
for i in range(len(train)):
model.addPoint(np.array([train[i,0]]), np.array([train[i,1]]))
# Test du modèles
for i in range(len(test)):
model.getValueOfPoint(np.array([test[i]]), 5)[0]
return time() - t
if comp:
res1 = []
res2 = []
idxs = []
for i in range(1,nbPts):
idx = round((i*maxVal)/nbPts)
print(idx)
idxs.append(idx)
res1.append(testModel(model1, train[:idx], test))
res2.append(testModel(model2, train[:idx], test))
plt.xlabel('Number of training points')
plt.ylabel('Time (s)')
plt.xticks(range(len(idxs)), idxs)
plt.plot(res1,label='KNN')
plt.plot(res2,label='3NAR')
plt.legend()
plt.show()
else:
res = []
idxs = []
for i in range(1,nbPts):
idx = round((i*maxVal)/nbPts)
print(idx)
idxs.append(idx)
res.append(testModel(model, train[:round((i*maxVal)/nbPts)], test))
plt.xlabel('Number of training points')
plt.ylabel('Time (s)')
plt.xticks(range(len(idxs)), idxs)
plt.plot(res)
plt.show()

@ -1,71 +0,0 @@
import os
import sys
parent_dir_name = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
sys.path.append(parent_dir_name + "/3nar/code")
from nnnar import *
from knn import *
import matplotlib.pyplot as plt
import numpy as np
from time import time
# initialisation du modèle
comp = False
if (sys.argv[1] == "comp"):
model1 = Knn()
model2 = Nnnar(1, 0, 1, 100)
comp = True
if (sys.argv[1] == "knn"):
model = Knn()
else:
model = Nnnar(1, 0, 1, 100)
maxVal = 1_000
nbTest = 1_000
nbPts = 10
# Création des données d'entrainement
train = []
test = []
for i in range(maxVal):
x = np.random.rand()
y = np.random.rand()
train.append([x,y])
for i in range(nbTest):
x = np.random.rand()
test.append(x)
train = np.array(train)
test = np.array(test)
def testModel(model, train ,test):
model.reset()
t = time()
# Entrainement du modèle
for i in range(len(train)):
model.addPoint(np.array([train[i,0]]), np.array([train[i,1]]))
# Test du modèles
for i in range(len(test)):
model.getValueOfPoint(np.array([test[i]]), 5)[0]
return time() - t
if comp:
res1 = []
res2 = []
idxs = []
for i in range(1,nbPts):
idx = round((i*nbTest)/nbPts)
print(idx)
idxs.append(idx)
res1.append(testModel(model1, train, test[:idx]))
res2.append(testModel(model2, train, test[:idx]))
plt.xlabel('Number of points infered')
plt.ylabel('Time (s)')
plt.xticks(range(len(idxs)), idxs)
plt.plot(res1,label='KNN')
plt.plot(res2,label='3NAR')
plt.legend()
plt.show()

@ -1,61 +0,0 @@
import os
import sys
parent_dir_name = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
sys.path.append(parent_dir_name + "/3nar/code")
from nnnar import *
import matplotlib.pyplot as plt
import numpy as np
from time import time
maxVal = 1_000
nbTest = 1000
nbPts = 10
nbModel = 10
nbMaxSubDiv = 100
# Création des données d'entrainement
train = []
test = []
for i in range(maxVal):
x = np.random.rand()
y = np.random.rand()
train.append([x,y])
for i in range(nbTest):
x = np.random.rand()
test.append(x)
train = np.array(train)
test = np.array(test)
def testModel(model, train ,test):
model.reset()
t = time()
# Entrainement du modèle
for i in range(len(train)):
model.addPoint(np.array([train[i,0]]), np.array([train[i,1]]))
# Test du modèles
for i in range(len(test)):
model.getValueOfPoint(np.array([test[i]]), 5)[0]
return time() - t
for i in range(1,nbModel):
nbSub = round(i*nbMaxSubDiv/nbModel)
print(nbSub)
model = Nnnar(1,0,1,nbSub)
res = []
idxs = []
for i in range(1,nbPts):
idx = round((i*nbTest)/nbPts)
idxs.append(idx)
res.append(testModel(model, train, test[:idx]))
plt.plot(res,label='NNNAR('+str(nbSub)+')')
plt.xlabel('Number of points infered')
plt.ylabel('Time (s)')
plt.xticks(range(len(idxs)), idxs)
plt.legend()
plt.show()

@ -1,155 +0,0 @@
<section class="titre">
<h1>
<span class="a">3NAR</span>
<span class="b">(n nearest neighbor avrage rapid)</span>
</h1>
<p>
par Ludovic CASTIGLIA
</p>
</section>
<section>
<h2>
Problématique
</h2>
<p>
Le but de ce projet était de trouver un algorithme <b>généraliste</b> (qui puisse être utilisé dans différents cas d'utilisation), <b>rapide</b> (qui n'a pas une grande complexité ou qui trouve des solutions dans un temps raisonnable) et <b>précis</b> (qui trouve des solutions proches de la réalité dans une majorité des cas).<br/></br>
Pour ce faire, j'avais plusieurs outils à ma disposition, mais celui sur lequel je me suis penché est l'algorithme <i>Knn</i> (n plus proche voisin). C'est un algorithme assez simple qui n'a pas réellement besoin d'entraînement contrairement à un réseau de neurones, mais qui à cause de sa complexité algorithmique devient inutilisable dans sa forme naïve pour de larges volumes de données. J'ai donc dû trouver un moyen de modifier l'implémentation de <i>Knn</i> pour réduire sa <b>complexité</b>, tout en gardant si possible l'aspect <b>généraliste</b> et <b>précis</b> de <i>Knn</i>.
</p>
</section>
<section>
<h2>
Algorithme et avantage par rapport à Knn
</h2>
<h3>
Point commun entre <i>Knn</i> et <i>3nar</i> :
</h3>
<p>
Ces deux algorithmes sont capables d'inférer une ou plusieurs valeurs à partir d'une ou plusieurs valeurs en entrée grâce à des exemples fournis au préalable. Ils sont également capables de réaliser de la classification ou de la multi-classification (c'est-à-dire associer une ou plusieurs classes à une donnée ou un groupe de donnée en entrée).
</br></br>
Outre leurs capacités, ils fonctionnent de la même façon. La phase d'entraînement consiste simplement à enregistrer en mémoire les différentes données d'exemples, ainsi que leurs valeurs associées (valeur, groupe de valeurs, classe ou groupe de classe). Ensuite, pour inférer la/les valeur.s/classe.s associée.s à de nouvelles coordonnées, on trouve les n exemples les plus proches et on retourne la moyenne des valeurs des n points multipliés par un poid calculé en fonction de leur distance.
</p>
<h3>
Problème de <i>Knn</i> :
</h3>
<p>
Le problème de l'implémentation naïve de <i>Knn</i> est que pour trouver les n points les plus proches d'un nouveau point A, on calcule la distance de chaque point en mémoire avec A, puis on trouve les n points avec la plus petite distance. Ce qui veut dire que plus le nombre de points d'exemple en mémoire augmente, plus on calcule de distance pour trouver la valeur d'un point. Ainsi, comme nous pouvons le voir sur le graphique ci-dessous, la complexité de l'algorithme est linéaire.
</p>
<image src="./rapport/knn.png"/>
<h3>
Solution de <i>3nar</i> :
</h3>
<p>
Pour trouver les n points les plus proches de A sans avoir à calculer les distances avec tous les autres points, <i>3nar</i> profite de la phase d'ajout des points pour enregistrer des informations</b>.
</br></br>
À l'initialisation, nous allons créer un espace orthonormé avec m dimension (le nombre de coordonnées des exemples). Nous allons ensuite remplir cet espace avec un certain nombre de sous-espaces à déterminer en fonction des cas d'utilisation (ces espaces sont tous de tailles égales et sont eux aussi orthonormés). Ensuite, lors de la phase d'entraînement, il suffit d'ajouter les points dans les différents sous-espaces en fonction de leurs coordonnées. Pour trouver le sous-espace si vos sous-espaces sont dans une liste, vous pouvez calculer l'index avec cette formule:<br/>
Soit t, la taille d'un sous-espace et nb, le nombre de sous-espace dans une dimension:
</br><img src="./rapport/formuleIdx.png"/><br/>
Dans le cas de ce programme, les sous-espaces sont stockés dans un tenseur et les coordonnées du sous-espace d'un point sont données par la division euclidienne de toutes les coordonnées du point par t.
</br></br>
Une fois toutes les données ajoutées dans le modèle, il est temps de lui demander la valeur de nouveau point. Pour cela, l'algorithme va trouver dans quel sous-espace le point serait, s'il existait dans sa mémoire. Puis il vérifie s'il a assez de points dans ce sous-espace dans une distance (dont on parlera plus tard). Si c'est le cas, alors il calcule les distances avec ces points et il retourne les n plus faibles. Sinon on trouve les sous-espaces à proximité et on recommence jusqu'à avoir assez de points. Cela permet de grandement réduire le nombre de calcul de distance entre points pour trouver les n points les plus proches.
<br/></br>
Concernant la distance, elle est calculée en fonction des coordonnées du point que l'on veut deviner, de la taille du sous-espace et en fonction de son centre. Cette distance doit être la plus grande possible (pour capter le plus de point) tout en ne sortant en aucun point du sous-espace (pour être sûr de réellement trouver les points les plus proches). Cette distance peut être calculée de la façon suivante:</br>
<image src="./rapport/rayon.png"/></br>
<i>dist = t/2 - max(ABx,ABy) + t * nbSousEspaceAutour</i></br>
À noter que c'est un exemple en 2d, le même calcule peut-être généralisé pour un nombre m de dimension.<br/>
Dans le cas de ce programme, je n'ai pas utilisé cette distance. A la place, j'ai utilisé cette formule qui me garantit de ne jamais sortir de l'espace et qui est plus simple à calculer:
</br><image src="./rapport/rayon2.png"></br>
<i>dist = t * nbSousEspaceAutour</i>
</br><br/>
Il s'agira maintenant de présenter l'algorithme qui permet de trouver les sous-espaces autour d'un sous-espace. Pour trouver tous les sous-espaces à d de distance d'un sous-espace, il faut dans un premier temps trouver les sous-espaces autour de l'origine, puis appliquer une translation, qui transforme l'origine en notre sous-espace, aux sous-espaces que l'on trouve. Pour ce faire, je vais parcourir les différentes étapes de l'algorithme avec vous en prenant l'exemple d'un espace à 2 dimensions où l'on veut trouver tous les sous-espaces à 1 de distance. Dans une première boucle, on va mettre dans une variable le nombre de valeurs différentes que peut comporter nos coordonnées de sous-espace. Ici, c'est 1 et 2. Puis on va créer un radical de coordonnées (une première partie de coordonnées ordonnées qui contient n valeurs différentes entre -1 et 1, la distance maximum par rapport à zéro). Les radicaux crées vont être: <i>[-1],[0],[1],[-1,0],[-1,1],[0,1]</i>. Une fois qu'on a ces radicaux, nous allons compléter ceux-ci avec les valeurs des radicaux jusqu'à avoir des coordonnées complètes (en conservant seulement les valeurs des radicaux). Nous obtenons ici <i>[-1,-1],[0,0],[1,1],[-1,0],[-1,1],[0,1]</i>. Enfin, les sous-espaces vont être les permutations de coordonnées complètes que l'on vient de trouver. Dans notre cas : <i>[-1,-1],[0,0],[1,1],[-1,0],[0,-1],[-1,1],[1,-1],[0,1],[1,0]</i>. Comme vous pouvez le constater, résultent de l'algorithme les 9 coordonnées que nous souhaitions. Notons également que cet algorithme fonctionne peu importe le nombre de dimensions (positives et entières) et peu importe la distance (elle aussi positive et entière).
</br></br>
Enfin, dernière optimisation de l'algorithme, pour éviter de recalculer en boucle les différents sous-espaces autour d'un sous-espace (ce qui est coûteux à faire dynamiquement pour m dimension), on enregistre en mémoire le résultat de cette opération. Puis, lorsque l'on veut recalculer ce résultat, nous pouvons simplement l'appliquer à notre cas (car les sous-espaces ne seront pas les mêmes, mais leurs sous-espaces autour seront aux mêmes distances et aux mêmes directions).
<br/><br>
Ainsi, toutes ces optimisations permettent de grandement réduire la complexité de <i>3nar</i> par rapport à <i>Knn</i>. Cependant, comme vous pouvez le voir sur les graphiques suivants, la complexité reste linéaire que l'on fasse varier le nombre de points inférés ou le nombre de données d'entraînement:
</p>
<image src="./rapport/compKnn3narTrainPoint.png"/>
<image src="./rapport/compKnn3narPointInfered.png"/>
<p>
Cependant, il y a encore un dernier point intéressant à discuter avec <i>3nar</i>, c'est l'impact d'un paramètre sur la complexité de l'algorithme. Plus on divise l'espace en sous-espace, plus la complexité de l'algorithme se réduit. Vous pouvez voir ce phénomène grâce au graphique suivant:
</p>
<image src="./rapport/comp3narParam.png"/>
</section>
<section>
<h2>
Cas d'utilisations
</h2>
<p>
Comme nous l'avons vu dans la première partie, <i>3nar</i> est utilisable dans pleins de contextes. Ce ne sera pas souvent le meilleur algorithme, mais dans la plupart des cas, il rendra un résultat satisfaisant en un temps lui aussi satisfaisant. Vous pouvez retrouver 4 cas d'utilisations, aussi appelées demo dans ce projet, que vous pouvez lancer au choix avec <i>Knn</i> ou <i>3nar</i>. Pour lancer les demos, placez vous dans le répertoire et appelez les scripts python de demo en ajoutant à votre commande le nom de l'algorithme (knn ou nnnar).<br/><br/>
</p>
<h3>
demo1.py
</h3>
<p>
Dans la demo 1, nous utilisons le csv <i>./data/maison.csv</i>. Nous calculons une valeur en sortie en fonction de 4 valeurs en entrée. Nous calculons le prix des maisons en fonction du nombre de m², du nombre de chambres, du nombre de salles de bain et de l'étage. Sur ces données et avec 80% du dataset en entraînement et 20% en test, on arrive aux alentours de 90% de précision.
</p>
<h3>
demo2.py
</h3>
<p>
Dans cet exemple, nous générons aléatoirement une fonction polynomiale du second degré avec des paramètres étant des réels compris entre -5 et 5. Puis après avoir fourni à <i>3nar</i> quelques exemples (100 dans notre cas), nous utlisons l'algorithme pour prédire de nouvelles valeurs choisit aléatoirement.
</p>
<h3>
demo3.py
</h3>
<p>
Cette demo est plus visuelle et présente un cas d'utilisation ou nous devons calculer plusieurs valeurs en fonction de plusieurs valeurs. Dans cette demo, nous prenons une image (<i>./data/img.jpg</i>), puis de manière aléatoire, on vient remplacer des pixels par des pixels blancs. Ensuite, nous venons retrouver algorithmiquement les pixels qui ont été changés (on pourrait aussi faire cette étape avec <i>3nar</i> mais cela serait plus long).Enfin, on vient calculer la valeur de ces pixels avec <i>3nar</i>. Dans cet exemple, le nombre de données comence à être non négligeable, et on voit l'avantage de <i>3nar</i> par rapport à <i>Knn</i>.
</p>
<h3>
demo4.py
</h3>
<p>
Dans cet exemple, on fait la classification des espèces d'Iris à partir de la taille de la largeur de la tige et des pétales. En quelques secondes, on arrive à avoir environ 95% de précision.
</p>
<p>
À noter que pour les démos, je n'ai pas de dataset d'évaluation, seulement un dataset de test, car je n'ai pas d'entraînement à proprement parler (comme de la backpropagation) donc le dataset de test renvoie forcément le même résultat que le dataset d'évaluation.
</p>
</section>
<style>
.titre {
border-bottom: 1px solid;
padding: 3em;
}
h1 {
text-aligne: center;
display:flex;
justify-content:center;
border:0px;
transform: translate(12.5%);
}
p {
padding: 0px 0px 0px 25px;
}
.a {
color:#f00;
font-weight:900;
font-size:2em;
}
.b {
font-size:0.7em;
}
.titre p {
position:absolute;
right:15px;
}
h2 {
color: #ff7777;
border-bottom: 1px solid #fff;
}
b {
font-weight: 900;
font-size: 1.1em;
}
i {
font-style: normal;
padding: 0px 5px;
border-radius: 5px;
border: 1px solid;
}
h3 {
padding: 0px 0px 0px 10px;
}
</style>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

@ -7,6 +7,8 @@ def findCoordAround(center, nbAround):
find = []
for i in range(1, nbDimention + 1):
find = getNCoordDifferente(center, find, i, nbAround)
# print(len(find),(nbAround*2+1)*(nbAround*2+1))
# input()
return find
def getNCoordDifferente(center, find, nbDifferanteValue, nbAround):
Loading…
Cancel
Save