Linq、Python或Sql需要TSS计算的建议 我用Qt.制作C++软件教程。
我需要使用多变量聚类分析的输出在一个表上进行许多计算: Var1,Var2,Var3,…VarN,k2,k3,k4…kn 其中Var1到n是研究变量, k2~kn为团簇分类 表示例: Var1,Var2,Var3,Var4,k2,k3,k4,k5,k6 3464.572992.332688.33504.79,2,3,2,3,2 2895.323365.352824.35504.86,1,2,3,2,6 2249.323300.192382.19504.92,2,1,4,3,4 3417.813311.042426.04504.97,1,2,2,5,2 3329.663497.142467.14505.03,2,2,1,4,2 3087.853653.532296.53505.09,2,1,2,3,4 < > C++存储将定义如下: QList表Linq、Python或Sql需要TSS计算的建议 我用Qt.制作C++软件教程。,python,c++,linq,qt,pandas,Python,C++,Linq,Qt,Pandas,我需要使用多变量聚类分析的输出在一个表上进行许多计算: Var1,Var2,Var3,…VarN,k2,k3,k4…kn 其中Var1到n是研究变量, k2~kn为团簇分类 表示例: Var1,Var2,Var3,Var4,k2,k3,k4,k5,k6 3464.572992.332688.33504.79,2,3,2,3,2 2895.323365.352824.35504.86,1,2,3,2,6 2249.323300.192382.19504.92,2,1,4,3,4 3417.8133
Struct record
{
QList<double> vars;
QList<int> cluster;
}
Struct记录
{
QList变量;
QList集群;
}
我需要计算总数,组内和组间的平方和
因此,通过示例计算Var1和k2的WSS需要:
在伪代码中:
获取每个组的大小:
计数(*)分组依据(k2),
计算各组的平均值:
将(Var1)与(k2)相加,然后将每个值除以之前的计数。
计算差异:
pow((xgroup1-xmeangroup1),2)
还有许多其他的行动
哪些替代方案将具有更简单和强大的编目功能:
1) 动态创建MySQL表并执行SQL操作
2) 使用LINQ,但如果QT具有QTLinq类,则不使用
3) 尝试将LINQ方法等效为Python,
(QT和Python之间的交互如何,我看到Qgis有许多用Python编写的插件)
在我的应用程序中还需要做很多其他的微积分
我希望澄清。
问候过了一段时间,我对自己做出了回应, 这个解决方案是用Python和Pandas编写的 此链接非常有用: 在以下站点上遍历组: 还有“Python for Data Analysis,West McKinney”一书,第255页 此视频演示如何进行计算: 方差分析2:计算SSW和SSB(内部和之间的总平方和)| [守则]
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]
我相信这可以通过聚合(lambdas func)或应用来实现。
但我不知道该怎么做
(如果有人知道,请在这里发布)
问候