lda

LDA线性判别

自闭症网瘾萝莉.ら 提交于 2020-01-19 10:27:03
LDA线性判别 LDA线性判别式分析又称为Fisher线性判别,是一种有监督的降维算法,用于针对有类别的样本进行降维,使得降维后类与类之间的分割依然很明显,可以说,LDA从高维特征提取出了最具有类间判别能力低维特征,LDA与PCA分类的区别如图1所示,红色与蓝色代表不同类别的样本。                    图1   LDA降维的主要目标在于寻找一个向量 u u u ,使得样本经过向量 u u u 降维后能够最小化类内距离,最大化类间距离。为了实现该目标,计算过程如下:   假设样本共有K类,每类样本的个数为N1,N2,…NK。令 x j i x_j^i x j i ​ 为第 j 类的第 i 个样本, m j m_j m j ​ 为第 j 类的中心, D j D_j D j ​ 为第 j 类的点集, x j i ~ \widetilde{x_j^i} x j i ​ ​ 为 x j i x_j^i x j i ​ 经过向量 u u u 降维之后的坐标, m j ~ \widetilde{m_j} m j ​ ​ 为 m j m_j m j ​ 经过向量 u u u 降维之后的坐标,设向量 u u u 的模长为 a a a 。 为第 j 类的第 i 个样本 。 计算类内距离: 第 j 类的类内距离为: S j = 1 N j ∑ x j i ∈ D j ( x j i ~

使用sklearn做特征工程

你离开我真会死。 提交于 2020-01-15 16:55:43
1 特征工程是什么?   有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。那特征工程到底是什么呢?顾名思义,其本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用。通过总结和归纳,人们认为特征工程包括以下方面:   特征处理是特征工程的核心部分,sklearn提供了较为完整的特征处理方法,包括数据预处理,特征选择,降维等。首次接触到sklearn,通常会被其丰富且方便的算法模型库吸引,但是这里介绍的特征处理库也十分强大!   本文中使用sklearn中的 IRIS(鸢尾花)数据集 来对特征处理功能进行说明。IRIS数据集由Fisher在1936年整理,包含4个特征(Sepal.Length(花萼长度)、Sepal.Width(花萼宽度)、Petal.Length(花瓣长度)、Petal.Width(花瓣宽度)),特征值都为正浮点数,单位为厘米。目标值为鸢尾花的分类(Iris Setosa(山鸢尾)、Iris Versicolour(杂色鸢尾),Iris Virginica(维吉尼亚鸢尾))。导入IRIS数据集的代码如下: 1 from sklearn.datasets import load_iris 2 3 #导入IRIS数据集 4 iris = load_iris() 5 6 #特征矩阵 7 iris.data

机器学习中的特征工程

自作多情 提交于 2020-01-15 14:59:59
作者:城东 链接: 特征工程到底是什么? - 城东的回答 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 目录 1 特征工程是什么? 2 数据预处理   2.1 无量纲化     2.1.1 标准化     2.1.2 区间缩放法     2.1.3 标准化与归一化的区别   2.2 对定量特征二值化   2.3 对定性特征哑编码   2.4 缺失值计算   2.5 数据变换 3 特征选择   3.1 Filter     3.1.1 方差选择法     3.1.2 相关系数法     3.1.3 卡方检验     3.1.4 互信息法   3.2 Wrapper     3.2.1 递归特征消除法   3.3 Embedded     3.3.1 基于惩罚项的特征选择法     3.3.2 基于树模型的特征选择法 4 降维   4.1 主成分分析法(PCA)   4.2 线性判别分析法(LDA) 5 总结 6 参考资料 1 特征工程是什么?   有这么一句话在业界广泛流传:数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。那特征工程到底是什么呢?顾名思义,其本质是一项工程活动,目的是最大限度地从原始数据中提取特征以供算法和模型使用。通过总结和归纳,人们认为特征工程包括以下方面:   特征处理是特征工程的核心部分

Spark LDA woes - prediction and OOM questions

无人久伴 提交于 2020-01-13 13:05:29
问题 I'm evaluating Spark 1.6.0 to build and predict against large (millions of docs, millions of features, thousands of topics) LDA models, something I can accomplish pretty easily with Yahoo! LDA. Starting small, following the Java examples, I built a 100K doc/600K feature/250 topic/100 iteration model using the Distributed model/EM optimizer. The model built fine and the resulting topics were coherent. I then wrote a wrapper around the new ​single-document prediction routine (SPARK-10809; which

Visualizing an LDA model, using Python

℡╲_俬逩灬. 提交于 2020-01-13 08:27:08
问题 I have a LDA model with the 10 most common topics in 10K documents. Now it's just an overview of the words with corresponding probability distribution for each topic. I was wondering if there is something available for python to visualize these topics? 回答1: pyLDAvis looks reasonably good. There's also Termite developed by Jason Chuang of Stanford. 回答2: There some visulizations you can choise. In the topic of Visualizing topic models, the visualization could be implemented with, D3 and Django

Plot the evolution of an LDA topic across time

元气小坏坏 提交于 2020-01-13 05:59:29
问题 I'd like to plot how the proportion of a particular topic changes over time, but I've been having some trouble isolating a single topic and plotting over time, especially for plotting multiple groups of documents separately (let's create two groups to compare - journals A and B). I've saved dates associated with these journals in a function called dateConverter . Here's what I have so far (with much thanks to @scoa): library(tm); library(topicmodels); txtfolder <- "~/path/to/documents/"

TopicModel: How to query documents by topic model “topic”?

家住魔仙堡 提交于 2020-01-12 08:29:09
问题 Below I created a full reproducible example to compute the topic model for a given DataFrame. import numpy as np import pandas as pd data = pd.DataFrame({'Body': ['Here goes one example sentence that is generic', 'My car drives really fast and I have no brakes', 'Your car is slow and needs no brakes', 'Your and my vehicle are both not as fast as the airplane']}) from sklearn.decomposition import LatentDirichletAllocation from sklearn.feature_extraction.text import CountVectorizer vectorizer =

特征工程

ⅰ亾dé卋堺 提交于 2020-01-12 06:44:10
本文中使用sklearn中的IRIS(鸢尾花)数据集来对特征处理功能进行说明。IRIS数据集由Fisher在1936年整理,包含4个特征(Sepal.Length(花萼长度)、Sepal.Width(花萼宽度)、Petal.Length(花瓣长度)、Petal.Width(花瓣宽度)),特征值都为正浮点数,单位为厘米。目标值为鸢尾花的分类(Iris Setosa(山鸢尾)、Iris Versicolour(杂色鸢尾),Iris Virginica(维吉尼亚鸢尾))。导入IRIS数据集的代码如下: from sklearn.datasets import load_iris # 导入IRIS数据集 iris = load_iris() # 特征矩阵 iris.data # 目标向量 iris.target 1、特征选择 当数据预处理完成后,我们需要选择有意义的特征输入机器学习的算法和模型进行训练。通常来说,从两个方面考虑来选择特征: 特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用; 特征与目标的相关性:这点比较显见,与目标相关性高的特征应当优先选择。 根据特征选择的形式又可以将特征选择方法分为3种: Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者选择阈值的个数,选择特征;

降维技术2-线性判别分析(LDA)

三世轮回 提交于 2020-01-10 23:40:41
线性判别分析(Linear Discriminant Analysis),简称LDA,是一种经典的线性学习方法。在二分类问题上最早由Fisher提出,也称"Fisher判别分析"。 在主成分分析原理总结中,我们对降维算法PCA进行了总结。这里的LDA是另一种经典的的降维算法。使用PCA进行降维,我们没有将类别考虑进去,属于无监督学习。而LDA是一种监督学习的降维技术,即它的每个样本是有类别输出的。 LDA的思想 给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近,异类样例的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别。 用一句话概括就是:投影后类内方差最小,类间方差最大。 瑞利商与广义瑞利商(Rayleigh quotient) 瑞利商定义:瑞利商是指这样的函数 \(R(A,x)\) : \[R(A,x)=\dfrac{x^HAx}{x^Hx}\] 其中 \(x\) 为非零向量,而A为 \(n\times n\) 的Hermitan矩阵。所谓的Hermitan矩阵就是它的共轭转置等于它本身,属于推广的对称矩阵,即 \(A^H=A\) .如果A是实对称阵, \(A^T=A\) 即为Hermitan矩阵。 瑞利商 \(R(A,x)\) 有 一个非常重要的性质,即它的最大值等于矩阵A的最大特征值

周志华机器学习3_5线性判例分析 编程实现(python&matlab)

牧云@^-^@ 提交于 2020-01-06 21:35:29
作为小白一枚,在参考了大神们的代码(文末附链接)后首先利用python分别用两种方法进行了编程。编程结果与大神们的不一致,不知道是不是中间过程有问题。在阅读过程中如果看出问题,望能指出,谢谢大噶!(以下均将数据集中第15行数据去除后运行) 方法1:(利用sklearn库中的LDA函数) import pandas as pd ## import numpy as np import matplotlib . pyplot as plt from sklearn . discriminant_analysis import LinearDiscriminantAnalysis as LDA #数据读取 dataset = pd . read_csv ( 'watermelon1.csv' ) dataset = dataset . values X = dataset [ : , 1 : 3 ] y = dataset [ : , 3 ] #利用西瓜数据绘制散点图 fig = plt . figure ( ) plt . title ( 'wtatermelon30_a_sklearnlda' ) plt . xlabel ( 'density' ) plt . xlabel ( 'sugur_ratio' ) plt . scatter ( X [ y == 0 , 0 ] , X