Linq, Python или Sql, нужен совет для расчета TSS WSS BSS

Привет я делаю стандартную мягкую в C ++ с QT.

Мне нужно сделать много расчетов по таблице с выводом многомерного кластерного анализа:
Var1, Var2, Var3, .. VarN, k2, k3, k4 … kn
где Var1-n — переменные обучения,
и k2, чтобы узнать кластеризацию кластера.

Пример таблицы:
Var1, Переменная2, Var3, var4, k2, k3, k4, k5, k6

3464.57,2992.33,2688.33,504.79,2,3,2,3,2

2895.32,3365.35,2824.35,504.86,1,2,3,2,6

2249.32,3300.19,2382.19,504.92,2,1,4,3,4

3417.81,3311.04,2426.04,504.97,1,2,2,5,2

3329.66,3497.14,2467.14,505.03,2,2,1,4,2

3087.85,3653.53,2296.53,505.09,2,1,2,3,4

Хранилище c ++ будет определено так:
Таблица QList;

Struct record
{
QList<double>    vars;
QList<int>   cluster;
}

Мне нужно рассчитать общую сумму, внутри группы и между квадратом суммы группы.

https://en.wikipedia.org/wiki/F-test

Итак, для примера для расчета WSS для Var1 и k2 необходимо:
в псевдокоде:
получить размер каждой группы:
считать (*) группу по (k2),
рассчитать среднее значение для каждой группы:
суммируйте (Var1) группу по (k2), а затем разделите каждую на предыдущее количество.
вычислим разницу:
POW ((xgroup1-xmeangroup1), 2)
и многие другие операции ….

Какие альтернативы будут иметь более простую и мощную кодификацию:

1) Создайте таблицу MySQL на лету и выполните операции SQL.

2) Используйте LINQ, но я не знаю, есть ли у QT класс QTLinq.

3) Попробуйте сделать через Python эквиваленты методов LINQ,
(как происходит взаимодействие между QT и Python, я вижу, что Qgis имеет много плагинов, написанных на Python)

Также в моем приложении нужно много других исчислений.

Я надеюсь, что будет ясно.
Привет

0

Решение

Через некоторое время я отвечаю самому себе,
решение было сделано в Python с помощью Pandas.

Эта ссылка очень полезна:
Перебирая группы по: http://pandas.pydata.org/pandas-docs/stable/groupby.html
Также книга «Питон для анализа данных, Вест Маккинни», страница 255

Это видео показывает, как сделать расчет:
ANOVA 2: Расчет SSW и SSB (общая сумма квадратов внутри и между) | Ханская академия
https://www.youtube.com/watch?v=j9ZPMlVHJVs

[код]
def getDFrameFixed2D():
y = np.array([3,2,1,5,3,4,5,6,7])
k = np.array([1,1,1,2,2,2,3,3,3])
clusters = pd.DataFrame([[a,b] for a,b in zip(y,k)],columns=['Var1','K2'])
# print (clusters.head()) print("shape(0):",clusters.shape[0])
return clusters

X2D=getDFrameFixed2D()
MainMean = X2D['Var1'].mean(0)
print("Main mean:",MainMean)

grouped = X2D['Var1'].groupby(X2D['K2'])

print("-----Iterating Over Groups-------------")
Wss=0
Bss=0
for name, group in grouped:
#print(type(name))
#print(type(group))
print("Group key:",name)
groupmean = group.mean(0)
groupss = sum((group-groupmean)**2)
print("  groupmean:",groupmean)
print("  groupss:",groupss)
Wss+= groupss
Bss+= ((groupmean - MainMean)**2)*len(group)

print("----------------------------------")
print("Wss:",Wss)
print("Bss:",Bss)
print("T=B+W:",Bss+Wss)

Tss = np.sum((X-X.mean(0))**2)
print("Tss:",Tss)
print("----------------------------------")
[/code]

Я уверен, что это можно сделать с агрегатами (лямбда-функционал) или применить.
Но я не понимаю, как
(если кто-то знает, пожалуйста, напишите здесь)

Привет

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]