
✨ 长期致力于数据分类、无时序性数据、时序性数据、多样本图像数据、单样本语音数据、信息距离、动态时间规整算法研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1基于信息距离理论的细胞图像分类算法将干细胞分化图像分类转化为信息距离度量问题。定义两个图像集合之间的信息距离为标准化信息距离通过压缩长度近似计算NID(x,y) (C(xy) - min(C(x),C(y))) / max(C(x),C(y))其中C(x)为图像经过无损压缩后的字节长度。针对多样本图像每类有多张图采用最近邻分类器测试图像与各类所有训练图像的NID取平均值选择最小平均值对应的类别。在包含200张细胞图像分两类分化与未分化的数据集上分类准确率达到91.5%而传统特征提取方法细胞计数、面积为85.2%。该方法无需分割细胞核避免了荧光染色对细胞的损伤。计算一张图像的平均NID时间约0.8秒适合高通量筛选。2合并权重动态时间规整用于孤立词语音识别针对单样本语音每类只有一个模板提出MWDTW算法。传统DTW计算两条语音序列的累积距离但未考虑不同时间点的权重差异。MWDTW给匹配点对赋予权重权重与时间索引差成反比即较早的时间点权重较高惩罚后期的偏移。同时将多条参考模板合并若有多个参考成一条融合模板。在TI-Digits数据集上0-9数字发音每个数字只有一个训练样本MWDTW识别率达到96.7%高于DTW的93.2%。对于带噪语音信噪比5dBMWDTW仍能达到82.4%而DTW降至70.1%。算法复杂度与DTW相同O(L^2)但可以并行化加速。3支持向量机与DTW融合的噪音环境语音分类提出SVM-MDTW框架使用DTW距离作为核函数。具体地定义核函数K(x,y)exp(-γ * DTW(x,y)^2)然后训练SVM分类器。这样既利用了DTW的时间对齐能力又利用了SVM的最大间隔分类优势。在Aurora2噪声语音数据集上测试单样本条件下的数字识别SVM-MDTW平均准确率为89.3%比单独的MWDTW高4.2个百分点。对于跨说话人训练为男性测试为女性准确率下降约5%但仍优于其他方法。模型训练时采用交叉验证优化γ和惩罚因子C最优γ0.05C10。在嵌入式设备上实现时预先计算训练样本间的DTW距离矩阵预测时仅需计算测试样本与支持向量的DTW距离计算量降低70%。import numpy as np import zlib from scipy.spatial.distance import cdist from dtaidistance import dtw def normalized_information_distance(x_bytes, y_bytes): cx len(zlib.compress(x_bytes, level9)) cy len(zlib.compress(y_bytes, level9)) cxy len(zlib.compress(x_bytesy_bytes, level9)) nid (cxy - min(cx, cy)) / max(cx, cy) if max(cx, cy)0 else 0 return nid def mwdtw_distance(s1, s2, weight_funclinear): # s1, s2 are sequences (list of feature vectors) D dtw.distance_matrix(s1, s2, use_cTrue) n, m D.shape acc np.zeros((n1, m1)) acc[0,:] np.inf acc[:,0] np.inf acc[0,0] 0 for i in range(1, n1): for j in range(1, m1): w 1.0 - abs(i-j)/max(n,m) if weight_funclinear else 1.0 cost D[i-1,j-1] * w acc[i,j] cost min(acc[i-1,j], acc[i,j-1], acc[i-1,j-1]) return acc[n,m] class SVM_DTW: def __init__(self, gamma0.05, C10): self.gamma gamma self.C C self.support_vectors None self.sv_labels None self.alphas None def kernel(self, X, Y): # compute DTW kernel matrix K np.zeros((len(X), len(Y))) for i, xi in enumerate(X): for j, yj in enumerate(Y): dist dtw.distance(xi, yj) # using dtaidistance K[i,j] np.exp(-self.gamma * dist**2) return K def fit(self, X, y): from sklearn.svm import SVC svm SVC(kernelself.kernel, Cself.C) svm.fit(X, y) self.support_vectors X[svm.support_] self.sv_labels y[svm.support_] self.alphas svm.dual_coef_ def predict(self, X): preds [] for x in X: k np.exp(-self.gamma * np.array([dtw.distance(x, sv)**2 for sv in self.support_vectors])) score np.sum(self.alphas * k) preds.append(1 if score0 else -1) return np.array(preds) if __name____main__: img1 b\x00\x01\x02*1000 img2 b\x00\x01\x03*1000 nid_val normalized_information_distance(img1, img2) print(NID:, nid_val) ,