我正在尝试构建一个机器学习算法集成,第一个使用boosting算法,第二个使用堆栈算法。当我尝试创建我的模型时,我得到以下错误:
Error: wrong model type for regression
以下是我的代码:
library(mlbench)
library(caret)
library(caretEnsemble)
#Remove Null Values
Data <- Data[complete.cases(Data), ]
control <- trainControl(method="repeatedcv", number=10,
我有一个很大的(10000 X 5001)表,表示10000个样本和这些样本的5001个不同特征。其中一个特征表示每个样本的输出变量。换句话说,每个样本有5000个输入变量和一个输出变量。
我知道这些输入大部分都是无关紧要的。因此,我想要做的是确定最能预测输出变量的输入变量子集。在R中做这件事最好/最简单的方法是什么?
我正在运行绘图Local判别分析ldfa {lfda}包,我使用如下所示的数据框架:
> dim (df)
[1] 35 415
model <- lfda(df[, 2:ncol(df)], df[, 1], r = 3, metric="plain")
我知道这个错误:
Error in getAffinityMatrix(distance2, knn, nc) :
knn is too large, please try to reduce it.
knn是一个在局部缩放方法中使用的参数(缺省值: 5),我测试了低于5 (4,3,2,1)的值,但是
使用R MASS软件包进行线性判别分析,有没有办法获得变量重要性的度量?
Library(MASS)
### import data and do some preprocessing
fit <- lda(cat~., data=train)
我有一个包含大约20个测量值的数据集,用于预测一个二进制类别。但是测量值很难获得,所以我想将测量值的数量减少到最有影响力的。
在使用rpart或randomForests时,我可以使用摘要()或重要性()获得变量重要性列表或gimi rpart统计信息。
有没有我找不到的内置函数来做这件事?或者,如果我必须编写一个代码,那么什么是一个好方法呢?
,jez很好地帮助我为行差的外部乘积提供了一个快速的近似,即:
K = np.zeros((len(X), len(X)))
for i, Xi in enumerate(X):
for j, Xj in enumerate(X):
dij = Xi - Xj
K += np.outer(dij, dij)
这为Fisher判别分析的一种形式找到了散射矩阵的计算方法。但是现在我尝试进行局部Fisher判别分析,其中每个外部乘积都由一个矩阵A加权,矩阵A包含了关于这对位置的信息,所以新的一行是:
K += A[i][j] * np.outer(dij, dij)
不幸的是,在
数据集: Iris如何计算LDA (线性判别分析)模型的数据集上的混淆矩阵?
>iris.lda = lda(Species ~ . , data = iris)
>table(predict(iris.lda, type="class"), iris$Species)
Error in sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?
我在真正理解MATLAB内置的交叉验证函数时遇到了一些麻烦。我的目标是开发一个二进制分类模型,并使用交叉验证来测试其准确性。我正在考虑比较几个不同的模型,但出于本例的目的,我将仅使用k-最近邻分类。我提供了两个简化版本的交叉验证代码:
% INPUTS:
% data = NxM matrix, where N = observations and M = features
% labels = Nx1 matrix with the true labels of each observation
%% Version 1
model = fitcknn(data,labels,'N
在下面的代码中,有一个基于虹膜数据集的主成分分析(PCA)和线性判别分析(LDA)图的示例。如何将其凸包添加到每个组中? 代码: import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.decomposition import PCA
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
iris = datasets.load_iris()
X = iris.data
y = iris.target
targe
以下代码使用线性判别分析执行10重交叉验证:
load fisheriris
indices = crossvalind('Kfold',species,10);
cp = classperf(species); % initializes the CP object
for i = 1:10
test = (indices == i); train = ~test;
class = classify(meas(test),meas(train),species(train));
% updates the CP object with the cur
据我所知,线性鉴别分析(LDA)是一种减少输入特征数量的技术。Wiki还声明了相同的
线性判别分析(LDA)、正态判别分析(NDA)或判别函数分析(NDA)是Fisher线性判别的推广,它是一种用于统计、模式识别和机器学习的方法,用于寻找表征或分离两类或两类以上事件的特征的线性组合。由此产生的组合可以用作线性分类器,或者更常见的是,在以后的分类之前进行降维。
但是,当我尝试使用来自LinearDiscriminantAnalysis的sklearn.discriminant_analysis时,我无法获得具有减少功能的数据。
from sklearn.datasets import m
为了选择“最有意义的”变量,我尝试使用penalizedLDA包来运行一个受惩罚的线性判别分析。我已经搜索了这里和其他网站,以帮助访问的输出从受惩罚的模式,但没有任何效果。
我的数据包括400个变量和44个组。到目前为止,我使用的代码和结果如下:
yy.m<-as.matrix(yy) #Factors/groups
xx.m<-as.matrix(xx) #Variables
cv.out<-PenalizedLDA.cv(xx.m,yy.m,type="standard")
## aplly the penalty
out <- Pe