我想在OpenCV中实现快速PLDA(概率线性判别分析).在这个LINK快速PLDA已经实现Matlab和Python.PLDA的一部分是LDA.我编写了以下用于在OpenCV中实现LDA的代码:
int LDA_dim = 120;
// Load data
FileStorage fs("newStorageFile.yml", FileStorage::READ);
// Read data
Mat train_data, train_labels;
fs["train_data"] >> train_data;
fs["train_labels"] >> train_labels;
// LDA
if (LDA_dim > 0)
{
LDA lda(LDA_dim);
lda.compute(train_data, train_labels); // compute eigenvectors
Mat eigenvectors = lda.eigenvectors();
}
Run Code Online (Sandbox Code Playgroud)
我已将上面链接中引入的数据库转换.mat为.yml.结果是newStorageFile.yml我上传到了这里.train_data有650行和600列,train_labels有650行和1列.我不知道为什么特征向量和特征值变为零!! PLZ帮我修复此代码.
最好将转换数据的代码.mat带到.yml:
function matlab2opencv( variable, fileName, flag)
[rows cols] = size(variable);
% Beware of Matlab's linear indexing …Run Code Online (Sandbox Code Playgroud) LDA 与朴素贝叶斯在机器学习分类方面的优缺点是什么?
我知道一些差异,比如朴素贝叶斯假设变量是独立的,而 LDA 假设高斯类条件密度模型,但我不明白什么时候使用 LDA,什么时候使用 NB 取决于情况?
classification machine-learning naivebayes linear-discriminant machine-learning-model
我使用 HMeasure 包将 LDA 纳入我关于信用风险的分析中。我有 11000 个 obs,我选择了年龄和收入来进行分析。我不知道如何解释 LDA 的 R 结果。所以,我不知道我是否根据信用风险选择了最佳变量。我在代码下面给你看。
lda(default ~ ETA, data = train)
Prior probabilities of groups:
0 1
0.4717286 0.5282714
Group means:
ETA
0 34.80251
1 37.81549
Coefficients of linear discriminants:
LD1
ETA 0.1833161
Run Code Online (Sandbox Code Playgroud)
lda(default~ ETA + Stipendio, train)
Call:
lda(default ~ ETA + Stipendio, data = train)
Prior probabilities of groups:
0 1
0.4717286 0.5282714
Group means:
ETA Stipendio
0 34.80251 1535.531
1 37.81549 1675.841
Coefficients of linear discriminants:
LD1
ETA 0.148374799
Stipendio …Run Code Online (Sandbox Code Playgroud) 我一直在测试PCA和LDA如何有效地分类我想要自动识别的3种不同类型的图像标签.在我的代码中,X是我的数据矩阵,其中每一行是图像中的像素,y是一维数组,表示每行的分类.
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.decomposition import PCA
from sklearn.lda import LDA
pca = PCA(n_components=2)
X_r = pca.fit(X).transform(X)
plt.figure(figsize = (35, 20))
plt.scatter(X_r[:, 0], X_r[:, 1], c=y, s=200)
lda = LDA(n_components=2)
X_lda = lda.fit(X, y).transform(X)
plt.figure(figsize = (35, 20))
plt.scatter(X_lda[:, 0], X_lda[:, 1], c=y, s=200)
Run Code Online (Sandbox Code Playgroud)
使用LDA,我最终得到3个清晰可辨的聚类,它们之间只有轻微的重叠.现在,如果我有一个新图像我要分类,一旦我把它变成一维数组,我该如何预测它应该落入哪个集群,如果它离中心太远怎么能说这个分类是"不确定的" "?我也很好奇".transform(X)"函数在我适应它之后对我的数据做了什么.
python machine-learning pca scikit-learn linear-discriminant
我正在使用 R 中的 lda 函数来拟合模型。拟合模型后,我想使用拟合结果放入计算机程序中,根据输入进行分类。我只看到线性判别式和组均值的系数。我认为我需要截距和系数才能获得每组的实际分数。
r ×2
c++ ×1
eigenvalue ×1
lda ×1
naivebayes ×1
opencv ×1
pca ×1
probability ×1
python ×1
scikit-learn ×1