Пока я объясню самые основные параметры для построения модели. Это результативность и побочные эффекты. Ну вот вы же например покупая например лекарство в первую очередь интересуетесь поможет не поможет, а потом смотрите на противопоказания. И если вам надо решить какую либо задачу по влиянию на ситуацию вам надо знать на что надо действовать чтобы что то сделать и не повлечет ли то что вы добились и это воздействие ухудшение ситуации вообще. Например вы выяснили кто производит товар и поставляет на рынок и договорились покупать у него. С остальными то не поторгуешься они не могут продать дешевле чем купили. Да вы получили прибыль но ваши конкуренты узнав об этом могут пытаться расстроить вашу договоренность с поставщиком если имеют на него влияние. И как узнать кто поставщик и насколько он зависим от ситуации? Для этого нам нужно цены на товар на различных площадках. Это по столбцам. Ну а по строкам разные виды этого товара. Или хотя бы один товар но в разные дни. И чем больше будет строк тем более точный анализ мы сделаем. Для научных данных это могут быть измеряемые свойства-серии опытов. Главное понять что увеличение количества строк увеличивает точность а столбцов позволяет не пропустить значащий фактор.
1
Сохраните блок данных которые вас интересуют как текстовый файл с разделителями
табуляции. Назовём его 1.txt
157 5,2 286 13,5 1 78 2 15 4
133 4,1 246 69,2 1 1 78 2 15 3
87 3,85 323,4 24 7 6 13 43 2 7 14 6
103 4 160 2,2 2 55 3 30 10
43 2 140 5,1 65 3 22 10
123 4,5 242 3,9 2 68 1 25 4
41 2,8 225 3,4 52 3 42 3
46 2,75 6 192,5 6,5 60 1 34 5
46 2,4 245 3,5 1 43 4 46 6
95 4 180 3 54 8 27 11
86 3,9 218,4 180 1 6 96
70 4 20 240 3,9 1 2 58 1 26 12
123 4,15 246 6,2 41 4 1 44 11
114 4,2 12,6 9,6 1 63 3 30 3
136 4,56 232,56 4,55 2 60 2 34 2
178 6,1 335,5 10,4 2 72 20 6
103 3,6 161 3,6 1 56 3 1 36 3
101 4 200 5 60 3 31 6
60 2,5 25 52 1 2 1 10 1
Вот так это примерно выглядит.
2 скачиваем интерпретатор питона https://www.python.org/downloads/ нам нужен 2.7.11
Впрочем можно и с другого источника.
3 скачаем учебник по питону их много. Прочитайте хоть что ни будь. Но пока вам достаточно знать что отступы в питоне означают тело цикла или условия. И их трогать не надо.
4
Заходим в любой текстовый редактор и создаем файл программы 1.py Копируем в него блок ниже. (синий)
Можно создать всё это прямо в директории питона. Туда же переноси файл 1.txt
fr=open("1.txt","rt")
a=fr.readlines() fr.close() print
a |
за пускаем его строкой python.exe 1.py вот что он напечатает на экране.
\t это разделитель табуляции а то что в
этих скобках и есть массив []
['157\t5,2\t\t286\t13,5\t\t\t1\t78\t2\t\t15\t4\n',
'133\t4,1\t\t246\t69,2\t\t1\t1\t78\t2\t\t15\t3\n',
'87\t3,85\t\t323,4\t24\t7\t6\t13\t43\t2\t7\t14\t6\n',
'103\t4\t\t160\t2,2\t\t\t2\t55\t3\t\t30\t10\n', '\t\t\t\t\t\t\t\t\t\t\t\t\n',
'43\t2\t\t140\t5,1\t\t\t\t65\t3\t\t22\t10\n',
'123\t4,5\t\t242\t3,9\t\t\t2\t68\t1\t\t25\t4\n',
'41\t2,8\t\t225\t3,4\t\t\t\t52\t3\t\t42\t3\n',
'46\t2,75\t6\t192,5\t6,5\t\t\t\t60\t1\t\t34\t5\n',
'46\t2,4\t\t245\t3,5\t\t\t1\t43\t4\t\t46\t6\n', '95\t4\t\t180\t3\t\t\t\t54\t8\t\t27\t11\n',
'86\t3,9\t\t218,4\t180\t\t\t1\t6\t\t\t96\t\n',
'70\t4\t20\t240\t3,9\t\t1\t2\t58\t\t1\t26\t12\n',
'123\t4,15\t\t246\t6,2\t\t\t\t41\t4\t1\t44\t11\n',
'114\t4,2\t\t12,6\t9,6\t\t\t1\t63\t3\t\t30\t3\n',
'136\t4,56\t\t232,56\t4,55\t\t\t2\t60\t2\t\t34\t2\n',
'178\t6,1\t\t335,5\t10,4\t\t\t2\t72\t\t\t20\t6\n',
'103\t3,6\t\t161\t3,6\t\t\t1\t56\t3\t1\t36\t3\n',
'101\t4\t\t200\t5\t\t\t\t60\t3\t\t31\t6\n',
'60\t2,5\t\t25\t52\t\t\t1\t2\t1\t\t10\t1\n']
Разберем программу.
Мы открываем файл fr=open("1.txt","rt")
Записываем его в массив a=fr.readlines()
Закрываем fr.close()
Печатаем массив print a
А это
уже другая программа
fr=open("1.txt","rt") a=fr.readlines() fr.close() for s in a: print
s |
157 5,2 286 13,5 1 78 2 15 4
133 4,1 246 69,2 1 1 78 2 15 3
87 3,85 323,4 24 7 6 13 43 2 7 14 6
103 4 160 2,2 2 55 3 30 10
43 2 140 5,1 65 3 22 10
123 4,5 242 3,9 2 68 1 25 4
41 2,8 225 3,4 52 3 42 3
46 2,75 6 192,5 6,5 60 1 34 5
46 2,4 245 3,5 1 43 4 46 6
95 4 180 3 54 8 27 11
86 3,9 218,4 180 1 6 96
70 4 20 240 3,9 1 2 58 1 26 12
123 4,15 246 6,2 41 4 1 44 11
114 4,2 12,6 9,6 1 63 3 30 3
136 4,56 232,56 4,55 2 60 2 34 2
178 6,1 335,5 10,4 2 72 20 6
103 3,6 161 3,6 1 56 3 1 36 3
101 4 200 5 60 3 31 6
60 2,5 25 52 1 2 1 10 1
А теперь мы распечатали его построчно.
Для этого мы перечислили элементы массива. for s in a:
И распечатали каждый из них. print s
fr=open("1.txt","rt")
a=fr.readlines()
fr.close()
print "len(a)=",len(a)
d=[]
for s in a:
s=s[:-1]
b=s.split("\t")
print
"len(b)=",len(b)
for
c in b:
print c,";",
d.append(c)
print
print d
Более сложнае программа во первых мы печатаем длину массива. print "len(a)=",len(a)
Во вторых задаем пустой массив d=[]
И заполняем данными. На этот раз массив двумерный. То есть сам массив состоит не из строк а из массивов. И тут есть специальная команда b=s.split("\t") которая делает из строки массив. Но ей надо указать разделитель. После этого мы его поэлементно печатаем print c,";", И заполняем массив d.append(c)
len(a)= 20
len(b)= 13
157 ; 5,2 ; ; 286 ; 13,5 ; ; ; 1
; 78 ; 2 ; ; 15 ; 4 ;
len(b)= 13
133 ; 4,1 ; ; 246 ; 69,2 ; ; 1 ; 1 ; 78 ; 2 ; ; 15 ; 3 ;
len(b)= 13
87 ; 3,85 ; ; 323,4 ; 24 ; 7 ; 6 ;
13 ; 43 ; 2 ; 7 ; 14 ; 6 ;
len(b)= 13
103 ; 4 ; ; 160 ; 2,2 ; ; ; 2
; 55 ; 3 ; ; 30 ; 10 ;
len(b)= 13
; ;
; ; ;
; ; ;
; ; ;
; ;
len(b)= 13
43 ; 2 ; ; 140 ; 5,1 ; ;
; ; 65 ; 3 ; ; 22 ; 10 ;
len(b)= 13
123 ; 4,5 ; ; 242 ; 3,9 ; ; ; 2
; 68 ; 1 ; ; 25 ; 4 ;
len(b)= 13
41 ; 2,8 ; ; 225 ; 3,4 ; ;
; ; 52 ; 3 ; ; 42 ; 3 ;
len(b)= 13
46 ; 2,75 ; 6 ; 192,5 ; 6,5 ; ; ; ; 60
; 1 ; ; 34 ; 5 ;
len(b)= 13
46 ; 2,4 ; ; 245 ; 3,5 ; ; ; 1
; 43 ; 4 ; ; 46 ; 6 ;
len(b)= 13
95 ; 4 ; ; 180 ; 3 ; ; ; ; 54 ; 8 ;
; 27 ; 11 ;
len(b)= 13
86 ; 3,9 ; ; 218,4 ; 180 ; ; ; 1
; 6 ; ;
; 96 ; ;
len(b)= 13
70 ; 4 ; 20 ; 240 ; 3,9 ; ; 1 ; 2 ;
58 ; ; 1 ; 26 ; 12 ;
len(b)= 13
123 ; 4,15 ; ; 246 ; 6,2 ; ;
; ; 41 ; 4 ; 1 ; 44 ; 11 ;
len(b)= 13
114 ; 4,2 ; ; 12,6 ; 9,6 ; ; ; 1
; 63 ; 3 ; ; 30 ; 3 ;
len(b)= 13
136 ; 4,56 ; ; 232,56 ; 4,55 ; ; ; 2
; 60 ; 2 ; ; 34 ; 2 ;
len(b)= 13
178 ; 6,1 ; ; 335,5 ; 10,4 ; ; ; 2
; 72 ; ;
; 20 ; 6 ;
len(b)= 13
103 ; 3,6 ; ; 161 ; 3,6 ;
; ; 1 ; 56 ; 3 ; 1 ; 36 ; 3 ;
len(b)= 13
101 ; 4 ; ; 200 ; 5 ;
; ; ; 60 ; 3 ;
; 31 ; 6 ;
len(b)= 13
60 ; 2,5 ; ; 25 ; 52 ; ; ; 1 ; 2 ; 1 ; ; 10 ; 1 ;
Дальше начинается произвол. Потому что данные нам надо «повернуть набок»
fr=open("1.txt","rt")
a=fr.readlines()
fr.close()
la=len(a)
d=[]
for s in a:
s=s[:-1]
b=s.split("\t")
lb=len(b)
e=[]
for
c in b:
e.append(c)
d.append(e)
for g in d:
print
g
p=[]
for i in range(lb):
p.append([])
for
k in range(la):
p[i].append(d[k][i])
print p
вот как это делается.
Сначало
мы смотрим что получилось.
for g in d:
print g
Потом создаём пустой массив p=[]
вот эта строка for i in range(lb):
означает что I принимает значения от 0 до lb
мы заполняем сначала массив p пустыми массивами lb раз потом каждый пустой массив la раз заполняем данными из массива d[k][i] Потом печатаем что получилось.
Исходный
массив.
['157', '5,2', '', '286', '13,5', '', '', '1', '78', '2', '', '15', '4']
['133', '4,1', '', '246', '69,2', '', '1', '1', '78', '2', '', '15', '3']
['87', '3,85', '', '323,4', '24', '7', '6', '13', '43', '2', '7', '14',
'6']
['103', '4', '', '160', '2,2', '', '', '2', '55', '3', '', '30', '10']
['', '', '', '', '', '', '', '', '', '', '', '', '']
['43', '2', '', '140', '5,1', '', '', '', '65', '3', '', '22', '10']
['123', '4,5', '', '242', '3,9', '', '', '2', '68', '1', '', '25', '4']
['41', '2,8', '', '225', '3,4', '', '', '', '52', '3', '', '42', '3']
['46', '2,75', '6', '192,5', '6,5', '', '', '', '60', '1', '', '34', '5']
['46', '2,4', '', '245', '3,5', '', '', '1', '43', '4', '', '46', '6']
['95', '4', '', '180', '3', '', '', '', '54', '8', '', '27', '11']
['86', '3,9', '', '218,4', '180', '', '', '1', '6', '', '', '96', '']
['70', '4', '20', '240', '3,9', '', '1', '2', '58', '', '1', '26', '12']
['123', '4,15', '', '246', '6,2', '', '', '', '41', '4', '1', '44', '11']
['114', '4,2', '', '12,6', '9,6', '', '', '1', '63', '3', '', '30', '3']
['136', '4,56', '', '232,56', '4,55', '', '', '2', '60', '2', '', '34',
'2']
['178', '6,1', '', '335,5', '10,4', '', '', '2', '72', '', '', '20', '6']
['103', '3,6', '', '161', '3,6', '', '', '1', '56', '3', '1', '36', '3']
['101', '4', '', '200', '5', '', '', '', '60', '3', '', '31', '6']
['60', '2,5', '', '25', '52', '', '', '1', '2', '1', '', '10', '1']
А это
мы повернули его на бок
[['157', '133', '87', '103', '', '43', '123', '41', '46', '46', '95', '86',
'70', '123', '114', '136', '178', '103', '101', '60'], ['5,2', '4,1', '3,85',
'4', '', '2', '4,5', '2,8', '2,75', '2,4', '4', '3,9', '4', '4,15', '4,2',
'4,56', '6,1', '3,6', '4', '2,5'], ['', '', '', '', '', '', '', '', '6', '',
'', '', '20', '', '', '', '', '', '', ''], ['286', '246', '323,4', '160', '',
'140', '242', '225', '192,5', '245', '180', '218,4', '240', '246', '12,6',
'232,56', '335,5', '161', '200', '25'], ['13,5', '69,2', '24', '2,2', '',
'5,1', '3,9', '3,4', '6,5', '3,5', '3', '180', '3,9', '6,2', '9,6', '4,55',
'10,4', '3,6', '5', '52'], ['', '', '7', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', ''], ['', '1', '6', '', '', '', '', '', '', '', '',
'', '1', '', '', '', '', '', '', ''], ['1', '1', '13', '2', '', '', '2', '',
'', '1', '', '1', '2', '', '1', '2', '2', '1', '', '1'], ['78', '78', '43',
'55', '', '65', '68', '52', '60', '43', '54', '6', '58', '41', '63', '60',
'72', '56', '60', '2'], ['2', '2', '2', '3', '', '3', '1', '3', '1', '4', '8',
'', '', '4', '3', '2', '', '3', '3', '1'], ['', '', '7', '', '', '', '', '',
'', '', '', '', '1', '1', '', '', '', '1', '', ''], ['15', '15', '14', '30',
'', '22', '25', '42', '34', '46', '27', '96', '26', '44', '30', '34', '20',
'36', '31', '10'], ['4', '3', '6', '10', '', '10', '4', '3', '5', '6', '11',
'', '12', '11', '3', '2', '6', '3', '6', '1']]
Ну всё
теперь можно приступать к формированию строки для отправки на сервер.
def ur(mx,mn,zn):
if
zn==0.001: return 0.501
if
zn==0.0: return 0.503
if
mx-mn==0.0: return 0.0
if
zn-mn==0.0: return 0.0
wz=(zn-mn)/(mx-mn)
return
wz
fr=open("2.txt","rt")
a=fr.readlines()
fr.close()
la=len(a)
d=[]
for s in a:
s=s[:-1]
b=s.split("\t")
lb=len(b)
e=[]
for
c in b:
if
c=="":c="0.001"
e.append(float(c))
d.append(e)
p=[]
r=[]
h=[]
xm=[]
for i in range(lb):
p.append([])
h.append([])
r=[]
for
k in range(la):
if d[k][i]!=0.001:r.append(d[k][i])
p[i].append(d[k][i]-0.001)
h[i].append(0.502)
if
r!=[]:
xm.append((max(r),min(r)))
for i in range(lb):
o=p[i]
mx,mn=xm[i]
for
k in range(la):
h[i][k]=ur(mx,mn,o[k])
for y in h:
print
y
Но для этого надо объяснит что такое подпрограмма.
Вот
эта. Очень часто бывает так что одно и тоже действие надо повторить несколько
раз в разных местах. Но даже если и в одном то его удобнее оформить в виде
отдельного модуля.( def) У нас он называется ur а в перечислены данные что мы ему отсылаем.
return Означает вернуть результаты. Цель нашей
подпрограммы расположить все значения в интервале от 0 до 1. для этого мы в
строке с данными находим наибольшее mx=max(r) и
наименьшее число mn=min(r)
r это массив с теми же данными но пустые места здесь пропущены. При помощи вот этого условия if d[k][i]!=0.001
Ну а потом отнимаем от каждого значения наименьшее и делим на разницу между наибольшим и наименьшим. О все данные одного типа располагаются у нас между 0 и 1.
Кроме того в этом цикле мы создаем ещё один пустой массив и заполняем его h[i].append(0.502) числом 0.502 почему этим да просто мне так захотелось.
Вообще весь этот мудрёж нужен для того чтобы избавиться от плохих данных. Ведь они могут отсутствовать. И пустые места забиваются всякими разными числами которые несут информацию для программы обработки. Но вам это знать не обязательно. Главное уметь поворачивать массивы. Дело в том что это может и не понадобиться. Все зависит от способа предоставления данных в вашей базе. Обычно в столбце содержится один тип данных. Если это не так, то поворачивать массив не надо. Да и еще, иногда EXCEL сохраняет числа, ставя в качестве разделителя разрядов запятую вместо точки. Исправьте.
Вот что
у вас получится. Это массивы данных
приведенных к одному масштабу.
[0.8467080291970802,
0.6715255474452554, 0.33575912408759123, 0.4525474452554744, 0.503,
0.014591240875912426, 0.5985328467153285, -7.299270072975689e-06,
0.03648905109489053, 0.03648905109489053, 0.3941532846715328,
0.3284598540145985, 0.2116715328467153, 0.5985328467153285, 0.5328394160583941,
0.6934233576642336, 0.999992700729927, 0.4525474452554744, 0.43794890510948903,
0.13867883211678833]
[0.7802439024390244, 0.511951219512195, 0.45097560975609763,
0.48756097560975614, 0.503, -0.0002439024390243634, 0.6095121951219512,
0.1948780487804878, 0.18268292682926834, 0.09731707317073172,
0.48756097560975614, 0.4631707317073171, 0.48756097560975614,
0.5241463414634147, 0.5363414634146342, 0.6241463414634145, 0.9997560975609755,
0.39000000000000007, 0.48756097560975614, 0.12170731707317077]
[0.503, 0.503, 0.503, 0.503, 0.503, 0.503, 0.503, 0.503,
-7.142857142859529e-05, 0.503, 0.503, 0.503, 0.9999285714285714, 0.503, 0.503,
0.503, 0.503, 0.503, 0.503, 0.503]
[0.8466986683183649, 0.722821306906163, 0.9625240012387736,
0.4564849798699288, 0.503, 0.39454629916382783, 0.7104335707649427,
0.6577856921647569, 0.5571353360173429, 0.7197243728708579, 0.5184236605760297,
0.6373459275317437, 0.7042397026943327, 0.722821306906163,
-3.0969340353033317e-06, 0.6811985134716632, 0.9999969030659648,
0.45958191390523384, 0.5803623412821307, 0.03839888510374729]
[0.06354893138357705, 0.376822272215973, 0.12260404949381326,
-5.624296962879021e-06, 0.503, 0.01630483689538807, 0.009555680539932507,
0.006743532058492687, 0.02417885264341957, 0.007305961754780652,
0.004493813273340832, 0.9999943757030371, 0.009555680539932507,
0.02249156355455568, 0.04161417322834646, 0.01321147356580427,
0.04611361079865017, 0.007868391451068615, 0.015742407199100108,
0.2800843644544432]
[0.503, 0.503, 0.0, 0.503, 0.503, 0.503, 0.503, 0.503, 0.503, 0.503, 0.503,
0.503, 0.503, 0.503, 0.503, 0.503, 0.503, 0.503, 0.503, 0.503]
[0.503, -0.00020000000000000017, 0.9997999999999999, 0.503, 0.503, 0.503,
0.503, 0.503, 0.503, 0.503, 0.503, 0.503, -0.00020000000000000017, 0.503,
0.503, 0.503, 0.503, 0.503, 0.503, 0.503]
[-8.333333333333341e-05, -8.333333333333341e-05, 0.9999166666666667,
0.08325, 0.503, 0.503, 0.08325, 0.503, 0.503, -8.333333333333341e-05, 0.503,
-8.333333333333341e-05, 0.08325, 0.503, -8.333333333333341e-05, 0.08325,
0.08325, -8.333333333333341e-05, 0.503, -8.333333333333341e-05]
[0.9999868421052631, 0.9999868421052631, 0.5394605263157896,
0.6973552631578948, 0.503, 0.8289342105263158, 0.868407894736842,
0.6578815789473684, 0.7631447368421053, 0.5394605263157896, 0.6841973684210526,
0.05261842105263157, 0.7368289473684211, 0.5131447368421053,
0.8026184210526316, 0.7631447368421053, 0.9210394736842105, 0.7105131578947369,
0.7631447368421053, -1.3157894736840656e-05]
[0.14271428571428574, 0.14271428571428574, 0.14271428571428574,
0.2855714285714286, 0.503, 0.2855714285714286, -0.00014285714285714298,
0.2855714285714286, -0.00014285714285714298, 0.42842857142857144,
0.9998571428571428, 0.503, 0.503, 0.42842857142857144, 0.2855714285714286,
0.14271428571428574, 0.503, 0.2855714285714286, 0.2855714285714286, -0.00014285714285714298]
[0.503, 0.503, 0.9998333333333332, 0.503, 0.503, 0.503, 0.503, 0.503,
0.503, 0.503, 0.503, 0.503, -0.00016666666666666682, -0.00016666666666666682,
0.503, 0.503, 0.503, -0.00016666666666666682, 0.503, 0.503]
[0.05812790697674419, 0.05812790697674419, 0.04650000000000001,
0.23254651162790696, 0.503, 0.13952325581395347, 0.17440697674418604,
0.3720813953488372, 0.27905813953488373, 0.418593023255814, 0.1976627906976744,
0.9999883720930232, 0.18603488372093022, 0.39533720930232563, 0.23254651162790696,
0.27905813953488373, 0.1162674418604651, 0.30231395348837214,
0.24417441860465114, -1.1627906976737741e-05]
[0.2726363636363636, 0.18172727272727274, 0.45445454545454544,
0.8180909090909091, 0.503, 0.8180909090909091, 0.2726363636363636, 0.18172727272727274,
0.3635454545454545, 0.45445454545454544, 0.909, 0.503, 0.999909090909091,
0.909, 0.18172727272727274, 0.09081818181818183, 0.45445454545454544,
0.18172727272727274, 0.45445454545454544, -9.090909090909098e-05]
Точность
у них избыточная поэтому мы её уменьшим и сократим объём передаваемой
информации.
def ur(mx,mn,zn):
if
zn==mx: return 0.999
if
zn==0.0: return 0.503
if
zn==0.001: return 0.501
if
mx-mn==0.0: return 0.0
if
zn-mn==0.0: return 0.0
wz=(zn-mn)/(mx-mn)
return
wz
fr=open("2.txt","rt")
a=fr.readlines()
fr.close()
la=len(a)
d=[]
for s in a:
s=s[:-1]
b=s.split("\t")
lb=len(b)
e=[]
for
c in b:
if
c=="":c="0.001"
e.append(float(c))
d.append(e)
p=[]
r=[]
h=[]
xm=[]
for i in range(lb):
p.append([])
h.append([])
r=[]
for
k in range(la):
if d[k][i]!=0.001:r.append(d[k][i])
p[i].append(d[k][i])
h[i].append(0.502)
if
r!=[]:
xm.append((max(r),min(r)))
else:
xm.append((0.0,0.0))
for i in range(lb):
o=p[i]
mx,mn=xm[i]
for
k in range(la):
ss=(str(ur(mx,mn,o[k]))+"000")[2:5]
h[i][k]=ss
for y in h:
print
y
for i in range(la):
for
k in range(lb):
ss=ss+h[k][i]
ss="1441211008164493625169413"+str(lb)+"4"+str(la)
print ss
Здесь мы представили данные в виде короткой строки которую уже можно отправлять на сервер.
import urllib
def ur(mx,mn,zn):
if
zn==mx: return 0.999
if
zn==0.0: return 0.503
if
zn==0.001: return 0.501
if
mx-mn==0.0: return 0.0
if
zn-mn==0.0: return 0.0
wz=(zn-mn)/(mx-mn)
return
wz
fr=open("5.txt","rt")
a=fr.readlines()
fr.close()
la=len(a)
d=[]
for s in a:
s=s[:-1]
b=s.split("\t")
lb=len(b)
e=[]
for
c in b:
if
c=="":c="0.001"
e.append(float(c))
d.append(e)
p=[]
r=[]
h=[]
xm=[]
for i in range(lb):
p.append([])
h.append([])
r=[]
for
k in range(la):
if d[k][i]!=0.001:r.append(d[k][i])
p[i].append(d[k][i])
h[i].append(0.502)
if
r!=[]:
xm.append((max(r),min(r)))
else:
xm.append((0.0,0.0))
for i in range(lb):
o=p[i]
mx,mn=xm[i]
for
k in range(la):
ss=(str(ur(mx,mn,o[k]))+"000")[2:5]
h[i][k]=ss
ss="1441211008164493625169413"+str(lb)+"4"+str(la)
for i in range(la):
for
k in range(lb):
ss=ss+h[k][i]
s1="http://the-k-ai.com/cgi-bin/222.py?t1="+ss
u = urllib.urlopen(s1)
s=str(u.read())
print (s)
После
этого мы получаем 2 ряда чисел
0 1 1
1 2 1
2 0 1
3 1 0
4 1 1
5 3 2
6 3 1
7 2 3
8 0 1
9 1 2
10 2 2
11 1 3
12 1 0
#
0 1 2
1 2 2
2 2 1
3 1 2
4 1 5
5 4 1
6 2 1
7 0 3
8 0 0
9 1 0
10 2 0
11 2 1
12 0 0
Номера
от 0 до 12 это номера колонок. Каждая из них описывает одно из свойство исследуемого
объекта. Почему нумерация от 0? Ну это чтоб вы привыкали к программированию. А
далее просто. Цифры первого ряда показывают Какое свойство является ведущим.
Чем больше первое число тем больше шансов что оно рулит остальными. То есть при
его росте остальные будут расти. При убывании убывать. Это может быть например
цена от производителя или основного поставщика. А если большое число во второй
колонке? Ну это обратные зависимости. То есть если эта величина растет
остальные падают и наоборот. И кстати ничего странного нет в том что оба числа
могут быть большими. Некоторые товары например могут оказывать как прямое так и
обратное действие. Например когда один товар замещает другой. Второй ряд чисел
это свойства стабилизации и дестабилизации. Побочные эффекты. То есть
обеспечивает надёжность или непредсказуемость. Первая колонка надежность вторая
непредсказуемость. То есть при росте этого параметра в первой колонке можно
быть уверенным в своих действиях с иследуемым объектом если первое число
большое. Если большое второе число и этот параметр начинает расти то фактор
риска увеличивается.