Compare commits
11 Commits
Author | SHA1 | Date | |
---|---|---|---|
1da3b022fb | |||
44317fb0e9 | |||
818732f1b3 | |||
5f8bed4336 | |||
|
8aca985483 | ||
b0decebad3 | |||
96c3f8bb0a | |||
|
ff9b949305 | ||
|
2d6dd73960 | ||
1bde756004 | |||
bddd173633 |
BIN
algorithm.png
Normal file
BIN
algorithm.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
215
glass.csv
Normal file
215
glass.csv
Normal file
@ -0,0 +1,215 @@
|
||||
RI,Na,Mg,Al,Si,K,Ca,Ba,Fe,Type
|
||||
1.52101,13.64,4.49,1.1,71.78,0.06,8.75,0,0,1
|
||||
1.51761,13.89,3.6,1.36,72.73,0.48,7.83,0,0,1
|
||||
1.51618,13.53,3.55,1.54,72.99,0.39,7.78,0,0,1
|
||||
1.51766,13.21,3.69,1.29,72.61,0.57,8.22,0,0,1
|
||||
1.51742,13.27,3.62,1.24,73.08,0.55,8.07,0,0,1
|
||||
1.51596,12.79,3.61,1.62,72.97,0.64,8.07,0,0.26,1
|
||||
1.51743,13.3,3.6,1.14,73.09,0.58,8.17,0,0,1
|
||||
1.51756,13.15,3.61,1.05,73.24,0.57,8.24,0,0,1
|
||||
1.51918,14.04,3.58,1.37,72.08,0.56,8.3,0,0,1
|
||||
1.51755,13,3.6,1.36,72.99,0.57,8.4,0,0.11,1
|
||||
1.51571,12.72,3.46,1.56,73.2,0.67,8.09,0,0.24,1
|
||||
1.51763,12.8,3.66,1.27,73.01,0.6,8.56,0,0,1
|
||||
1.51589,12.88,3.43,1.4,73.28,0.69,8.05,0,0.24,1
|
||||
1.51748,12.86,3.56,1.27,73.21,0.54,8.38,0,0.17,1
|
||||
1.51763,12.61,3.59,1.31,73.29,0.58,8.5,0,0,1
|
||||
1.51761,12.81,3.54,1.23,73.24,0.58,8.39,0,0,1
|
||||
1.51784,12.68,3.67,1.16,73.11,0.61,8.7,0,0,1
|
||||
1.52196,14.36,3.85,0.89,71.36,0.15,9.15,0,0,1
|
||||
1.51911,13.9,3.73,1.18,72.12,0.06,8.89,0,0,1
|
||||
1.51735,13.02,3.54,1.69,72.73,0.54,8.44,0,0.07,1
|
||||
1.5175,12.82,3.55,1.49,72.75,0.54,8.52,0,0.19,1
|
||||
1.51966,14.77,3.75,0.29,72.02,0.03,9,0,0,1
|
||||
1.51736,12.78,3.62,1.29,72.79,0.59,8.7,0,0,1
|
||||
1.51751,12.81,3.57,1.35,73.02,0.62,8.59,0,0,1
|
||||
1.5172,13.38,3.5,1.15,72.85,0.5,8.43,0,0,1
|
||||
1.51764,12.98,3.54,1.21,73,0.65,8.53,0,0,1
|
||||
1.51793,13.21,3.48,1.41,72.64,0.59,8.43,0,0,1
|
||||
1.51721,12.87,3.48,1.33,73.04,0.56,8.43,0,0,1
|
||||
1.51768,12.56,3.52,1.43,73.15,0.57,8.54,0,0,1
|
||||
1.51784,13.08,3.49,1.28,72.86,0.6,8.49,0,0,1
|
||||
1.51768,12.65,3.56,1.3,73.08,0.61,8.69,0,0.14,1
|
||||
1.51747,12.84,3.5,1.14,73.27,0.56,8.55,0,0,1
|
||||
1.51775,12.85,3.48,1.23,72.97,0.61,8.56,0.09,0.22,1
|
||||
1.51753,12.57,3.47,1.38,73.39,0.6,8.55,0,0.06,1
|
||||
1.51783,12.69,3.54,1.34,72.95,0.57,8.75,0,0,1
|
||||
1.51567,13.29,3.45,1.21,72.74,0.56,8.57,0,0,1
|
||||
1.51909,13.89,3.53,1.32,71.81,0.51,8.78,0.11,0,1
|
||||
1.51797,12.74,3.48,1.35,72.96,0.64,8.68,0,0,1
|
||||
1.52213,14.21,3.82,0.47,71.77,0.11,9.57,0,0,1
|
||||
1.52213,14.21,3.82,0.47,71.77,0.11,9.57,0,0,1
|
||||
1.51793,12.79,3.5,1.12,73.03,0.64,8.77,0,0,1
|
||||
1.51755,12.71,3.42,1.2,73.2,0.59,8.64,0,0,1
|
||||
1.51779,13.21,3.39,1.33,72.76,0.59,8.59,0,0,1
|
||||
1.5221,13.73,3.84,0.72,71.76,0.17,9.74,0,0,1
|
||||
1.51786,12.73,3.43,1.19,72.95,0.62,8.76,0,0.3,1
|
||||
1.519,13.49,3.48,1.35,71.95,0.55,9,0,0,1
|
||||
1.51869,13.19,3.37,1.18,72.72,0.57,8.83,0,0.16,1
|
||||
1.52667,13.99,3.7,0.71,71.57,0.02,9.82,0,0.1,1
|
||||
1.52223,13.21,3.77,0.79,71.99,0.13,10.02,0,0,1
|
||||
1.51898,13.58,3.35,1.23,72.08,0.59,8.91,0,0,1
|
||||
1.5232,13.72,3.72,0.51,71.75,0.09,10.06,0,0.16,1
|
||||
1.51926,13.2,3.33,1.28,72.36,0.6,9.14,0,0.11,1
|
||||
1.51808,13.43,2.87,1.19,72.84,0.55,9.03,0,0,1
|
||||
1.51837,13.14,2.84,1.28,72.85,0.55,9.07,0,0,1
|
||||
1.51778,13.21,2.81,1.29,72.98,0.51,9.02,0,0.09,1
|
||||
1.51769,12.45,2.71,1.29,73.7,0.56,9.06,0,0.24,1
|
||||
1.51215,12.99,3.47,1.12,72.98,0.62,8.35,0,0.31,1
|
||||
1.51824,12.87,3.48,1.29,72.95,0.6,8.43,0,0,1
|
||||
1.51754,13.48,3.74,1.17,72.99,0.59,8.03,0,0,1
|
||||
1.51754,13.39,3.66,1.19,72.79,0.57,8.27,0,0.11,1
|
||||
1.51905,13.6,3.62,1.11,72.64,0.14,8.76,0,0,1
|
||||
1.51977,13.81,3.58,1.32,71.72,0.12,8.67,0.69,0,1
|
||||
1.52172,13.51,3.86,0.88,71.79,0.23,9.54,0,0.11,1
|
||||
1.52227,14.17,3.81,0.78,71.35,0,9.69,0,0,1
|
||||
1.52172,13.48,3.74,0.9,72.01,0.18,9.61,0,0.07,1
|
||||
1.52099,13.69,3.59,1.12,71.96,0.09,9.4,0,0,1
|
||||
1.52152,13.05,3.65,0.87,72.22,0.19,9.85,0,0.17,1
|
||||
1.52152,13.05,3.65,0.87,72.32,0.19,9.85,0,0.17,1
|
||||
1.52152,13.12,3.58,0.9,72.2,0.23,9.82,0,0.16,1
|
||||
1.523,13.31,3.58,0.82,71.99,0.12,10.17,0,0.03,1
|
||||
1.51574,14.86,3.67,1.74,71.87,0.16,7.36,0,0.12,2
|
||||
1.51848,13.64,3.87,1.27,71.96,0.54,8.32,0,0.32,2
|
||||
1.51593,13.09,3.59,1.52,73.1,0.67,7.83,0,0,2
|
||||
1.51631,13.34,3.57,1.57,72.87,0.61,7.89,0,0,2
|
||||
1.51596,13.02,3.56,1.54,73.11,0.72,7.9,0,0,2
|
||||
1.5159,13.02,3.58,1.51,73.12,0.69,7.96,0,0,2
|
||||
1.51645,13.44,3.61,1.54,72.39,0.66,8.03,0,0,2
|
||||
1.51627,13,3.58,1.54,72.83,0.61,8.04,0,0,2
|
||||
1.51613,13.92,3.52,1.25,72.88,0.37,7.94,0,0.14,2
|
||||
1.5159,12.82,3.52,1.9,72.86,0.69,7.97,0,0,2
|
||||
1.51592,12.86,3.52,2.12,72.66,0.69,7.97,0,0,2
|
||||
1.51593,13.25,3.45,1.43,73.17,0.61,7.86,0,0,2
|
||||
1.51646,13.41,3.55,1.25,72.81,0.68,8.1,0,0,2
|
||||
1.51594,13.09,3.52,1.55,72.87,0.68,8.05,0,0.09,2
|
||||
1.51409,14.25,3.09,2.08,72.28,1.1,7.08,0,0,2
|
||||
1.51625,13.36,3.58,1.49,72.72,0.45,8.21,0,0,2
|
||||
1.51569,13.24,3.49,1.47,73.25,0.38,8.03,0,0,2
|
||||
1.51645,13.4,3.49,1.52,72.65,0.67,8.08,0,0.1,2
|
||||
1.51618,13.01,3.5,1.48,72.89,0.6,8.12,0,0,2
|
||||
1.5164,12.55,3.48,1.87,73.23,0.63,8.08,0,0.09,2
|
||||
1.51841,12.93,3.74,1.11,72.28,0.64,8.96,0,0.22,2
|
||||
1.51605,12.9,3.44,1.45,73.06,0.44,8.27,0,0,2
|
||||
1.51588,13.12,3.41,1.58,73.26,0.07,8.39,0,0.19,2
|
||||
1.5159,13.24,3.34,1.47,73.1,0.39,8.22,0,0,2
|
||||
1.51629,12.71,3.33,1.49,73.28,0.67,8.24,0,0,2
|
||||
1.5186,13.36,3.43,1.43,72.26,0.51,8.6,0,0,2
|
||||
1.51841,13.02,3.62,1.06,72.34,0.64,9.13,0,0.15,2
|
||||
1.51743,12.2,3.25,1.16,73.55,0.62,8.9,0,0.24,2
|
||||
1.51689,12.67,2.88,1.71,73.21,0.73,8.54,0,0,2
|
||||
1.51811,12.96,2.96,1.43,72.92,0.6,8.79,0.14,0,2
|
||||
1.51655,12.75,2.85,1.44,73.27,0.57,8.79,0.11,0.22,2
|
||||
1.5173,12.35,2.72,1.63,72.87,0.7,9.23,0,0,2
|
||||
1.5182,12.62,2.76,0.83,73.81,0.35,9.42,0,0.2,2
|
||||
1.52725,13.8,3.15,0.66,70.57,0.08,11.64,0,0,2
|
||||
1.5241,13.83,2.9,1.17,71.15,0.08,10.79,0,0,2
|
||||
1.52475,11.45,0,1.88,72.19,0.81,13.24,0,0.34,2
|
||||
1.53125,10.73,0,2.1,69.81,0.58,13.3,3.15,0.28,2
|
||||
1.53393,12.3,0,1,70.16,0.12,16.19,0,0.24,2
|
||||
1.52222,14.43,0,1,72.67,0.1,11.52,0,0.08,2
|
||||
1.51818,13.72,0,0.56,74.45,0,10.99,0,0,2
|
||||
1.52664,11.23,0,0.77,73.21,0,14.68,0,0,2
|
||||
1.52739,11.02,0,0.75,73.08,0,14.96,0,0,2
|
||||
1.52777,12.64,0,0.67,72.02,0.06,14.4,0,0,2
|
||||
1.51892,13.46,3.83,1.26,72.55,0.57,8.21,0,0.14,2
|
||||
1.51847,13.1,3.97,1.19,72.44,0.6,8.43,0,0,2
|
||||
1.51846,13.41,3.89,1.33,72.38,0.51,8.28,0,0,2
|
||||
1.51829,13.24,3.9,1.41,72.33,0.55,8.31,0,0.1,2
|
||||
1.51708,13.72,3.68,1.81,72.06,0.64,7.88,0,0,2
|
||||
1.51673,13.3,3.64,1.53,72.53,0.65,8.03,0,0.29,2
|
||||
1.51652,13.56,3.57,1.47,72.45,0.64,7.96,0,0,2
|
||||
1.51844,13.25,3.76,1.32,72.4,0.58,8.42,0,0,2
|
||||
1.51663,12.93,3.54,1.62,72.96,0.64,8.03,0,0.21,2
|
||||
1.51687,13.23,3.54,1.48,72.84,0.56,8.1,0,0,2
|
||||
1.51707,13.48,3.48,1.71,72.52,0.62,7.99,0,0,2
|
||||
1.52177,13.2,3.68,1.15,72.75,0.54,8.52,0,0,2
|
||||
1.51872,12.93,3.66,1.56,72.51,0.58,8.55,0,0.12,2
|
||||
1.51667,12.94,3.61,1.26,72.75,0.56,8.6,0,0,2
|
||||
1.52081,13.78,2.28,1.43,71.99,0.49,9.85,0,0.17,2
|
||||
1.52068,13.55,2.09,1.67,72.18,0.53,9.57,0.27,0.17,2
|
||||
1.5202,13.98,1.35,1.63,71.76,0.39,10.56,0,0.18,2
|
||||
1.52177,13.75,1.01,1.36,72.19,0.33,11.14,0,0,2
|
||||
1.52614,13.7,0,1.36,71.24,0.19,13.44,0,0.1,2
|
||||
1.51813,13.43,3.98,1.18,72.49,0.58,8.15,0,0,2
|
||||
1.518,13.71,3.93,1.54,71.81,0.54,8.21,0,0.15,2
|
||||
1.51811,13.33,3.85,1.25,72.78,0.52,8.12,0,0,2
|
||||
1.51789,13.19,3.9,1.3,72.33,0.55,8.44,0,0.28,2
|
||||
1.51806,13,3.8,1.08,73.07,0.56,8.38,0,0.12,2
|
||||
1.51711,12.89,3.62,1.57,72.96,0.61,8.11,0,0,2
|
||||
1.51674,12.79,3.52,1.54,73.36,0.66,7.9,0,0,2
|
||||
1.51674,12.87,3.56,1.64,73.14,0.65,7.99,0,0,2
|
||||
1.5169,13.33,3.54,1.61,72.54,0.68,8.11,0,0,2
|
||||
1.51851,13.2,3.63,1.07,72.83,0.57,8.41,0.09,0.17,2
|
||||
1.51662,12.85,3.51,1.44,73.01,0.68,8.23,0.06,0.25,2
|
||||
1.51709,13,3.47,1.79,72.72,0.66,8.18,0,0,2
|
||||
1.5166,12.99,3.18,1.23,72.97,0.58,8.81,0,0.24,2
|
||||
1.51839,12.85,3.67,1.24,72.57,0.62,8.68,0,0.35,2
|
||||
1.51769,13.65,3.66,1.11,72.77,0.11,8.6,0,0,3
|
||||
1.5161,13.33,3.53,1.34,72.67,0.56,8.33,0,0,3
|
||||
1.5167,13.24,3.57,1.38,72.7,0.56,8.44,0,0.1,3
|
||||
1.51643,12.16,3.52,1.35,72.89,0.57,8.53,0,0,3
|
||||
1.51665,13.14,3.45,1.76,72.48,0.6,8.38,0,0.17,3
|
||||
1.52127,14.32,3.9,0.83,71.5,0,9.49,0,0,3
|
||||
1.51779,13.64,3.65,0.65,73,0.06,8.93,0,0,3
|
||||
1.5161,13.42,3.4,1.22,72.69,0.59,8.32,0,0,3
|
||||
1.51694,12.86,3.58,1.31,72.61,0.61,8.79,0,0,3
|
||||
1.51646,13.04,3.4,1.26,73.01,0.52,8.58,0,0,3
|
||||
1.51655,13.41,3.39,1.28,72.64,0.52,8.65,0,0,3
|
||||
1.52121,14.03,3.76,0.58,71.79,0.11,9.65,0,0,3
|
||||
1.51776,13.53,3.41,1.52,72.04,0.58,8.79,0,0,3
|
||||
1.51796,13.5,3.36,1.63,71.94,0.57,8.81,0,0.09,3
|
||||
1.51832,13.33,3.34,1.54,72.14,0.56,8.99,0,0,3
|
||||
1.51934,13.64,3.54,0.75,72.65,0.16,8.89,0.15,0.24,3
|
||||
1.52211,14.19,3.78,0.91,71.36,0.23,9.14,0,0.37,3
|
||||
1.51514,14.01,2.68,3.5,69.89,1.68,5.87,2.2,0,5
|
||||
1.51915,12.73,1.85,1.86,72.69,0.6,10.09,0,0,5
|
||||
1.52171,11.56,1.88,1.56,72.86,0.47,11.41,0,0,5
|
||||
1.52151,11.03,1.71,1.56,73.44,0.58,11.62,0,0,5
|
||||
1.51969,12.64,0,1.65,73.75,0.38,11.53,0,0,5
|
||||
1.51666,12.86,0,1.83,73.88,0.97,10.17,0,0,5
|
||||
1.51994,13.27,0,1.76,73.03,0.47,11.32,0,0,5
|
||||
1.52369,13.44,0,1.58,72.22,0.32,12.24,0,0,5
|
||||
1.51316,13.02,0,3.04,70.48,6.21,6.96,0,0,5
|
||||
1.51321,13,0,3.02,70.7,6.21,6.93,0,0,5
|
||||
1.52043,13.38,0,1.4,72.25,0.33,12.5,0,0,5
|
||||
1.52058,12.85,1.61,2.17,72.18,0.76,9.7,0.24,0.51,5
|
||||
1.52119,12.97,0.33,1.51,73.39,0.13,11.27,0,0.28,5
|
||||
1.51905,14,2.39,1.56,72.37,0,9.57,0,0,6
|
||||
1.51937,13.79,2.41,1.19,72.76,0,9.77,0,0,6
|
||||
1.51829,14.46,2.24,1.62,72.38,0,9.26,0,0,6
|
||||
1.51852,14.09,2.19,1.66,72.67,0,9.32,0,0,6
|
||||
1.51299,14.4,1.74,1.54,74.55,0,7.59,0,0,6
|
||||
1.51888,14.99,0.78,1.74,72.5,0,9.95,0,0,6
|
||||
1.51916,14.15,0,2.09,72.74,0,10.88,0,0,6
|
||||
1.51969,14.56,0,0.56,73.48,0,11.22,0,0,6
|
||||
1.51115,17.38,0,0.34,75.41,0,6.65,0,0,6
|
||||
1.51131,13.69,3.2,1.81,72.81,1.76,5.43,1.19,0,7
|
||||
1.51838,14.32,3.26,2.22,71.25,1.46,5.79,1.63,0,7
|
||||
1.52315,13.44,3.34,1.23,72.38,0.6,8.83,0,0,7
|
||||
1.52247,14.86,2.2,2.06,70.26,0.76,9.76,0,0,7
|
||||
1.52365,15.79,1.83,1.31,70.43,0.31,8.61,1.68,0,7
|
||||
1.51613,13.88,1.78,1.79,73.1,0,8.67,0.76,0,7
|
||||
1.51602,14.85,0,2.38,73.28,0,8.76,0.64,0.09,7
|
||||
1.51623,14.2,0,2.79,73.46,0.04,9.04,0.4,0.09,7
|
||||
1.51719,14.75,0,2,73.02,0,8.53,1.59,0.08,7
|
||||
1.51683,14.56,0,1.98,73.29,0,8.52,1.57,0.07,7
|
||||
1.51545,14.14,0,2.68,73.39,0.08,9.07,0.61,0.05,7
|
||||
1.51556,13.87,0,2.54,73.23,0.14,9.41,0.81,0.01,7
|
||||
1.51727,14.7,0,2.34,73.28,0,8.95,0.66,0,7
|
||||
1.51531,14.38,0,2.66,73.1,0.04,9.08,0.64,0,7
|
||||
1.51609,15.01,0,2.51,73.05,0.05,8.83,0.53,0,7
|
||||
1.51508,15.15,0,2.25,73.5,0,8.34,0.63,0,7
|
||||
1.51653,11.95,0,1.19,75.18,2.7,8.93,0,0,7
|
||||
1.51514,14.85,0,2.42,73.72,0,8.39,0.56,0,7
|
||||
1.51658,14.8,0,1.99,73.11,0,8.28,1.71,0,7
|
||||
1.51617,14.95,0,2.27,73.3,0,8.71,0.67,0,7
|
||||
1.51732,14.95,0,1.8,72.99,0,8.61,1.55,0,7
|
||||
1.51645,14.94,0,1.87,73.11,0,8.67,1.38,0,7
|
||||
1.51831,14.39,0,1.82,72.86,1.41,6.47,2.88,0,7
|
||||
1.5164,14.37,0,2.74,72.85,0,9.45,0.54,0,7
|
||||
1.51623,14.14,0,2.88,72.61,0.08,9.18,1.06,0,7
|
||||
1.51685,14.92,0,1.99,73.06,0,8.4,1.59,0,7
|
||||
1.52065,14.36,0,2.02,73.42,0,8.44,1.64,0,7
|
||||
1.51651,14.38,0,1.94,73.61,0,8.48,1.57,0,7
|
||||
1.51711,14.23,0,2.08,73.36,0,8.62,1.67,0,7
|
|
151
iris.csv
Normal file
151
iris.csv
Normal file
@ -0,0 +1,151 @@
|
||||
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
|
|
381
jupyter.ipynb
381
jupyter.ipynb
@ -14,7 +14,7 @@
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"/var/folders/tq/jq5nwbnj7v10tls99x99qbh40000gn/T/ipykernel_57719/1134982733.py:12: DeprecationWarning: Importing display from IPython.core.display is deprecated since IPython 7.14, please import from IPython display\n",
|
||||
"/var/folders/8w/3c34c7kd2n144tvm764_pdbw0000gq/T/ipykernel_3019/1657712203.py:16: DeprecationWarning: Importing display from IPython.core.display is deprecated since IPython 7.14, please import from IPython display\n",
|
||||
" from IPython.core.display import display, HTML\n"
|
||||
]
|
||||
},
|
||||
@ -32,6 +32,7 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"import numpy as np\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"from skimage import data\n",
|
||||
@ -41,6 +42,9 @@
|
||||
"import scipy.linalg as la\n",
|
||||
"from PIL import Image\n",
|
||||
"from ipywidgets import interact\n",
|
||||
"from numpy.linalg import eig\n",
|
||||
"from math import isclose\n",
|
||||
"import pprint\n",
|
||||
"\n",
|
||||
"# zmień szerokość komórki\n",
|
||||
"from IPython.core.display import display, HTML\n",
|
||||
@ -115,7 +119,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"execution_count": 20,
|
||||
"metadata": {
|
||||
"pycharm": {
|
||||
"name": "#%%\n"
|
||||
@ -159,43 +163,46 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"metadata": {
|
||||
"pycharm": {
|
||||
"name": "#%%\n"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def calculate(A):\n",
|
||||
" m = A.shape[0]\n",
|
||||
" n = A.shape[1]\n",
|
||||
" n = A.shape[0]\n",
|
||||
" m = A.shape[1]\n",
|
||||
" S = np.zeros(n)\n",
|
||||
"\n",
|
||||
" # finding eigenvectors with biggest eigenvalues of A*transpose(A)\n",
|
||||
" helper = np.matmul(A, np.transpose(A))\n",
|
||||
" eigenvalues, eigenvectors = la.eigh(helper)\n",
|
||||
" # descending sort of all the eigenvectors according to their eigenvalues\n",
|
||||
" eigenvalues, eigenvectors = eig(helper)\n",
|
||||
" \n",
|
||||
" index = eigenvalues.argsort()[::-1]\n",
|
||||
" eigenvalues = np.real(eigenvalues)\n",
|
||||
" eigenvectors = np.real(eigenvectors)\n",
|
||||
" eigenvalues = eigenvalues[index]\n",
|
||||
" eigenvectors = eigenvectors[:, index]\n",
|
||||
" U = eigenvectors\n",
|
||||
"\n",
|
||||
" # S is a diagonal matrix that keeps square root of eigenvalues\n",
|
||||
" helper2 = np.matmul(np.transpose(A), A)\n",
|
||||
" eigenvalues2, eigenvectors2 = eig(helper2)\n",
|
||||
" index2 = eigenvalues2.argsort()[::-1]\n",
|
||||
" eigenvalues2 = np.real(eigenvalues2)\n",
|
||||
" eigenvectors2 = np.real(eigenvectors2)\n",
|
||||
" eigenvalues2 = eigenvalues2[index2]\n",
|
||||
" eigenvectors2 = eigenvectors2[:, index2]\n",
|
||||
" V = np.transpose(eigenvectors2)\n",
|
||||
" \n",
|
||||
" j = 0\n",
|
||||
" for i in eigenvalues:\n",
|
||||
" for i in eigenvalues2:\n",
|
||||
" if j == S.size:\n",
|
||||
" break\n",
|
||||
" elif i >= 0:\n",
|
||||
" S[j] = np.sqrt(i)\n",
|
||||
" j += 1\n",
|
||||
" # same finding process for transpose(A)*A\n",
|
||||
" helper = np.matmul(np.transpose(A), A)\n",
|
||||
" eigenvalues, eigenvectors = la.eigh(helper)\n",
|
||||
" # descending sort of all the eigenvectors according to their eigenvalues\n",
|
||||
" index = eigenvalues.argsort()[::-1]\n",
|
||||
" eigenvalues = eigenvalues[index]\n",
|
||||
" eigenvectors = eigenvectors[:, index]\n",
|
||||
" V = np.transpose(eigenvectors)\n",
|
||||
"\n",
|
||||
" # sorting S in descending order\n",
|
||||
" S[::-1].sort()\n",
|
||||
" # print_to_file(S)\n",
|
||||
"\n",
|
||||
" return U, S, V"
|
||||
]
|
||||
@ -203,6 +210,47 @@
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def check_sign_V(V, builtin):\n",
|
||||
" if builtin.shape[0] < builtin.shape[1]:\n",
|
||||
" for i in range(0,builtin.shape[0]):\n",
|
||||
" for j in range(0,builtin.shape[1]):\n",
|
||||
" if builtin[j][i] < 0.0 and V[j][i] > 0.0:\n",
|
||||
" V[j][i] *= -1\n",
|
||||
" elif builtin[j][i] > 0.0 and V[j][i] < 0.0:\n",
|
||||
" V[j][i] *= -1\n",
|
||||
" else:\n",
|
||||
" for i in range(0,builtin.shape[0]):\n",
|
||||
" for j in range(0,builtin.shape[1]):\n",
|
||||
" if builtin[i][j] < 0.0 and V[i][j] > 0.0:\n",
|
||||
" V[i][j] *= -1\n",
|
||||
" elif builtin[i][j] > 0.0 and V[i][j] < 0.0:\n",
|
||||
" V[i][j] *= -1\n",
|
||||
" return V\n",
|
||||
"\n",
|
||||
"def check_sign_U(U, builtin):\n",
|
||||
" if builtin.shape[0] < builtin.shape[1]: \n",
|
||||
" for i in range(0,builtin.shape[0]):\n",
|
||||
" for j in range(0,builtin.shape[1]):\n",
|
||||
" if builtin[j][i] < 0.0 and U[j][i] > 0.0:\n",
|
||||
" U[j][i] *= -1\n",
|
||||
" elif builtin[j][i] > 0.0 and U[j][i] < 0.0:\n",
|
||||
" U[j][i] *= -1\n",
|
||||
" else:\n",
|
||||
" for i in range(0,builtin.shape[0]):\n",
|
||||
" for j in range(0,builtin.shape[1]):\n",
|
||||
" if builtin[i][j] < 0.0 and U[i][j] > 0.0:\n",
|
||||
" U[i][j] *= -1\n",
|
||||
" elif builtin[j][j] > 0.0 and U[i][j] < 0.0:\n",
|
||||
" U[i][j] *= -1\n",
|
||||
" return U"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"metadata": {
|
||||
"pycharm": {
|
||||
"name": "#%%\n"
|
||||
@ -214,13 +262,98 @@
|
||||
" \"\"\"\n",
|
||||
" Wykonaj dekompozycję SVD, a następnie okrojoną rekonstrukcję (przy użyciu k wartości/wektorów osobliwych)\n",
|
||||
" \"\"\"\n",
|
||||
"# U,s,V = svd(image,full_matrices=False)\n",
|
||||
" U,s,V = calculate(image)\n",
|
||||
" image = np.real(image)\n",
|
||||
" U,s,V = svd(image,full_matrices=False)\n",
|
||||
" reconst_matrix = np.dot(U[:,:k],np.dot(np.diag(s[:k]),V[:k,:]))\n",
|
||||
"\n",
|
||||
" return reconst_matrix,s"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Przykładowa macierz"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"metadata": {
|
||||
"scrolled": false
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Matrix U:\n",
|
||||
" 0 1 2 3\n",
|
||||
"0 0.0 0.0 1.0 0.0\n",
|
||||
"1 0.0 1.0 0.0 0.0\n",
|
||||
"2 0.0 0.0 0.0 -1.0\n",
|
||||
"3 1.0 0.0 0.0 0.0\n",
|
||||
"\n",
|
||||
"Matrix V:\n",
|
||||
" 0 1 2 3 4\n",
|
||||
"0 0.000000 1.0 0.0 0.0 0.000000\n",
|
||||
"1 0.000000 0.0 1.0 0.0 0.000000\n",
|
||||
"2 0.447214 0.0 0.0 0.0 0.894427\n",
|
||||
"3 0.000000 0.0 0.0 1.0 0.000000\n",
|
||||
"4 -0.894427 0.0 0.0 0.0 0.447214\n",
|
||||
"\n",
|
||||
"Matrix s:\n",
|
||||
" 0\n",
|
||||
"0 4.000000\n",
|
||||
"1 3.000000\n",
|
||||
"2 2.236068\n",
|
||||
"3 0.000000\n",
|
||||
"\n",
|
||||
"--------------------------------------\n",
|
||||
"\n",
|
||||
"Reconstructed matrix: \n",
|
||||
"\n",
|
||||
" 0 1 2 3 4\n",
|
||||
"0 1.0 0.0 0.0 0.0 2.0\n",
|
||||
"1 0.0 0.0 3.0 0.0 0.0\n",
|
||||
"2 0.0 0.0 0.0 0.0 0.0\n",
|
||||
"3 0.0 4.0 0.0 0.0 0.0\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"a = np.array([[1, 0, 0, 0, 2], \n",
|
||||
" [0, 0, 3, 0, 0],\n",
|
||||
" [0, 0, 0, 0, 0],\n",
|
||||
" [0, 4, 0, 0, 0]])\n",
|
||||
"\n",
|
||||
"U,s,V = calculate(a)\n",
|
||||
"U1,s1,V1 = svd(a)\n",
|
||||
"U = check_sign_U(U, U1)\n",
|
||||
"V = check_sign_V(V, V1)\n",
|
||||
"\n",
|
||||
"U_dataframe = pd.DataFrame(U)\n",
|
||||
"s_dataframe = pd.DataFrame(s)\n",
|
||||
"V_dataframe = pd.DataFrame(V)\n",
|
||||
"\n",
|
||||
"print(\"Matrix U:\")\n",
|
||||
"print(U_dataframe)\n",
|
||||
"\n",
|
||||
"print(\"\\nMatrix V:\")\n",
|
||||
"print(V_dataframe)\n",
|
||||
"\n",
|
||||
"print(\"\\nMatrix s:\")\n",
|
||||
"print(s_dataframe)\n",
|
||||
"\n",
|
||||
"print('\\n--------------------------------------\\n')\n",
|
||||
"k = 4\n",
|
||||
"reconst_matrix4 = np.dot(U[:,:k],np.dot(np.diag(s[:k]),V[:k,:]))\n",
|
||||
"\n",
|
||||
"recon_dataframe_matrix = pd.DataFrame(reconst_matrix4)\n",
|
||||
"print('Reconstructed matrix: \\n')\n",
|
||||
"print(recon_dataframe_matrix)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
@ -235,7 +368,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"execution_count": 8,
|
||||
"metadata": {
|
||||
"pycharm": {
|
||||
"name": "#%%\n"
|
||||
@ -261,25 +394,10 @@
|
||||
" # compression rate = 100% * (k * (height + width + k)) / (height + width)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"pycharm": {
|
||||
"name": "#%% md\n"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"W celu zbadania, jak jakość zrekonstruowanego obrazu zmienia się wraz z $k$ należy użyć poniższego interaktywnego widżetu."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"metadata": {
|
||||
"pycharm": {
|
||||
"name": "#%%\n"
|
||||
}
|
||||
},
|
||||
"execution_count": 9,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def compute_k_max(img_name):\n",
|
||||
@ -302,9 +420,20 @@
|
||||
"list_widget.observe(update_k_max,'value')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"pycharm": {
|
||||
"name": "#%% md\n"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"W celu zbadania, jak jakość zrekonstruowanego obrazu zmienia się wraz z $k$ należy użyć poniższego interaktywnego widżetu."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 21,
|
||||
"execution_count": 10,
|
||||
"metadata": {
|
||||
"pycharm": {
|
||||
"name": "#%%\n"
|
||||
@ -322,23 +451,24 @@
|
||||
" \n",
|
||||
" image=gray_images[img_name]\n",
|
||||
" original_shape = image.shape\n",
|
||||
" print(f\"Input image dimensions. Width:{original_shape[1]} Height:{original_shape[0]}\")\n",
|
||||
" print(f\"Input image dimensions. Width:{original_shape[1]} Height:{original_shape[0]}\\n\")\n",
|
||||
"\n",
|
||||
"# U,s,V = svd(image,full_matrices=False)\n",
|
||||
" U,s,V = calculate(image)\n",
|
||||
" print(f\"Shape of U matrix: {U[:,:k].shape}\")\n",
|
||||
" print(f\"U MATRIX: {U[:,:k]}\")\n",
|
||||
" print('*' * 100)\n",
|
||||
" print(f\"Shape of S matrix: {s[:k].shape}\")\n",
|
||||
" print(f\"S MATRIX: {np.diag(s[:k])}\")\n",
|
||||
" print('*' * 100)\n",
|
||||
" print(f\"Shape of V matrix: {V[:k,:].shape}\")\n",
|
||||
" print(f\"V MATRIX: {V[:k,:]}\")\n"
|
||||
" U,s,V = svd(image,full_matrices=False)\n",
|
||||
"\n",
|
||||
" U_dataframe = pd.DataFrame(U[:,:k])\n",
|
||||
" print(f\"U MATRIX:\\n {U_dataframe}\\n\")\n",
|
||||
" print('\\n', '*' * 100, '\\n')\n",
|
||||
" print(f\"\\nShape of S matrix: {s[:k].shape[0]}\\n\")\n",
|
||||
" s_dataframe = pd.DataFrame(np.diag(s[:k]))\n",
|
||||
" print(f\"S MATRIX:\\n {s_dataframe}\")\n",
|
||||
" print('\\n', '*' * 100, '\\n')\n",
|
||||
" V_dataframe = pd.DataFrame(V[:k,:].T)\n",
|
||||
" print(f\"V MATRIX:\\n {V_dataframe}\")\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 22,
|
||||
"execution_count": 11,
|
||||
"metadata": {
|
||||
"pycharm": {
|
||||
"name": "#%%\n"
|
||||
@ -348,12 +478,12 @@
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "7c4a40e6f857407586d21ab113128a97",
|
||||
"model_id": "40f7f6318beb4d248fc1b3aa82096324",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"interactive(children=(Dropdown(description='img_name', options=('cat', 'astro', 'coffee', 'rocket', 'koala', '…"
|
||||
"interactive(children=(Dropdown(description='img_name', options=('cat', 'astro', 'line', 'camera', 'coin', 'clo…"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@ -365,7 +495,7 @@
|
||||
"<function __main__.print_matrices(img_name, k)>"
|
||||
]
|
||||
},
|
||||
"execution_count": 22,
|
||||
"execution_count": 11,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
@ -376,7 +506,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"execution_count": 12,
|
||||
"metadata": {
|
||||
"pycharm": {
|
||||
"name": "#%%\n"
|
||||
@ -386,12 +516,12 @@
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "3533923ce918489eab6fc7de25234078",
|
||||
"model_id": "3ec2852728b145a0b405eb6c24ef4e9b",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"interactive(children=(Dropdown(description='img_name', options=('cat', 'astro', 'camera', 'coin', 'clock', 'te…"
|
||||
"interactive(children=(Dropdown(description='img_name', options=('cat', 'astro', 'line', 'camera', 'coin', 'clo…"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
@ -415,7 +545,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"execution_count": 13,
|
||||
"metadata": {
|
||||
"pycharm": {
|
||||
"name": "#%%\n"
|
||||
@ -431,7 +561,7 @@
|
||||
" \"koala\": img_as_float(Image.open('koala.jpeg')),\n",
|
||||
" \"orange\": img_as_float(Image.open('orange.jpeg')),\n",
|
||||
" \"teacher\": img_as_float(Image.open('teacher.jpeg'))\n",
|
||||
"}\n"
|
||||
"}"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -472,7 +602,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"execution_count": 14,
|
||||
"metadata": {
|
||||
"pycharm": {
|
||||
"name": "#%%\n"
|
||||
@ -494,25 +624,10 @@
|
||||
" plt.imshow(image_reconst)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"pycharm": {
|
||||
"name": "#%% md\n"
|
||||
}
|
||||
},
|
||||
"source": [
|
||||
"Oto interaktywny widżet do badania kompresji obrazów kolorowych metodą reshape. Przeciągając suwak w celu zmiany wartości $k$, można zaobserwować, jak zmienia się jakość obrazu. Można także badać różne obrazy, wybierając je za pomocą rozwijanego widżetu."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 13,
|
||||
"metadata": {
|
||||
"pycharm": {
|
||||
"name": "#%%\n"
|
||||
}
|
||||
},
|
||||
"execution_count": 15,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def compute_k_max_color_images(img_name):\n",
|
||||
@ -521,66 +636,23 @@
|
||||
" return (original_shape[0]*original_shape[1]*original_shape[2])//(original_shape[0] + 3*original_shape[1] + 1)\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"list_widget = widgets.Dropdown(options=list(color_images.keys()))\n",
|
||||
"list_widget_color = widgets.Dropdown(options=list(color_images.keys()))\n",
|
||||
"int_slider_widget = widgets.IntSlider(min=1,max=compute_k_max_color_images('cat'))\n",
|
||||
"def update_k_max_color(*args):\n",
|
||||
" img_name=list_widget.value\n",
|
||||
" img_name=list_widget_color.value\n",
|
||||
" int_slider_widget.max = compute_k_max_color_images(img_name)\n",
|
||||
"list_widget.observe(update_k_max_color,'value')"
|
||||
"list_widget_color.observe(update_k_max_color,'value')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 14,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def print_color_matrices(img_name,k):\n",
|
||||
" \"\"\"\n",
|
||||
" Wyświetlanie macierzy U V S wraz z wymiarami.\n",
|
||||
" \"\"\"\n",
|
||||
" image = color_images[img_name]\n",
|
||||
" original_shape = image.shape\n",
|
||||
" image_reconst_layers = [compress_svd(image[:,:,i],k)[0] for i in range(3)]\n",
|
||||
" print(image_reconst_layers)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 15,
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"pycharm": {
|
||||
"name": "#%%\n"
|
||||
"name": "#%% md\n"
|
||||
}
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "0af20b426d1240cca1e08e40ede10e98",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"interactive(children=(Dropdown(description='img_name', options=('cat', 'astro', 'coffee', 'rocket', 'koala', '…"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"<function __main__.print_color_matrices(img_name, k)>"
|
||||
]
|
||||
},
|
||||
"execution_count": 15,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"interact(print_color_matrices, img_name=list_widget, k=int_slider_widget)"
|
||||
"Oto interaktywny widżet do badania kompresji obrazów kolorowych metodą reshape. Przeciągając suwak w celu zmiany wartości $k$, można zaobserwować, jak zmienia się jakość obrazu. Można także badać różne obrazy, wybierając je za pomocą rozwijanego widżetu."
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -595,7 +667,7 @@
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "86f500d175554478ac9805075a809d28",
|
||||
"model_id": "eaba6da4395e43d4ab429b4cca24ad3f",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
@ -608,7 +680,7 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"interact(compress_show_color_images_reshape,img_name=list_widget,k=int_slider_widget);"
|
||||
"interact(compress_show_color_images_reshape,img_name=list_widget_color,k=int_slider_widget);"
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -650,7 +722,6 @@
|
||||
" image = color_images[img_name]\n",
|
||||
" original_shape = image.shape\n",
|
||||
" image_reconst_layers = [compress_svd(image[:,:,i],k)[0] for i in range(3)]\n",
|
||||
"# print(image_reconst_layers)\n",
|
||||
" image_reconst = np.zeros(image.shape)\n",
|
||||
" for i in range(3):\n",
|
||||
" image_reconst[:,:,i] = image_reconst_layers[i]\n",
|
||||
@ -687,41 +758,17 @@
|
||||
" return (original_shape[0]*original_shape[1]*original_shape[2])// (3*(original_shape[0] + original_shape[1] + 1))\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"list_widget = widgets.Dropdown(options=list(color_images.keys()))\n",
|
||||
"list_widget_color = widgets.Dropdown(options=list(color_images.keys()))\n",
|
||||
"int_slider_widget = widgets.IntSlider(min=1,max=compute_k_max_color_images_layers('cat'))\n",
|
||||
"def update_k_max_color_layers(*args):\n",
|
||||
" img_name=list_widget.value\n",
|
||||
" img_name=list_widget_color.value\n",
|
||||
" int_slider_widget.max = compute_k_max_color_images_layers(img_name)\n",
|
||||
"list_widget.observe(update_k_max_color_layers,'value')"
|
||||
"list_widget_color.observe(update_k_max_color_layers,'value')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 19,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "e97ca096507f42b49f98dbb87ac5a2ec",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
"text/plain": [
|
||||
"interactive(children=(Dropdown(description='img_name', options=('cat', 'astro', 'coffee', 'rocket', 'koala', '…"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"interact(print_color_matrices,img_name=list_widget,k=int_slider_widget);"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 20,
|
||||
"metadata": {
|
||||
"pycharm": {
|
||||
"name": "#%%\n"
|
||||
@ -731,7 +778,7 @@
|
||||
{
|
||||
"data": {
|
||||
"application/vnd.jupyter.widget-view+json": {
|
||||
"model_id": "71fea739144848d69afb1662172190ad",
|
||||
"model_id": "5089ca8c1cb845478b279185787ad156",
|
||||
"version_major": 2,
|
||||
"version_minor": 0
|
||||
},
|
||||
@ -744,20 +791,13 @@
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"interact(compress_show_color_images_layer,img_name=list_widget,k=int_slider_widget);"
|
||||
"interact(compress_show_color_images_layer,img_name=list_widget_color,k=int_slider_widget);"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": []
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3 (ipykernel)",
|
||||
"display_name": "Python 3.8.13 ('pytorch_m1')",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
@ -772,6 +812,11 @@
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3",
|
||||
"version": "3.8.13"
|
||||
},
|
||||
"vscode": {
|
||||
"interpreter": {
|
||||
"hash": "8a8c11200ab875bf4be543ce12265edee0c7e0345ae0b6d9e205fdf23b03e663"
|
||||
}
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
|
163
kMedoids.py
Normal file
163
kMedoids.py
Normal file
@ -0,0 +1,163 @@
|
||||
import random
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
import seaborn as sns
|
||||
from sklearn.metrics import silhouette_score
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
|
||||
|
||||
class TrainModel:
|
||||
def __init__(self, data, k_value):
|
||||
self.data = data
|
||||
scaler = MinMaxScaler()
|
||||
# self.data = scaler.fit_transform(self.data)
|
||||
self.k_value = k_value
|
||||
self.kmedoids(self.data)
|
||||
|
||||
def get_random_medoids(self, data):
|
||||
points = random.sample(range(0, len(data)), self.k_value)
|
||||
medoids = []
|
||||
for i in range(self.k_value):
|
||||
medoids.append(data[i])
|
||||
return medoids
|
||||
|
||||
def get_closest_medoids(self, sample_point, medoids):
|
||||
min_distance = float('inf')
|
||||
closest_medoid = None
|
||||
for i in range(len(medoids)):
|
||||
distance = self.calculateDistance(sample_point, medoids[i])
|
||||
if distance < min_distance:
|
||||
min_distance = distance
|
||||
closest_medoid = i
|
||||
return closest_medoid
|
||||
|
||||
def get_clusters(self, data_points, medoids):
|
||||
clusters = [[] for _ in range(self.k_value)]
|
||||
for i in range(len(data_points)):
|
||||
x = self.get_closest_medoids(data_points[i], medoids)
|
||||
clusters[x].append(data_points[i])
|
||||
return clusters
|
||||
|
||||
def calculate_cost(self, data_points, clusters, medoids):
|
||||
cost = 0
|
||||
for i in range(len(clusters)):
|
||||
for j in range(len(clusters[i])):
|
||||
cost += self.calculateDistance(medoids[i], clusters[i][j])
|
||||
return cost
|
||||
|
||||
def get_non_medoids(self, data_points, medoids):
|
||||
non_medoids = []
|
||||
for sample in data_points:
|
||||
flag = False
|
||||
for m in medoids:
|
||||
if (sample == m).all():
|
||||
flag = True
|
||||
if flag == False:
|
||||
non_medoids.append(sample)
|
||||
return non_medoids
|
||||
|
||||
def get_clusters_label(self, data_points, clusters):
|
||||
labels = []
|
||||
for i in range(len(data_points)):
|
||||
labels.append(0)
|
||||
for i in range(len(clusters)):
|
||||
cluster = clusters[i]
|
||||
for j in range(len(cluster)):
|
||||
for k in range(len(data_points)):
|
||||
if (cluster[j] == data_points[k]).all():
|
||||
labels[k] = i
|
||||
break
|
||||
return labels
|
||||
|
||||
def kmedoids(self, data):
|
||||
medoids = self.get_random_medoids(data)
|
||||
clusters = self.get_clusters(data, medoids)
|
||||
initial_cost = self.calculate_cost(data, clusters, medoids)
|
||||
while True:
|
||||
best_medoids = medoids
|
||||
lowest_cost = initial_cost
|
||||
for i in range(len(medoids)):
|
||||
non_medoids = self.get_non_medoids(data, medoids)
|
||||
for j in range(len(non_medoids)):
|
||||
new_medoids = medoids.copy()
|
||||
for k in range(len(new_medoids)):
|
||||
if (new_medoids[k] == medoids[i]).all():
|
||||
new_medoids[k] = non_medoids[j]
|
||||
new_clusters = self.get_clusters(data, new_medoids)
|
||||
new_cost = self.calculate_cost(data, new_clusters, new_medoids)
|
||||
if new_cost < lowest_cost:
|
||||
lowest_cost = new_cost
|
||||
best_medoids = new_medoids
|
||||
if lowest_cost < initial_cost:
|
||||
initial_cost = lowest_cost
|
||||
medoids = best_medoids
|
||||
else:
|
||||
break
|
||||
final_clusters = self.get_clusters(data, medoids)
|
||||
cluster_labels = self.get_clusters_label(data, final_clusters)
|
||||
silhouette_avg = silhouette_score(data, cluster_labels)
|
||||
|
||||
# First cluster
|
||||
x0 = np.squeeze(final_clusters[0])[:, 0]
|
||||
y0 = np.squeeze(final_clusters[0])[:, 1]
|
||||
|
||||
# Second cluster
|
||||
x1 = np.squeeze(final_clusters[1])[:, 0]
|
||||
y1 = np.squeeze(final_clusters[1])[:, 1]
|
||||
|
||||
plt.scatter(x0, y0, c='red')
|
||||
plt.scatter(x1, y1, c='green')
|
||||
|
||||
# Draw medoids
|
||||
mx = []
|
||||
my = []
|
||||
for m in medoids:
|
||||
mx.append(m[0])
|
||||
my.append(m[1])
|
||||
plt.scatter(mx, my, c='yellow', marker='*')
|
||||
|
||||
plt.xlabel("X")
|
||||
plt.ylabel("Y")
|
||||
plt.title("K-medoids clusters")
|
||||
plt.show()
|
||||
|
||||
|
||||
print('Sylwetka (ang. Silhouette) dla algorytmu k-medoid dla k =', self.k_value, 10 * '-', silhouette_avg)
|
||||
|
||||
def calculateDistance(self, x, y):
|
||||
return np.linalg.norm(x - y)
|
||||
|
||||
|
||||
# Prepare dataset
|
||||
dataset = np.array([
|
||||
[5, 6],
|
||||
[4, 7],
|
||||
[4, 8],
|
||||
[4, 6],
|
||||
[5, 7],
|
||||
[5, 8],
|
||||
[7, 6],
|
||||
[8, 8],
|
||||
[7, 7],
|
||||
[7, 8]]
|
||||
)
|
||||
column_values = ['x', 'y']
|
||||
df = pd.DataFrame(data=dataset, columns=column_values, index=None)
|
||||
|
||||
# Draw data distribution
|
||||
sns.set_theme(style='darkgrid')
|
||||
sns.scatterplot(data=df, x='x', y='y')
|
||||
plt.show()
|
||||
|
||||
# Run K-Medoids algorithm
|
||||
model = TrainModel(dataset, 2)
|
||||
|
||||
|
||||
|
||||
|
||||
# dataset = pd.read_csv('iris.csv')
|
||||
# dataset = dataset.iloc[:,:-1]
|
||||
# dataset = dataset.iloc[: , 1:]
|
||||
# dataset = dataset.values
|
4221
kmedoids.ipynb
Normal file
4221
kmedoids.ipynb
Normal file
File diff suppressed because one or more lines are too long
179
wine.csv
Normal file
179
wine.csv
Normal file
@ -0,0 +1,179 @@
|
||||
Alcohol,Malic_Acid,Ash,Ash_Alcanity,Magnesium,Total_Phenols,Flavanoids,Nonflavanoid_Phenols,Proanthocyanins,Color_Intensity,Hue,OD280,Proline
|
||||
14.23,1.71,2.43,15.6,127,2.8,3.06,0.28,2.29,5.64,1.04,3.92,1065
|
||||
13.2,1.78,2.14,11.2,100,2.65,2.76,0.26,1.28,4.38,1.05,3.4,1050
|
||||
13.16,2.36,2.67,18.6,101,2.8,3.24,0.3,2.81,5.68,1.03,3.17,1185
|
||||
14.37,1.95,2.5,16.8,113,3.85,3.49,0.24,2.18,7.8,0.86,3.45,1480
|
||||
13.24,2.59,2.87,21,118,2.8,2.69,0.39,1.82,4.32,1.04,2.93,735
|
||||
14.2,1.76,2.45,15.2,112,3.27,3.39,0.34,1.97,6.75,1.05,2.85,1450
|
||||
14.39,1.87,2.45,14.6,96,2.5,2.52,0.3,1.98,5.25,1.02,3.58,1290
|
||||
14.06,2.15,2.61,17.6,121,2.6,2.51,0.31,1.25,5.05,1.06,3.58,1295
|
||||
14.83,1.64,2.17,14,97,2.8,2.98,0.29,1.98,5.2,1.08,2.85,1045
|
||||
13.86,1.35,2.27,16,98,2.98,3.15,0.22,1.85,7.22,1.01,3.55,1045
|
||||
14.1,2.16,2.3,18,105,2.95,3.32,0.22,2.38,5.75,1.25,3.17,1510
|
||||
14.12,1.48,2.32,16.8,95,2.2,2.43,0.26,1.57,5,1.17,2.82,1280
|
||||
13.75,1.73,2.41,16,89,2.6,2.76,0.29,1.81,5.6,1.15,2.9,1320
|
||||
14.75,1.73,2.39,11.4,91,3.1,3.69,0.43,2.81,5.4,1.25,2.73,1150
|
||||
14.38,1.87,2.38,12,102,3.3,3.64,0.29,2.96,7.5,1.2,3,1547
|
||||
13.63,1.81,2.7,17.2,112,2.85,2.91,0.3,1.46,7.3,1.28,2.88,1310
|
||||
14.3,1.92,2.72,20,120,2.8,3.14,0.33,1.97,6.2,1.07,2.65,1280
|
||||
13.83,1.57,2.62,20,115,2.95,3.4,0.4,1.72,6.6,1.13,2.57,1130
|
||||
14.19,1.59,2.48,16.5,108,3.3,3.93,0.32,1.86,8.7,1.23,2.82,1680
|
||||
13.64,3.1,2.56,15.2,116,2.7,3.03,0.17,1.66,5.1,0.96,3.36,845
|
||||
14.06,1.63,2.28,16,126,3,3.17,0.24,2.1,5.65,1.09,3.71,780
|
||||
12.93,3.8,2.65,18.6,102,2.41,2.41,0.25,1.98,4.5,1.03,3.52,770
|
||||
13.71,1.86,2.36,16.6,101,2.61,2.88,0.27,1.69,3.8,1.11,4,1035
|
||||
12.85,1.6,2.52,17.8,95,2.48,2.37,0.26,1.46,3.93,1.09,3.63,1015
|
||||
13.5,1.81,2.61,20,96,2.53,2.61,0.28,1.66,3.52,1.12,3.82,845
|
||||
13.05,2.05,3.22,25,124,2.63,2.68,0.47,1.92,3.58,1.13,3.2,830
|
||||
13.39,1.77,2.62,16.1,93,2.85,2.94,0.34,1.45,4.8,0.92,3.22,1195
|
||||
13.3,1.72,2.14,17,94,2.4,2.19,0.27,1.35,3.95,1.02,2.77,1285
|
||||
13.87,1.9,2.8,19.4,107,2.95,2.97,0.37,1.76,4.5,1.25,3.4,915
|
||||
14.02,1.68,2.21,16,96,2.65,2.33,0.26,1.98,4.7,1.04,3.59,1035
|
||||
13.73,1.5,2.7,22.5,101,3,3.25,0.29,2.38,5.7,1.19,2.71,1285
|
||||
13.58,1.66,2.36,19.1,106,2.86,3.19,0.22,1.95,6.9,1.09,2.88,1515
|
||||
13.68,1.83,2.36,17.2,104,2.42,2.69,0.42,1.97,3.84,1.23,2.87,990
|
||||
13.76,1.53,2.7,19.5,132,2.95,2.74,0.5,1.35,5.4,1.25,3,1235
|
||||
13.51,1.8,2.65,19,110,2.35,2.53,0.29,1.54,4.2,1.1,2.87,1095
|
||||
13.48,1.81,2.41,20.5,100,2.7,2.98,0.26,1.86,5.1,1.04,3.47,920
|
||||
13.28,1.64,2.84,15.5,110,2.6,2.68,0.34,1.36,4.6,1.09,2.78,880
|
||||
13.05,1.65,2.55,18,98,2.45,2.43,0.29,1.44,4.25,1.12,2.51,1105
|
||||
13.07,1.5,2.1,15.5,98,2.4,2.64,0.28,1.37,3.7,1.18,2.69,1020
|
||||
14.22,3.99,2.51,13.2,128,3,3.04,0.2,2.08,5.1,0.89,3.53,760
|
||||
13.56,1.71,2.31,16.2,117,3.15,3.29,0.34,2.34,6.13,0.95,3.38,795
|
||||
13.41,3.84,2.12,18.8,90,2.45,2.68,0.27,1.48,4.28,0.91,3,1035
|
||||
13.88,1.89,2.59,15,101,3.25,3.56,0.17,1.7,5.43,0.88,3.56,1095
|
||||
13.24,3.98,2.29,17.5,103,2.64,2.63,0.32,1.66,4.36,0.82,3,680
|
||||
13.05,1.77,2.1,17,107,3,3,0.28,2.03,5.04,0.88,3.35,885
|
||||
14.21,4.04,2.44,18.9,111,2.85,2.65,0.3,1.25,5.24,0.87,3.33,1080
|
||||
14.38,3.59,2.28,16,102,3.25,3.17,0.27,2.19,4.9,1.04,3.44,1065
|
||||
13.9,1.68,2.12,16,101,3.1,3.39,0.21,2.14,6.1,0.91,3.33,985
|
||||
14.1,2.02,2.4,18.8,103,2.75,2.92,0.32,2.38,6.2,1.07,2.75,1060
|
||||
13.94,1.73,2.27,17.4,108,2.88,3.54,0.32,2.08,8.9,1.12,3.1,1260
|
||||
13.05,1.73,2.04,12.4,92,2.72,3.27,0.17,2.91,7.2,1.12,2.91,1150
|
||||
13.83,1.65,2.6,17.2,94,2.45,2.99,0.22,2.29,5.6,1.24,3.37,1265
|
||||
13.82,1.75,2.42,14,111,3.88,3.74,0.32,1.87,7.05,1.01,3.26,1190
|
||||
13.77,1.9,2.68,17.1,115,3,2.79,0.39,1.68,6.3,1.13,2.93,1375
|
||||
13.74,1.67,2.25,16.4,118,2.6,2.9,0.21,1.62,5.85,0.92,3.2,1060
|
||||
13.56,1.73,2.46,20.5,116,2.96,2.78,0.2,2.45,6.25,0.98,3.03,1120
|
||||
14.22,1.7,2.3,16.3,118,3.2,3,0.26,2.03,6.38,0.94,3.31,970
|
||||
13.29,1.97,2.68,16.8,102,3,3.23,0.31,1.66,6,1.07,2.84,1270
|
||||
13.72,1.43,2.5,16.7,108,3.4,3.67,0.19,2.04,6.8,0.89,2.87,1285
|
||||
12.37,0.94,1.36,10.6,88,1.98,0.57,0.28,0.42,1.95,1.05,1.82,520
|
||||
12.33,1.1,2.28,16,101,2.05,1.09,0.63,0.41,3.27,1.25,1.67,680
|
||||
12.64,1.36,2.02,16.8,100,2.02,1.41,0.53,0.62,5.75,0.98,1.59,450
|
||||
13.67,1.25,1.92,18,94,2.1,1.79,0.32,0.73,3.8,1.23,2.46,630
|
||||
12.37,1.13,2.16,19,87,3.5,3.1,0.19,1.87,4.45,1.22,2.87,420
|
||||
12.17,1.45,2.53,19,104,1.89,1.75,0.45,1.03,2.95,1.45,2.23,355
|
||||
12.37,1.21,2.56,18.1,98,2.42,2.65,0.37,2.08,4.6,1.19,2.3,678
|
||||
13.11,1.01,1.7,15,78,2.98,3.18,0.26,2.28,5.3,1.12,3.18,502
|
||||
12.37,1.17,1.92,19.6,78,2.11,2,0.27,1.04,4.68,1.12,3.48,510
|
||||
13.34,0.94,2.36,17,110,2.53,1.3,0.55,0.42,3.17,1.02,1.93,750
|
||||
12.21,1.19,1.75,16.8,151,1.85,1.28,0.14,2.5,2.85,1.28,3.07,718
|
||||
12.29,1.61,2.21,20.4,103,1.1,1.02,0.37,1.46,3.05,0.906,1.82,870
|
||||
13.86,1.51,2.67,25,86,2.95,2.86,0.21,1.87,3.38,1.36,3.16,410
|
||||
13.49,1.66,2.24,24,87,1.88,1.84,0.27,1.03,3.74,0.98,2.78,472
|
||||
12.99,1.67,2.6,30,139,3.3,2.89,0.21,1.96,3.35,1.31,3.5,985
|
||||
11.96,1.09,2.3,21,101,3.38,2.14,0.13,1.65,3.21,0.99,3.13,886
|
||||
11.66,1.88,1.92,16,97,1.61,1.57,0.34,1.15,3.8,1.23,2.14,428
|
||||
13.03,0.9,1.71,16,86,1.95,2.03,0.24,1.46,4.6,1.19,2.48,392
|
||||
11.84,2.89,2.23,18,112,1.72,1.32,0.43,0.95,2.65,0.96,2.52,500
|
||||
12.33,0.99,1.95,14.8,136,1.9,1.85,0.35,2.76,3.4,1.06,2.31,750
|
||||
12.7,3.87,2.4,23,101,2.83,2.55,0.43,1.95,2.57,1.19,3.13,463
|
||||
12,0.92,2,19,86,2.42,2.26,0.3,1.43,2.5,1.38,3.12,278
|
||||
12.72,1.81,2.2,18.8,86,2.2,2.53,0.26,1.77,3.9,1.16,3.14,714
|
||||
12.08,1.13,2.51,24,78,2,1.58,0.4,1.4,2.2,1.31,2.72,630
|
||||
13.05,3.86,2.32,22.5,85,1.65,1.59,0.61,1.62,4.8,0.84,2.01,515
|
||||
11.84,0.89,2.58,18,94,2.2,2.21,0.22,2.35,3.05,0.79,3.08,520
|
||||
12.67,0.98,2.24,18,99,2.2,1.94,0.3,1.46,2.62,1.23,3.16,450
|
||||
12.16,1.61,2.31,22.8,90,1.78,1.69,0.43,1.56,2.45,1.33,2.26,495
|
||||
11.65,1.67,2.62,26,88,1.92,1.61,0.4,1.34,2.6,1.36,3.21,562
|
||||
11.64,2.06,2.46,21.6,84,1.95,1.69,0.48,1.35,2.8,1,2.75,680
|
||||
12.08,1.33,2.3,23.6,70,2.2,1.59,0.42,1.38,1.74,1.07,3.21,625
|
||||
12.08,1.83,2.32,18.5,81,1.6,1.5,0.52,1.64,2.4,1.08,2.27,480
|
||||
12,1.51,2.42,22,86,1.45,1.25,0.5,1.63,3.6,1.05,2.65,450
|
||||
12.69,1.53,2.26,20.7,80,1.38,1.46,0.58,1.62,3.05,0.96,2.06,495
|
||||
12.29,2.83,2.22,18,88,2.45,2.25,0.25,1.99,2.15,1.15,3.3,290
|
||||
11.62,1.99,2.28,18,98,3.02,2.26,0.17,1.35,3.25,1.16,2.96,345
|
||||
12.47,1.52,2.2,19,162,2.5,2.27,0.32,3.28,2.6,1.16,2.63,937
|
||||
11.81,2.12,2.74,21.5,134,1.6,0.99,0.14,1.56,2.5,0.95,2.26,625
|
||||
12.29,1.41,1.98,16,85,2.55,2.5,0.29,1.77,2.9,1.23,2.74,428
|
||||
12.37,1.07,2.1,18.5,88,3.52,3.75,0.24,1.95,4.5,1.04,2.77,660
|
||||
12.29,3.17,2.21,18,88,2.85,2.99,0.45,2.81,2.3,1.42,2.83,406
|
||||
12.08,2.08,1.7,17.5,97,2.23,2.17,0.26,1.4,3.3,1.27,2.96,710
|
||||
12.6,1.34,1.9,18.5,88,1.45,1.36,0.29,1.35,2.45,1.04,2.77,562
|
||||
12.34,2.45,2.46,21,98,2.56,2.11,0.34,1.31,2.8,0.8,3.38,438
|
||||
11.82,1.72,1.88,19.5,86,2.5,1.64,0.37,1.42,2.06,0.94,2.44,415
|
||||
12.51,1.73,1.98,20.5,85,2.2,1.92,0.32,1.48,2.94,1.04,3.57,672
|
||||
12.42,2.55,2.27,22,90,1.68,1.84,0.66,1.42,2.7,0.86,3.3,315
|
||||
12.25,1.73,2.12,19,80,1.65,2.03,0.37,1.63,3.4,1,3.17,510
|
||||
12.72,1.75,2.28,22.5,84,1.38,1.76,0.48,1.63,3.3,0.88,2.42,488
|
||||
12.22,1.29,1.94,19,92,2.36,2.04,0.39,2.08,2.7,0.86,3.02,312
|
||||
11.61,1.35,2.7,20,94,2.74,2.92,0.29,2.49,2.65,0.96,3.26,680
|
||||
11.46,3.74,1.82,19.5,107,3.18,2.58,0.24,3.58,2.9,0.75,2.81,562
|
||||
12.52,2.43,2.17,21,88,2.55,2.27,0.26,1.22,2,0.9,2.78,325
|
||||
11.76,2.68,2.92,20,103,1.75,2.03,0.6,1.05,3.8,1.23,2.5,607
|
||||
11.41,0.74,2.5,21,88,2.48,2.01,0.42,1.44,3.08,1.1,2.31,434
|
||||
12.08,1.39,2.5,22.5,84,2.56,2.29,0.43,1.04,2.9,0.93,3.19,385
|
||||
11.03,1.51,2.2,21.5,85,2.46,2.17,0.52,2.01,1.9,1.71,2.87,407
|
||||
11.82,1.47,1.99,20.8,86,1.98,1.6,0.3,1.53,1.95,0.95,3.33,495
|
||||
12.42,1.61,2.19,22.5,108,2,2.09,0.34,1.61,2.06,1.06,2.96,345
|
||||
12.77,3.43,1.98,16,80,1.63,1.25,0.43,0.83,3.4,0.7,2.12,372
|
||||
12,3.43,2,19,87,2,1.64,0.37,1.87,1.28,0.93,3.05,564
|
||||
11.45,2.4,2.42,20,96,2.9,2.79,0.32,1.83,3.25,0.8,3.39,625
|
||||
11.56,2.05,3.23,28.5,119,3.18,5.08,0.47,1.87,6,0.93,3.69,465
|
||||
12.42,4.43,2.73,26.5,102,2.2,2.13,0.43,1.71,2.08,0.92,3.12,365
|
||||
13.05,5.8,2.13,21.5,86,2.62,2.65,0.3,2.01,2.6,0.73,3.1,380
|
||||
11.87,4.31,2.39,21,82,2.86,3.03,0.21,2.91,2.8,0.75,3.64,380
|
||||
12.07,2.16,2.17,21,85,2.6,2.65,0.37,1.35,2.76,0.86,3.28,378
|
||||
12.43,1.53,2.29,21.5,86,2.74,3.15,0.39,1.77,3.94,0.69,2.84,352
|
||||
11.79,2.13,2.78,28.5,92,2.13,2.24,0.58,1.76,3,0.97,2.44,466
|
||||
12.37,1.63,2.3,24.5,88,2.22,2.45,0.4,1.9,2.12,0.89,2.78,342
|
||||
12.04,4.3,2.38,22,80,2.1,1.75,0.42,1.35,2.6,0.79,2.57,580
|
||||
12.86,1.35,2.32,18,122,1.51,1.25,0.21,0.94,4.1,0.76,1.29,630
|
||||
12.88,2.99,2.4,20,104,1.3,1.22,0.24,0.83,5.4,0.74,1.42,530
|
||||
12.81,2.31,2.4,24,98,1.15,1.09,0.27,0.83,5.7,0.66,1.36,560
|
||||
12.7,3.55,2.36,21.5,106,1.7,1.2,0.17,0.84,5,0.78,1.29,600
|
||||
12.51,1.24,2.25,17.5,85,2,0.58,0.6,1.25,5.45,0.75,1.51,650
|
||||
12.6,2.46,2.2,18.5,94,1.62,0.66,0.63,0.94,7.1,0.73,1.58,695
|
||||
12.25,4.72,2.54,21,89,1.38,0.47,0.53,0.8,3.85,0.75,1.27,720
|
||||
12.53,5.51,2.64,25,96,1.79,0.6,0.63,1.1,5,0.82,1.69,515
|
||||
13.49,3.59,2.19,19.5,88,1.62,0.48,0.58,0.88,5.7,0.81,1.82,580
|
||||
12.84,2.96,2.61,24,101,2.32,0.6,0.53,0.81,4.92,0.89,2.15,590
|
||||
12.93,2.81,2.7,21,96,1.54,0.5,0.53,0.75,4.6,0.77,2.31,600
|
||||
13.36,2.56,2.35,20,89,1.4,0.5,0.37,0.64,5.6,0.7,2.47,780
|
||||
13.52,3.17,2.72,23.5,97,1.55,0.52,0.5,0.55,4.35,0.89,2.06,520
|
||||
13.62,4.95,2.35,20,92,2,0.8,0.47,1.02,4.4,0.91,2.05,550
|
||||
12.25,3.88,2.2,18.5,112,1.38,0.78,0.29,1.14,8.21,0.65,2,855
|
||||
13.16,3.57,2.15,21,102,1.5,0.55,0.43,1.3,4,0.6,1.68,830
|
||||
13.88,5.04,2.23,20,80,0.98,0.34,0.4,0.68,4.9,0.58,1.33,415
|
||||
12.87,4.61,2.48,21.5,86,1.7,0.65,0.47,0.86,7.65,0.54,1.86,625
|
||||
13.32,3.24,2.38,21.5,92,1.93,0.76,0.45,1.25,8.42,0.55,1.62,650
|
||||
13.08,3.9,2.36,21.5,113,1.41,1.39,0.34,1.14,9.4,0.57,1.33,550
|
||||
13.5,3.12,2.62,24,123,1.4,1.57,0.22,1.25,8.6,0.59,1.3,500
|
||||
12.79,2.67,2.48,22,112,1.48,1.36,0.24,1.26,10.8,0.48,1.47,480
|
||||
13.11,1.9,2.75,25.5,116,2.2,1.28,0.26,1.56,7.1,0.61,1.33,425
|
||||
13.23,3.3,2.28,18.5,98,1.8,0.83,0.61,1.87,10.52,0.56,1.51,675
|
||||
12.58,1.29,2.1,20,103,1.48,0.58,0.53,1.4,7.6,0.58,1.55,640
|
||||
13.17,5.19,2.32,22,93,1.74,0.63,0.61,1.55,7.9,0.6,1.48,725
|
||||
13.84,4.12,2.38,19.5,89,1.8,0.83,0.48,1.56,9.01,0.57,1.64,480
|
||||
12.45,3.03,2.64,27,97,1.9,0.58,0.63,1.14,7.5,0.67,1.73,880
|
||||
14.34,1.68,2.7,25,98,2.8,1.31,0.53,2.7,13,0.57,1.96,660
|
||||
13.48,1.67,2.64,22.5,89,2.6,1.1,0.52,2.29,11.75,0.57,1.78,620
|
||||
12.36,3.83,2.38,21,88,2.3,0.92,0.5,1.04,7.65,0.56,1.58,520
|
||||
13.69,3.26,2.54,20,107,1.83,0.56,0.5,0.8,5.88,0.96,1.82,680
|
||||
12.85,3.27,2.58,22,106,1.65,0.6,0.6,0.96,5.58,0.87,2.11,570
|
||||
12.96,3.45,2.35,18.5,106,1.39,0.7,0.4,0.94,5.28,0.68,1.75,675
|
||||
13.78,2.76,2.3,22,90,1.35,0.68,0.41,1.03,9.58,0.7,1.68,615
|
||||
13.73,4.36,2.26,22.5,88,1.28,0.47,0.52,1.15,6.62,0.78,1.75,520
|
||||
13.45,3.7,2.6,23,111,1.7,0.92,0.43,1.46,10.68,0.85,1.56,695
|
||||
12.82,3.37,2.3,19.5,88,1.48,0.66,0.4,0.97,10.26,0.72,1.75,685
|
||||
13.58,2.58,2.69,24.5,105,1.55,0.84,0.39,1.54,8.66,0.74,1.8,750
|
||||
13.4,4.6,2.86,25,112,1.98,0.96,0.27,1.11,8.5,0.67,1.92,630
|
||||
12.2,3.03,2.32,19,96,1.25,0.49,0.4,0.73,5.5,0.66,1.83,510
|
||||
12.77,2.39,2.28,19.5,86,1.39,0.51,0.48,0.64,9.899999,0.57,1.63,470
|
||||
14.16,2.51,2.48,20,91,1.68,0.7,0.44,1.24,9.7,0.62,1.71,660
|
||||
13.71,5.65,2.45,20.5,95,1.68,0.61,0.52,1.06,7.7,0.64,1.74,740
|
||||
13.4,3.91,2.48,23,102,1.8,0.75,0.43,1.41,7.3,0.7,1.56,750
|
||||
13.27,4.28,2.26,20,120,1.59,0.69,0.43,1.35,10.2,0.59,1.56,835
|
||||
13.17,2.59,2.37,20,120,1.65,0.68,0.53,1.46,9.3,0.6,1.62,840
|
||||
14.13,4.1,2.74,24.5,96,2.05,0.76,0.56,1.35,9.2,0.61,1.6,560
|
|
Loading…
Reference in New Issue
Block a user