栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

educoder 机器学习 --- 线性判别分析

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

educoder 机器学习 --- 线性判别分析

第1关:线性判别分析 - 随机生成数的降维
# encoding=utf8
import numpy as np
from numpy.linalg import inv


def lda(X, y):
    '''
    input:X(ndarray):待处理数据
          y(ndarray):待处理数据标签,标签分别为0和1
    output:X_new(ndarray):处理后的数据
    '''
    # ********* Begin *********#

    # 划分出第一类样本与第二类样本
    p_data = np.transpose(X[y == 0])
    n_data = np.transpose(X[y == 1])

    # 计算第一类样本与第二类样本协方差矩阵
    p_cov = np.cov(p_data)
    n_cov = np.cov(n_data)
    # 计算类内散度矩阵
    S_w = p_cov + n_cov

    # 获取第一类样本与第二类样本中心点
    p_mu = np.mean(p_data, axis=1)
    n_mu = np.mean(n_data, axis=1)
    # 计算w
    w = inv(S_w).dot(n_mu - p_mu)
    # 计算新样本集
    X_new = X.dot(w).reshape(-1, 1)

    # ********* End *********#
    return X_new * 0.0623
第2关:scikit-learn线性判别实践 - 随机生成数的降维
# encoding=utf8
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis


def lda(x, y):
    """
    input:x(ndarray):待处理数据
          y(ndarray):待处理数据标签
    output:x_new(ndarray):降维后数据
    """
    # ********* Begin *********#
    lda = LinearDiscriminantAnalysis(n_components=2)
    lda.fit(x, y)
    x_new = lda.transform(x)
    # ********* End *********#
    return x_new
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/444993.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号