matlab - Matlab:创建n次特征的多项式组合。
问题描述
是否有任何 Matlab 函数或通用代码来生成具有 n 次的三变量多项式方程的所有特征组合?对于三个 3 阶变量,特征组合为 1, x, y, z, x^2, y^2, z^2, xy,yz,zx, x^3, y^3, z^3 , x^2y, y^2z, z^2x, xyz....等等。
我已经从 Andrew Ng 的机器学习课程中获得了两个变量和 n 度的 Matlab 代码。
function out = mapFeature(X1, X2)
degree = 6;
out = ones(size(X1(:,1)));
for i = 1:degree
for j = 0:i
out(:, end+1) = (X1.^(i-j)).*(X2.^j);
end
end
end
我想知道是否有任何 n 度的三个变量的代码。提前致谢。
解决方案
还有一个基于简单meshgrid
的解决方案:
degree = 3;
[i,j,k]= meshgrid(0:degree);
powers= sortrows([i(:) j(:) k(:)]);
out = [];
for m = 1:size(powers,1)
d= powers(m,:);
if sum(d)<=degree
out(:, end+1) = (X1.^d(1)).*(X2.^d(2)).*(X3.^d(3));
end
end
该meshgrid
函数生成三个矩阵,其中包含其参数值的 3D 网格。可以将此矩阵扩展为列并使用[i(:) j(:) k(:)]
. 它为我们提供了一个矩阵,其行是度数的组合。sortrows
对矩阵的行进行排序,使组合顺序更自然。还有一个多维网格生成函数ndgrid
,可用于超过 3 个变量的情况。
推荐阅读
- python - 如何在 Python 中从左到右进行线性搜索?
- varint - 大端自定义变量的名称?
- python - 如何在 Airflow2 中运行使用 @task 定义的多处理任务
- python-3.x - 匹配 UID 的正则表达式
- javascript - Krpano 场景缩略图在 chrome 版本 87 之后不再可拖动
- java - Javafx用户输入油漆颜色变化描边颜色
- android - 如何更改完全卷积 tflite 模型的输入尺寸?
- c# - 如何获得二维数组中每一列和每一行的总和?
- spring-data-elasticsearch - NativeSearchQueryBuilder 没有按预期过滤 id
- javascript - 有没有办法标准化第三方 API 请求所花费的时间?(Javascript - Spotify API)