Найти - Пользователи
Полная версия: Есть результаты экспериментов 1 млн строк, величина (время падения предмета) зависит от веса, объема, среды. Найти средние величины
Начало » Центр помощи » Есть результаты экспериментов 1 млн строк, величина (время падения предмета) зависит от веса, объема, среды. Найти средние величины
1 2
py.user.next
PEHDOM
поэтому Биг Датой тут и не пахнет
Есть “Big data” и есть “Data mining”, вот не надо их путать.
Big data - это просто большие данные, имеющие свои свойства, типа объём, скорость (обработки, прироста), многообразие.
Data mining - получение из существующих данных через их анализ новых данных.
И эти два понятия часто связаны между собой, из-за чего их путают.

Data mining здесь было бы, например, если по этим безымянным значениям нужно было найти, где из них куб, где тетраэдр и так далее.

wiki. big data
wiki. data mining


tags: bigdata
uf4JaiD5
Aleksandr_Ph
Да, верно!
Верно!
Тогда я бы просто посчитал “вручную”:

 #
from numpy import zeros
from random import random
def coord2index(coordinates, bounds):
	index = []
	for x, b in zip(coordinates, bounds):
		if x<b[0] or x>b[-1]:
			print('Error. Out of bounds.',x,b)
			return None
			
		for i,value in enumerate(b[1:]):
			if value>=x:
				index.append(i)
				break
	
	return tuple(index)
bounds = [[0,1,2], [0,1,2,3]]
data = []
for i in range(10**3):
	y = random()*bounds[0][-1]
	x = random()*bounds[1][-1]
	data.append((y, x, x+y))
shape = tuple(len(b)-1  for b in bounds)
summ = zeros(shape, float)
num  = zeros(shape, int)
mean = zeros(shape, float)
for d in data:
	x = d[:-1]
	v = d[-1]
	index_tuple = coord2index(x,bounds)
	
	summ[index_tuple] += v
	num[index_tuple] += 1
mean.flat = [s/n for s,n in zip(summ.flat, num.flat)]
print(mean)

bounds - границы интервалов для каждой из осей. тут две оси.
data - данные для куба. тут из random, а должны читаться из файла.
summ, num – многомерные массивы (numpy.ndarray) с суммой значений функции попавших в интервал точек и их количеством. заполняются нулями при создании. всегда можно добавить дополнительные точки.
shape описывает размерность этих массивов.
mean – само среднее, сумма/кол-во. т.е. “куб”. после добавления точек пересчитывается:
mean.flat = ..
Не уверен, что так можно делать (что не начнёт вдруг путать последовательность), но вроде работает.
 num[index_tuple]
# вместо ndarray[i][j] можно писать ndarray[(i,j)], т.е. ndarray[tuple]

Дальше берём сколько угодно значений “из куба”:
 #
y =1.1, x= 1.2
index_tuple = coord2index([y,x], bounds)
v = mean[index_tuple]
Aleksandr_Ph
PEHDOM
Спасибо!

Куб будет ещё меньше, порядка 5х5х5, поэтому для каждого среднего будет больше данных, для самых часто встречающихся сочетаний тысяч по 30-50.

На первом этапе данные будут в Excel, потом подключение к базе данных.
Мне бы первый этап красиво сделать.

В Excel делать вручную? Разве что только по объёму подсчитать, а если подключить хотя бы ещё одну размерность - уже и долго, и удобства и наглядности нет.

Про Биг Дату спрашивал лишь с той идеей, что думается, что там это должно быть рядовая задача и решения должны быть типовыми, и уже описанными. То что считать это Биг Датой по объёму данных нельзя - это да, но по сложности статистической обработки и получения расчетных таблиц (кубов) - “почему бы и да”.

Подскажите, пожалуйста, форум бигдатников нормальный, где смогут ответить, сам пока не нашёл.
Aleksandr_Ph
А что если натянуть сову на глобус натянуть задачу на скоринговую модель?
“Клиент” - предмет, параметры клиента - объём, вес, “вероятность отдаст/не отдаст” - это моё время? Получить скоринговую модель, а потом по ней уже и получать предполагаемые времена?

Должно же сработать? Если да, то нет ли у кого-нибудь описания решения простого и понятного ?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB