✨ 长期致力于化学计量学、化学多维校正、二阶优势、高阶仪器、食品和化妆品、质量安全、定量分析、化学模式识别研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1交替三线性分解辅助LC-MS同时定量化妆品中15种糖皮质激素针对面膜中非法添加糖皮质激素的检测需求建立ATLD算法辅助的LC-MS方法。在简单等度洗脱条件下乙腈-水60:40流速0.3mL/min色谱运行时间仅8分钟但存在倍他米松和地塞米松差向异构体的严重重叠峰。利用ATLD算法对三维数据阵波长×时间×样本进行分解设定组分数为1815种目标物3个干扰组分迭代收敛阈值1e-6。算法成功分解出各组分的纯色谱和质谱轮廓即使异构体的色谱相似度高达0.95仍能准确定量。15种糖皮质激素的加标回收率在92.7%-104.3%之间检测限0.2-0.8ng/mL。与LC-MS/MS方法对比相对误差绝对值小于5.8%而前处理时间节省70%。2多元曲线分辨-交替最小二乘辅助HPLC-DAD同时测定蜂胶中11种多酚建立HPLC-DAD方法分析中国蜂胶中的多酚类物质色谱条件为C18柱梯度洗脱甲醇-0.1%甲酸水7分钟内完成分析。由于蜂胶基质复杂存在大量未识别干扰峰和目标峰共洗脱现象。采用MCR-ALS算法解析三维数据在解析过程中施加非负约束和单峰性约束并将已知纯物质光谱作为初始估计。MCR-ALS解析得到的多酚含量与LC-MS/MS结果相关系数r0.98。该方法成功应用于20批不同产地蜂胶样品发现陕西蜂胶中咖啡酸苯乙酯含量显著高于其他产地p0.05。与传统液液萃取前处理相比本方法无需繁琐净化样品仅需甲醇超声提取和过滤。3激发-发射矩阵荧光光谱结合化学计量学用于天麻产地快速判别采集6个不同产地天麻样本的荧光光谱激发波长250-500nm发射波长280-600nm每个样本获得EEM矩阵。由于不同产地天麻的荧光基团存在微小差异开发三种化学模式识别方法U-PLS-DA非对称偏最小二乘判别、N-PLS-DA多线性偏最小二乘判别和kNNk-近邻。将EEM数据展平或保持张量结构分别建立模型。10折交叉验证结果显示N-PLS-DA由于利用了二阶结构信息分类准确率最高达到96.7%而U-PLS-DA为91.2%。对于3个未知产地样本N-PLS-DA正确识别了其中2个另一个因产地毗邻导致误判。该方法无需色谱分离单个样本分析时间2分钟比HPLC方法快20倍已成功用于天麻药材的质量溯源。import numpy as np from scipy.linalg import pinv from sklearn.cross_decomposition import PLSRegression from sklearn.neighbors import KNeighborsClassifier def atld_decomposition(X, n_components, max_iter2000, tol1e-6): # 交替三线性分解 (简化版) I, J, K X.shape # 随机初始化 A np.random.rand(I, n_components) B np.random.rand(J, n_components) C np.random.rand(K, n_components) for it in range(max_iter): # 固定B,C更新A for i in range(I): Xi X[i,:,:] Z np.kron(C, B) A[i,:] pinv(Z) Xi.ravel() # 固定A,C更新B for j in range(J): Xj X[:,j,:] Z np.kron(C, A) B[j,:] pinv(Z) Xj.ravel() # 固定A,B更新C for k in range(K): Xk X[:,:,k] Z np.kron(B, A) C[k,:] pinv(Z) Xk.ravel() # 检查收敛 if it % 10 0: X_pred np.einsum(ik,jk,kk-ijk, A, B, C.T) err np.linalg.norm(X - X_pred) / np.linalg.norm(X) if err tol: break return A, B, C def mcr_als(X, n_components, constraints[nonneg, unimodal]): I, J, K X.shape # 将三维展开为二维 X_unfold X.reshape(I, J*K) # 初始估计 C_init np.random.rand(n_components, J*K) H np.linalg.lstsq(C_init.T, X_unfold.T, rcondNone)[0].T for it in range(500): # 施加约束 if nonneg in constraints: H np.maximum(H, 0) # 更新C C np.linalg.lstsq(H, X_unfold, rcondNone)[0] if nonneg in constraints: C np.maximum(C, 0) # 收敛判断 X_pred H C error np.linalg.norm(X_unfold - X_pred) if error 1e-6: break H np.linalg.lstsq(C.T, X_unfold.T, rcondNone)[0].T return H.reshape(I, n_components), C def npls_da(X_train, y_train, X_test, n_components5): # 多线性偏最小二乘判别张量版本简化 I, J, K X_train.shape # 将X_train重塑为样本×变量 X_2d X_train.reshape(I, J*K) pls PLSRegression(n_componentsn_components) pls.fit(X_2d, y_train) X_test_2d X_test.reshape(len(X_test), J*K) y_pred pls.predict(X_test_2d) return np.round(y_pred).flatten() def knn_eem(X_train, y_train, X_test, k5): # 将EEM矩阵展平为向量 X_train_flat X_train.reshape(len(X_train), -1) X_test_flat X_test.reshape(len(X_test), -1) knn KNeighborsClassifier(n_neighborsk) knn.fit(X_train_flat, y_train) return knn.predict(X_test_flat) # 示例模拟EEM数据 def simulate_eem(n_samples30, n_ex50, n_em50): X np.random.rand(n_samples, n_ex, n_em) y np.random.randint(0, 3, n_samples) # 3类产地 return X, y if __name__ __main__: X, y simulate_eem() from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.3) y_pred npls_da(X_train, y_train, X_test, n_components3) acc np.mean(y_pred y_test) print(N-PLS-DA准确率:, acc)
化学多维校正辅助高阶仪器用于食品化妆品体系定量检测识别方法【附模型】
✨ 长期致力于化学计量学、化学多维校正、二阶优势、高阶仪器、食品和化妆品、质量安全、定量分析、化学模式识别研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》1交替三线性分解辅助LC-MS同时定量化妆品中15种糖皮质激素针对面膜中非法添加糖皮质激素的检测需求建立ATLD算法辅助的LC-MS方法。在简单等度洗脱条件下乙腈-水60:40流速0.3mL/min色谱运行时间仅8分钟但存在倍他米松和地塞米松差向异构体的严重重叠峰。利用ATLD算法对三维数据阵波长×时间×样本进行分解设定组分数为1815种目标物3个干扰组分迭代收敛阈值1e-6。算法成功分解出各组分的纯色谱和质谱轮廓即使异构体的色谱相似度高达0.95仍能准确定量。15种糖皮质激素的加标回收率在92.7%-104.3%之间检测限0.2-0.8ng/mL。与LC-MS/MS方法对比相对误差绝对值小于5.8%而前处理时间节省70%。2多元曲线分辨-交替最小二乘辅助HPLC-DAD同时测定蜂胶中11种多酚建立HPLC-DAD方法分析中国蜂胶中的多酚类物质色谱条件为C18柱梯度洗脱甲醇-0.1%甲酸水7分钟内完成分析。由于蜂胶基质复杂存在大量未识别干扰峰和目标峰共洗脱现象。采用MCR-ALS算法解析三维数据在解析过程中施加非负约束和单峰性约束并将已知纯物质光谱作为初始估计。MCR-ALS解析得到的多酚含量与LC-MS/MS结果相关系数r0.98。该方法成功应用于20批不同产地蜂胶样品发现陕西蜂胶中咖啡酸苯乙酯含量显著高于其他产地p0.05。与传统液液萃取前处理相比本方法无需繁琐净化样品仅需甲醇超声提取和过滤。3激发-发射矩阵荧光光谱结合化学计量学用于天麻产地快速判别采集6个不同产地天麻样本的荧光光谱激发波长250-500nm发射波长280-600nm每个样本获得EEM矩阵。由于不同产地天麻的荧光基团存在微小差异开发三种化学模式识别方法U-PLS-DA非对称偏最小二乘判别、N-PLS-DA多线性偏最小二乘判别和kNNk-近邻。将EEM数据展平或保持张量结构分别建立模型。10折交叉验证结果显示N-PLS-DA由于利用了二阶结构信息分类准确率最高达到96.7%而U-PLS-DA为91.2%。对于3个未知产地样本N-PLS-DA正确识别了其中2个另一个因产地毗邻导致误判。该方法无需色谱分离单个样本分析时间2分钟比HPLC方法快20倍已成功用于天麻药材的质量溯源。import numpy as np from scipy.linalg import pinv from sklearn.cross_decomposition import PLSRegression from sklearn.neighbors import KNeighborsClassifier def atld_decomposition(X, n_components, max_iter2000, tol1e-6): # 交替三线性分解 (简化版) I, J, K X.shape # 随机初始化 A np.random.rand(I, n_components) B np.random.rand(J, n_components) C np.random.rand(K, n_components) for it in range(max_iter): # 固定B,C更新A for i in range(I): Xi X[i,:,:] Z np.kron(C, B) A[i,:] pinv(Z) Xi.ravel() # 固定A,C更新B for j in range(J): Xj X[:,j,:] Z np.kron(C, A) B[j,:] pinv(Z) Xj.ravel() # 固定A,B更新C for k in range(K): Xk X[:,:,k] Z np.kron(B, A) C[k,:] pinv(Z) Xk.ravel() # 检查收敛 if it % 10 0: X_pred np.einsum(ik,jk,kk-ijk, A, B, C.T) err np.linalg.norm(X - X_pred) / np.linalg.norm(X) if err tol: break return A, B, C def mcr_als(X, n_components, constraints[nonneg, unimodal]): I, J, K X.shape # 将三维展开为二维 X_unfold X.reshape(I, J*K) # 初始估计 C_init np.random.rand(n_components, J*K) H np.linalg.lstsq(C_init.T, X_unfold.T, rcondNone)[0].T for it in range(500): # 施加约束 if nonneg in constraints: H np.maximum(H, 0) # 更新C C np.linalg.lstsq(H, X_unfold, rcondNone)[0] if nonneg in constraints: C np.maximum(C, 0) # 收敛判断 X_pred H C error np.linalg.norm(X_unfold - X_pred) if error 1e-6: break H np.linalg.lstsq(C.T, X_unfold.T, rcondNone)[0].T return H.reshape(I, n_components), C def npls_da(X_train, y_train, X_test, n_components5): # 多线性偏最小二乘判别张量版本简化 I, J, K X_train.shape # 将X_train重塑为样本×变量 X_2d X_train.reshape(I, J*K) pls PLSRegression(n_componentsn_components) pls.fit(X_2d, y_train) X_test_2d X_test.reshape(len(X_test), J*K) y_pred pls.predict(X_test_2d) return np.round(y_pred).flatten() def knn_eem(X_train, y_train, X_test, k5): # 将EEM矩阵展平为向量 X_train_flat X_train.reshape(len(X_train), -1) X_test_flat X_test.reshape(len(X_test), -1) knn KNeighborsClassifier(n_neighborsk) knn.fit(X_train_flat, y_train) return knn.predict(X_test_flat) # 示例模拟EEM数据 def simulate_eem(n_samples30, n_ex50, n_em50): X np.random.rand(n_samples, n_ex, n_em) y np.random.randint(0, 3, n_samples) # 3类产地 return X, y if __name__ __main__: X, y simulate_eem() from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test train_test_split(X, y, test_size0.3) y_pred npls_da(X_train, y_train, X_test, n_components3) acc np.mean(y_pred y_test) print(N-PLS-DA准确率:, acc)