IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 基于Python(sklearn)计算PLS中的VIP值 -> 正文阅读

[人工智能]基于Python(sklearn)计算PLS中的VIP值

基于Python(sklearn)计算PLS中的VIP值

sklearn中PLS回归模型并没有计算VIP值的方法,但VIP又是很重要的筛选变量方法。下附代码思路与完整代码,若有错误,万望指正。

1.首先亮明计算公式:

在这里插入图片描述
其中:
VIPj:对应于第j个特征的VIP值;
p:预测变量的总数;
A:PLS成分的总数;
R矩阵:A个PLS成分中,每个成分a都对应一套系数wa将X转换为成分得分,系数矩阵写作R,大小为p×A;
T矩阵:n个样本中,每个样本会计算出A个成分得分,得分矩阵记做T,大小为n×A,ta代表n个样本的第a个成分的得分列表;
以上有T = XR
qa:
e是残差,X0和y0代表数据和标签。

2. 按照sklearn中对属性的解释:
在这里插入图片描述
该x_rotations_应对应于R矩阵,T矩阵对应于transform后生成的降维数据。
又依据:
在这里插入图片描述
有模型中e残差应为0,即y = yhat = X coef_

3. 组织计算步骤
1)计算qa2:qa = yhat.T ta -> Q2 = q2 = np.square(y.T, T)
2) p = X.shape[1]
3) = np.sum(Q2)
4) R = x_rotations_
4) = R[j, a] / np.linalg.norm(R[:, a])

Ok,万事具备,开搞。
下付完整代码

def compute_VIP(X, y, R, T, A):
    """
    计算模型中各预测变量的VIP值
    :param X: 数据集X
    :param y: 标签y
    :param R: A个PLS成分中,每个成分a都对应一套系数wa将X转换为成分得分,系数矩阵写作R,大小为p×A
    :param T: 得分矩阵记做T,大小为n×A,ta代表n个样本的第a个成分的得分列表
    :param A: PLS成分的总数
    :return: VIPs = np.zeros(p)
    """
    p = X.shape[1]
    Q2 = np.square(np.dot(y.T, T))

    VIPs = np.zeros(p)
    temp = np.zeros(A)
    for j in range(p):
        for a in range(A):
            temp[a] = Q2[a] * pow(R[j, a] / np.linalg.norm(R[:, a]), 2)
        VIPs[j] = np.sqrt(p * np.sum(temp) / np.sum(Q2))
    return VIPs

下面为函数调用代码:

X, Y = np.zero() # 此处应用自己的数据
x_train, x_test, y_train, y_test = model_selection.train_test_split(X, Y, test_size=0.3)

# 然后对y进行转换(哑变量)
y_train_labels = pd.get_dummies(y_train)

# 建模
n_component = 3
model = PLSRegression(n_components=n_component)
model.fit(x_train, y_train_labels)

#
x_test_trans = model.transform(x_test)
VIPs = compute_VIP(x_test, y_test, model.x_rotations_, x_test_trans, n_component)
plt.scatter(np.arange(0, X.shape[1]), VIPs)
plt.show()
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-02-22 20:35:25  更:2022-02-22 20:36:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 19:20:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码