当前位置: 首页 > wzjs >正文

跨境电商建站工具政务网站的建设方案

跨境电商建站工具,政务网站的建设方案,网站功能模块结构图,百度推广按点击收费目录 矩阵降维案例 训练集和测试集的SVD降维 作业 与线性代数的关系: 1.正交矩阵:列向量正交且单位化,在SVD中用于旋转和反射(U和V) 2.特征值和特征向量:描述矩阵在某些方向上的缩放特性,是计…

目录

矩阵降维案例

训练集和测试集的SVD降维

作业


与线性代数的关系:
1.正交矩阵:列向量正交且单位化,在SVD中用于旋转和反射(U和V)
2.特征值和特征向量:描述矩阵在某些方向上的缩放特性,是计算奇异值的基础
3.实对称矩阵:具有实特征值和正交特征向量,SVD通过构造A^TA和AA^T利用其性质
4.矩阵分解:将复杂矩阵分解为简单矩阵乘积,是降维和数据分析的核心工具

奇异值分解(SVD)的输入和输出:
        - 输入:一个任意的矩阵A,尺寸为m*n(其中m是行,n是列,不必是方阵)。

奇异值分解(SVD)得到三个矩阵U、Σ和V^T各有其特定的意义和用途,下面简要说明它们的作用:
1. U(左奇异向量矩阵):
        - 是一个m*m的正交矩阵,列向量是矩阵AA^T的特征向量。
        - 作用:表示原始矩阵A在行空间(样本空间)中的主方向或基向量。简单来说,U的列向量描述了数据在行维度上的“模式”或“结构”。
        - 应用:在降维中,U的前几列可以用来投影数据到低维空间,保留主要信息(如在图像处理中提取主要特征)

2.Σ(奇异值矩阵):
        - 是一个m*n的对角矩阵,对角线上的值是奇异值,按降序排列,非负。
        - 作用:奇异值表示原始矩阵A在每个主方向上的“重要性”或“能量”。较大的奇异值对应更重要的特征,较小的奇异值对应噪声或次要信息。
        - 应用:通过选择前k个较大的奇异值,可以实现降维,丢弃不重要的信息(如数据压缩,去噪)。

3.V^T(右奇异向量矩阵的转置):

        - 是V的转置,V是一个n*n的正交矩阵,列向量是矩阵A^TA的特征向量。
        - 作用:表示原始矩阵A在列空间(特征空间)中的主方向或基向量。简单来说,V的列向量描述了数据在列维度上的“模式”或“结构”。
        - 应用:类似U,V在前几列可以用来投影数据到低维空间,提取主要特征。

整体作用:
        - 结合起来,A = UΣV^T意味着原始矩阵A可以被分解为一系列主方向(U和V)和对应的权重(Σ)的组合。这种分解揭示了数据的内在结构。
        - 主要应用:
                - 降维:通过保留前k个奇异值及其对应的U和V的列向量,可以近似重建A,减少数据维度(如 PCA 的基础)。
                - 数据压缩:如图像压缩,丢弃小的奇异值以减少存储空间。
                - 去噪:小的奇异值往往对应噪声,丢弃它们可以提高数据质量。
                - 推荐系统:如矩阵分解,用于预测用户评分矩阵中的缺失值。

矩阵降维案例

import numpy as np# 创建一个矩阵 A (5x3)
A = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9],[10, 11, 12],[13, 14, 15]])
print("原始矩阵 A:")
print(A)# 进行 SVD 分解
U, sigma, Vt = np.linalg.svd(A, full_matrices=False)    
print("\n奇异值 sigma:")
print(sigma)# 保留前 k=1 个奇异值进行降维
k = 1
U_k = U[:, :k]  # 取 U 的前 k 列,因为要保持行数不变
sigma_k = sigma[:k]  # 取前 k 个奇异值
Vt_k = Vt[:k, :]  # 取 Vt 的前 k 行,因为要保持列数不变# 近似重构矩阵 A,常用于信号or图像筛除噪声
A_approx = U_k @ np.diag(sigma_k) @ Vt_k    
print("\n保留前", k, "个奇异值后的近似矩阵 A_approx:")
print(A_approx)# 计算近似误差
error = np.linalg.norm(A - A_approx, 'fro') / np.linalg.norm(A, 'fro')       
print("\n近似误差 (Frobenius 范数相对误差):", error)
原始矩阵 A:
[[ 1  2  3][ 4  5  6][ 7  8  9][10 11 12][13 14 15]]奇异值 sigma:
[3.51826483e+01 1.47690770e+00 9.86023090e-16]保留前 1 个奇异值后的近似矩阵 A_approx:
[[ 1.85152908  2.05208851  2.25264793][ 4.5411984   5.03310541  5.52501242][ 7.23086771  8.01412231  8.7973769 ][ 9.92053702 10.99513921 12.06974139][12.61020633 13.9761561  15.34210588]]近似误差 (Frobenius 范数相对误差): 0.04194136031471535

训练集和测试集的SVD降维


import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score# 设置随机种子以便结果可重复
np.random.seed(42)# 模拟数据:1000 个样本,50 个特征
n_samples = 1000
n_features = 50
X = np.random.randn(n_samples, n_features) * 10  # 随机生成特征数据
y = (X[:, 0] + X[:, 1] > 0).astype(int)  # 模拟二分类标签# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
print(f"训练集形状: {X_train.shape}")
print(f"测试集形状: {X_test.shape}")# 对训练集进行 SVD 分解
U_train, sigma_train, Vt_train = np.linalg.svd(X_train, full_matrices=False)
print(f"Vt_train 矩阵形状: {Vt_train.shape}")# 选择保留的奇异值数量 k
k = 10
Vt_k = Vt_train[:k, :]  # 保留前 k 行,形状为 (k, 50)
print(f"保留 k={k} 后的 Vt_k 矩阵形状: {Vt_k.shape}")# 降维训练集:X_train_reduced = X_train @ Vt_k.T
X_train_reduced = X_train @ Vt_k.T
print(f"降维后训练集形状: {X_train_reduced.shape}")# 使用相同的 Vt_k 对测试集进行降维:X_test_reduced = X_test @ Vt_k.T
X_test_reduced = X_test @ Vt_k.T
print(f"降维后测试集形状: {X_test_reduced.shape}")# 训练模型(以逻辑回归为例)
model = LogisticRegression(random_state=42)
model.fit(X_train_reduced, y_train)# 预测并评估
y_pred = model.predict(X_test_reduced)
accuracy = accuracy_score(y_test, y_pred)
print(f"测试集准确率: {accuracy}")# 计算训练集的近似误差(可选,仅用于评估降维效果)
X_train_approx = U_train[:, :k] @ np.diag(sigma_train[:k]) @ Vt_k
error = np.linalg.norm(X_train - X_train_approx, 'fro') / np.linalg.norm(X_train, 'fro')
print(f"训练集近似误差 (Frobenius 范数相对误差): {error}")

训练集形状: (800, 50)

测试集形状: (200, 50)

Vt_train 矩阵形状: (50, 50)

保留 k=10 后的 Vt_k 矩阵形状: (10, 50)

降维后训练集形状: (800, 10)

降维后测试集形状: (200, 10)

测试集准确率: 0.595

训练集近似误差 (Frobenius 范数相对误差): 0.852479929511559

注意事项:
1.标准化数据:在进行SVD之前,通常需要对数据进行标准化(均值为0,方差为1),以避免某些特征的量纲差异对降维结果的影响,可以使用sklearn.preprocessing.StandardScaler。

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaler = scaler.fit_transform(X_train)
X_test_scaler = scaler.transform(X_test)

注意:scaler 必须在训练集上fit,然后对测试集只用transform,以避免数据泄漏。 

2.选择合适的k:可以通过累计方差贡献率(explained variance ratio)选择k,通常选择解释90%-95%方差的k值。代码中可以计算:

explain_variance_ratio = np.cumsum(sigma_train**2)/np.sum(sigma_train**2)
print(f'前{k}个奇异值的累积方差贡献率:{explain_variance_ratio[k-1]}')

3.使用sklearn的TruncatedSVD:sklearn提供了TruncatedSVD类,专门用于高效降维,尤其适合大规模数据。它直接计算前k个奇异值和向量,避免完整SVD的计算开销。

from sklearn.decomposition import TruncatedSVD
svd = TruncatedSVD(n_components=k, random_state=42)
X_train_reduced = svd.fit_transform(X_train)
X_test_reduced = svd.transform(X_test)
print(f"累计方差贡献率:{sum(svd.explained_variance_ratio_)}")

作业

试利用svd来处理心脏病预测,看下精度变化


随机森林 分类报告:precision    recall  f1-score   support0       0.83      0.83      0.83        291       0.84      0.84      0.84        32accuracy                           0.84        61macro avg       0.84      0.84      0.84        61
weighted avg       0.84      0.84      0.84        61随机森林 混淆矩阵:
[[24  5][ 5 27]]
随机森林 模型评估指标:
准确率: 0.8361
精确率: 0.8438
召回率: 0.8438
F1 值: 0.8438
import numpy as np
from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import StandardScalerscaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)# 对训练集进行SVD分解
U_train, sigma_train, Vt_train = np.linalg.svd(X_train_scaled, full_matrices=False)
print(f"Vt_train 矩阵形状: {Vt_train.shape}")# 选择合适的k值
explained_variance_ratio = np.cumsum(sigma_train**2) / np.sum(sigma_train**2)
k = np.argmax(explained_variance_ratio >= 0.90) + 1  # 选择累计解释方差大于90%的k值
print(f"选择的k值: {k}")
print(f'k为{k}时累计方差贡献率为:{explained_variance_ratio[k-1]}')# 取前k个特征向量
Vt_k = Vt_train[:k, :] # 取前k个特征向量
print(f"保留k={k}个特征向量后的Vt矩阵形状为:Vt_k.shape")# 降维训练集
X_train_reduced = X_train_scaled @ Vt_k.T
print("降维后的训练集形状为:", X_train_reduced.shape)# 降维测试集
X_test_reduced = X_test_scaled @ Vt_k.T
print("降维后的测试集形状为:", X_test_reduced.shape)# 训练模型(以随机森林为例)
rf_model = RandomForestClassifier(random_state=42)
rf_model.fit(X_train_reduced, y_train)
rf_pred = rf_model.predict(X_test_reduced)# 计算准确率
rf_accuracy = accuracy_score(y_test, rf_pred)
print(f"随机森林模型在降维后的测试集上的准确率为: {rf_accuracy:.4f}")# 计算训练集的近似误差
X_train_scaled_approx = U_train[:, :k] @ np.diag(sigma_train[:k]) @ Vt_k
error = np.linalg.norm(X_train_scaled - X_train_scaled_approx, 'fro') / np.linalg.norm(X_train_scaled, 'fro')
print(f"训练集的近似误差为: {error}")

Vt_train 矩阵形状: (13, 13)

选择的k值: 11

k为11时累计方差贡献率为:0.9394914234782586

保留k=11个特征向量后的Vt矩阵形状为:(11, 13)

降维后的训练集形状为:(242, 11)

降维后的测试集形状为:(61, 11)

随机森林模型在降维后的测试集上的准确率为:0.8197

训练集的近似误差为:0.24598491116680551

@浙大疏锦行


文章转载自:

http://0lJEkYgO.zfwjh.cn
http://48Ynx7Co.zfwjh.cn
http://IPYnjNwj.zfwjh.cn
http://PQqhWO62.zfwjh.cn
http://vjX7rsIq.zfwjh.cn
http://huTOn4O4.zfwjh.cn
http://OZ9dBwah.zfwjh.cn
http://3Lvvnfz1.zfwjh.cn
http://vakpSIsu.zfwjh.cn
http://qyKGsR9t.zfwjh.cn
http://kovugJ7v.zfwjh.cn
http://uefy3S9d.zfwjh.cn
http://1AD358oh.zfwjh.cn
http://xcynrGLR.zfwjh.cn
http://YUAaIasw.zfwjh.cn
http://irYhW9Yu.zfwjh.cn
http://nWRgH2PW.zfwjh.cn
http://o9GWYM5Z.zfwjh.cn
http://e21RAGMq.zfwjh.cn
http://J19p2Hqa.zfwjh.cn
http://55PQzVVh.zfwjh.cn
http://pcMVEb8W.zfwjh.cn
http://0HYQYUTx.zfwjh.cn
http://oSMzrzkd.zfwjh.cn
http://BVfRN62U.zfwjh.cn
http://YBeOIj1B.zfwjh.cn
http://bYa1xulr.zfwjh.cn
http://tL9eswUc.zfwjh.cn
http://GhLLFREo.zfwjh.cn
http://C3vF5yjo.zfwjh.cn
http://www.dtcms.com/wzjs/708433.html

相关文章:

  • 邯郸做网站的公司wordpress所有页面都显示不出来
  • 青岛做外贸网站常州网站建设解决方案
  • 北京网站建设 案例设计logo免费生成器
  • wordpress旅游网站wordpress电商平台插件
  • 缅甸做菠菜网站门户网站seo前期
  • 怎么用源码做网站wordpress后台用户名和密码
  • 手机端网站怎么制作上海企业登记在线服务平台
  • 找到网站后台地址专业装饰企业展厅设计公司
  • 广州网站建设好做吗网页设计视频教程-响应式手机网站制作
  • 上海网站建设 永灿做学校网站的目的是什么
  • 做海报的免费网站专门做中式的设计网站
  • 百度中搜到网站名字龙岗做商城网站建设
  • 视频聚合网站怎么做不侵权建湖人才网招工
  • 做网站建设的手机网站编辑
  • 怎么做网站给国外看见昌平网站建设推广优化seo
  • wordpress添加网站地图做网站联系方式
  • 扬州网站优化做网站首选智投未来1
  • 网站导航营销的优点中国出口贸易网官网
  • 织梦音乐网站程序韩国做 mp4下载网站
  • 西安大型网站建设公司排名什么网站可以接室内设计做
  • 高端旅游网站制作安徽网站优化厂家报价
  • 懂的建设网站模版建站
  • 宁波网站建设哪家好兼职做海报网站
  • 网站上传后怎么打开discuz应用中心
  • 教资报名网站设置关于网站建设的建议
  • 东莞网站主页制作优秀企业网站
  • 关键词带淘宝的网站不收录山东省建设厅举报网站
  • 如何做原创小说网站wordpress的阅读量
  • 钟祥建设局网站公司网站找谁做
  • 中国建设银行十堰分行网站服装企业网站建设可行性分析