机器学习LDA-基础Julia与Python的实现

本文介绍了如何在Python和Julia中实现机器学习中的LDA算法。通过对比Python的Numpy实现与Julia的结构体实现,探讨了Julia的多重派发功能在类方法替代上的优势。
摘要由CSDN通过智能技术生成

最近在看一本名为机器学习公式推导与代码实现的书,书中有用Numpy实现的LDA算法,具体Python代码如下

import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 定义LDA类
class LDA(object):
    def __init__(self):
        # 初始化权重矩阵
        self.w = None
        
    # 协方差矩阵计算方法
    def calc_cov(self, X, Y=None):
        m = X.shape[0]
        # 数据标准化
        X = (X - np.mean(X, axis=0)) / np.std(X, axis=0)
        Y = X if Y is None else (Y - np.mean(Y, axis=0)) / np.std(Y, axis=0)
        return 1 / m * np.matmul(X.T, Y)
    
    # 数据投影方法
    def project(self, X, y):
        # LDA拟合获取模型权重
        self.fit(X, y)
        return X.dot(self.w)
    
    # LDA拟合方法
    def fit(self, X, y):
        # (1)按类分组
        X0 = X[y == 0]
        X1 = X[y == 1]
        # (2)分别计算两类数据自变量的协方差矩阵
        sigma0 = self.calc_cov(X0)
        sigma1 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值