Matlab工具箱的开源(或其他)版本

3
我在大学的一门课程中有一个需要使用各种Matlab函数的项目。我使用的Matlab版本由我的工作场所提供,但它没有一些项目所需的工具箱。是否有这些实现的存储库?当我搜索时,我找不到任何相关的东西。
虽然我的问题很普遍,但我列出了我需要且找不到的函数,因为我的问题也很具体:
- knnclassify - K最近邻算法的实现 - svmclassify - 支持向量机的实现 - svmtrain - SVM实现的一部分 - mapstd - 将矩阵归一化为均值为0,标准差为1
另一个我正在考虑的选择是使用NumPy和Pylab的Python。Pylab中是否有相当于这些Matlab函数的工具箱?

如果您将要对机器学习技术进行比较,您可能还需要考虑使用Weka和Matlab,只需导入和导出arff文件即可。 - Mark Elliot
3个回答

3
我会检查的第一个地方是 MathWorks 文件交换中心。这里有来自 MATLAB 用户的超过 10,000 个代码提交,你可能能够找到各种 MATLAB 工具箱的替代方案。这里有一些可能有用的内容:

对于像 MAPSTD 这样的简单函数,另一个选择是尝试实现一个精简版。这里有一些复制 MAPSTD 基本行为的示例代码:

M = magic(5);               %# Create an example matrix
rowMeans = mean(M,2);       %# Compute the row means
rowStds = std(M,0,2);       %# Compute the row standard deviations
rowStds(rowStds == 0) = 1;  %# Set standard deviations of 0 to 1
for i = 1:size(M,1)
  M(i,:) = (M(i,:)-rowMeans(i))./rowStds(i);  %# Normalize each row of M
end
%# Or you could avoid the for loop with a vectorized solution...
M = bsxfun(@rdivide,bsxfun(@minus,M,rowMeans),rowStds);

这显然不能涵盖MAPSTD中的所有选项,但涵盖了基本功能。我可以确认上述代码给出的结果与mapstd(M)相同。


1
一个更正:如果SD=0(常数行),则不能除以零!相反,请使用:M = bsxfun(@rdivide,bsxfun(@minus,M,rowMeans),rowStds+(rowStds==0)); - Amro
另一种解决方案是:zscore(M')' 或更准确地说 zscore(M')'*ystd + ymean,以匹配函数调用 mapstd(M,ymean,ystd) - Amro
@Amro:标准差方面,你发现得真好。我已经修改了代码以解决这个问题。我没有使用ZSCORE函数,因为它在统计工具箱中,而我想展示一个基本的MATLAB示例。 - gnovice

3

你可能需要考虑购买自己所需的Matlab和工具箱。Mathworks为大学生提供非常有吸引力的价格。

GNU Octave是免费的类似于Matlab的软件,但我不知道它是否完全兼容所需的工具箱。

或者,如果作业需要使用它们,学校可能在某些实验室机器上安装了它们,并且你可能可以远程登录,使用某种Xterm。请向助教咨询。


Octave实际上有一些基本的MATLAB(没有工具箱)没有的函数。我不记得确切的哪些函数,但当时我主要在处理统计数据。 - Doresoom

2

你还可以看看R,它在许多数据驱动领域非常强大,包括机器学习

还要注意的是MLOSS开源机器学习软件目录。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接