在numpy中是否有x2fx的等效函数?

时间:2014-10-26 16:07:56

标签: python matlab numpy

numpy是否包含与Matlab中的x2fx()等效或类似的函数?如果没有,有没有人建议如何使用numpy提供的功能有效地模拟这个功能?

2 个答案:

答案 0 :(得分:2)

这在NumPy中是一个有效的选择:

from itertools import combinations as comb

import numpy as np

def x2fx(x, model='linear'):
    linear = np.c_[np.ones(x.shape[0]), x]
    if model == 'linear':
        return linear
    if model == 'purequadratic':
        return np.c_[linear, x**2]
    interaction = np.hstack([x[:,i]*x[:,j] for i, j in
                                 comb(range(x.shape[1]), 2)]).T
    if model == 'interaction':
        return np.c_[linear, interaction]
    if model == 'quadratic':
        return np.c_[linear, interaction, x**2]

答案 1 :(得分:1)

Statsmodels正是您所寻找的 一个例子:

import statsmodels.formula.api as smf

model = smf.ols('y ~ x1 + log(x2)', data=your_dataframe)
design_matrix = model.exog

查看statsmodels的文档以获取更多信息 它可以直接拟合模型而不生成设计矩阵(隐式)或明确生成设计矩阵,如示例所示。

http://statsmodels.sourceforge.net/stable/