我正在尝试执行PCA,将900维度减少到10.到目前为止,我有:
covariancex = cov(labels);
[V, d] = eigs(covariancex, 40);
pcatrain = (trainingData - repmat(mean(traingData), 699, 1)) * V;
pcatest = (test - repmat(mean(trainingData), 225, 1)) * V;
Run Code Online (Sandbox Code Playgroud)
labels字符的1x699标签在哪里(1-26).trainingData是699x900,900维数据,699个字符的图像.test是225x900,225 900维度字符.
基本上我想把它减少到225x10,即10维度,但在这一点上有点卡住了.
matlab machine-learning linear-algebra pca dimensionality-reduction
这是一个后续问题:
为了对新的10维测试数据进行分类,我是否还必须将训练数据减少到10维?
我试过了:
X = bsxfun(@minus, trainingData, mean(trainingData,1));
covariancex = (X'*X)./(size(X,1)-1);
[V D] = eigs(covariancex, 10); % reduce to 10 dimension
Xtrain = bsxfun(@minus, trainingData, mean(trainingData,1));
pcatrain = Xtest*V;
Run Code Online (Sandbox Code Playgroud)
但是使用带有此分类器和10维测试数据会产生非常不可靠的结果吗?我做的事情根本就是错误吗?
编辑:
X = bsxfun(@minus, trainingData, mean(trainingData,1));
covariancex = (X'*X)./(size(X,1)-1);
[V D] = eigs(covariancex, 10); % reduce to 10 dimension
Xtrain = bsxfun(@minus, trainingData, mean(trainingData,1));
pcatrain = Xtest*V;
X = bsxfun(@minus, pcatrain, mean(pcatrain,1));
covariancex = (X'*X)./(size(X,1)-1);
[V D] = eigs(covariancex, 10); % reduce to 10 dimension
Xtest = bsxfun(@minus, test, …Run Code Online (Sandbox Code Playgroud) 我想映射!! 到列表,即有一个位置列表和一个列表,我试图返回这些位置的元素,到目前为止,我有:
map $ flip listOfThings!!listOfPositions
Run Code Online (Sandbox Code Playgroud)
我认为这是错误的,但无法解决如何解决它!任何帮助,将不胜感激.
我有一个函数,它调用另一个函数,可以根据某些条件返回一些东西或什么都没有.我想知道的是,如果它什么都不返回,我怎么用不同的参数再次调用它.
比方说,我有一个函数可以以30分钟的间隔返回时间,而另一个函数只能在某个时间不返回任何内容,即:
certainTimeFunction :: (Int,Int,Int) -> Maybe String
certainTimeFunction (h,m,s) =
| (11,00,00) = Just "It's eleven o'clock"
| otherwise = Nothing
timeFunction :: (Int,Int,Int) -> (Int,Int,Int)
timeFunction time = certainTimeFunction time
Run Code Online (Sandbox Code Playgroud)
时间必须从(00,00,00)开始,当然它将返回Nothing但是然后(00,30,00)被尝试再次返回Nothing直到(11,00,00)然后触发函数返回什么在第一个守卫,那么整个周期应该结束.
Haskell是否有一个函数可以让你找到一个单词的特定元素的数量,即[char],所以"FROG"中的'F'的元素号是0.还有,那个字母出现不止一次的单词,这个函数能否返回一个字母位置列表,即"TEETER"中的"E"将是[1,2,4]?
我知道拉链是用双绞线做的,但是我不认为有三重奏的功能呢?我怎么做一个?或者如果不这样做,我如何依次将第三个列表的每个成员添加到每个对中,从而制作三元组列表?
我正在尝试实现一个按字母顺序返回下一个字母的函数.例如:
> returnNext 'A'
'B'
Run Code Online (Sandbox Code Playgroud)
但是也:
> returnNext 'Z'
'A'
Run Code Online (Sandbox Code Playgroud)
因此,该函数应按字母顺序(模26)在字符代码之间循环.
在Haskell中是否有一个函数会返回一对中的另一个成员,例如调用函数"other":其他'D'('D','W')将返回'W'和其他'W'(' D','W')返回'D'?