使用Pandas在python中为数据框的每一行找到最小二乘线性回归

约翰·约翰

我有一个数据框:

(日月年)

df = pd.DataFrame({'Name': ['A', 'B', 'C'], 
                   'Date0': ['01/01/1999','01/06/1999','01/01/1979'], 'V0': [29,44,21],
                   'Date1': ['08/01/2000','07/01/2000','01/01/2000'],'V1': [35, 45, 47]})

我想对每一行的年龄进行插值以找到'V_10',这是使用线性回归的日期10/08/1999的值。例如,在第一种情况下,我会得到类似的信息:

Slope   0.01609
Y-intercept     29.00    
df = pd.DataFrame({'Name': ['A', 'B', 'C'], 
                   'Date0': ['01/01/1999','01/06/1999','01/01/1979'], 'V0': [29,44,21],
                   'Date1': ['08/01/2000','07/01/2000','01/01/2000'],'V1': [35, 45, 47], 
                   'V_10':[32.57]})

我希望我的计算是正确的。

如果我想要指数回归或更糟糕的自定义函数怎么办?

发疯

我不确定这是否是您想要的,但是对于线性插值,您可以执行以下操作:

import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import Pipeline

df = pd.DataFrame({'Name': ['A', 'B', 'C'], 
               'Date0': ['01/01/1999','01/06/1999','01/01/1979'], 'V0': [29,44,21],
               'Date1': ['08/01/2000','07/01/2000','01/01/2000'],'V1': [35, 45, 47]})
df['Target'] = pd.to_datetime('10/08/1999')
df['Date0'] = pd.to_datetime(df['Date0'])
df['Date1'] = pd.to_datetime(df['Date1'])
df['Target'] = pd.to_datetime(df['Target'])

def regress(xs, ys, newx, reference=pd.to_datetime('1/1/1900'), retype='linear', fit_intercept=True, degree=None):
    xs = [(x - reference).days for x in xs]
    xs = np.array(xs).reshape(-1,1)
    ys = np.array(ys)
    if retype == 'linear':
        lm = LinearRegression(fit_intercept=fit_intercept)
    elif retype == 'polynomial':
        lm = Pipeline([('poly', PolynomialFeatures(degree=degree)),
                   ('linear', LinearRegression(fit_intercept=fit_intercept))])
    else:
        return print('Need to specify other regression type.')
    lm.fit(xs,ys)
    return lm.predict(np.array((newx - reference).days).reshape(-1, 1))[0]

# Linear regression example
df['V10'] = df.apply(lambda x: regress([x.Date0,x.Date1], [x.V0,x.V1], x.Target, retype='linear'), axis=1)
# 2nd-degree polynomial regression example
df['V11']=df.apply(lambda x: regress([x.Date0,x.Date1], [x.V0,x.V1], x.Target, retype='polynomial', degree=2), axis=1)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在python中使用最小二乘拟合找到圆心?

最小二乘Python的指数拟合

线性N向等式问题的最小二乘

如何为向量输入和观察建立线性最小二乘回归模型

为数据框中的每一行找到n个最小值

如何在python中为多维数据实现非线性最小二乘法?

在pyspark [non pandas]中为数据框的每一行调用一个函数

最小二乘回归线与散点图不匹配

如何在Python中为数据框的每一行创建唯一的XML

R(或任何语言)中偏态正态分布的非线性最小二乘回归

在python中为Panda数据框的每一行创建一个Radar Chart

使用Numba解决Python中的最小二乘

python中的反转标准最小二乘回归(ISR)

稀疏偏最小二乘回归

在MATLAB中xA = b的约束线性最小二乘

限制python中的最小二乘拟合

Python中的加权非负最小二乘线性回归

使用MATLAB求解最小二乘

如何在SPSS中运行滞后的广义最小二乘回归

Python中的非线性最小二乘拟合(二维)

最小二乘稳健回归C ++

如何计算python中的最小二乘系数误差

如何在插入符号中使用 stats::nls 非线性最小二乘回归?

在 statsmodels 上使用样本权重进行最小二乘回归

如何使用具有非线性约束的 LMFIT 解决最小二乘问题?

对于每一行,在二进制数据框中找到值为 1 的最后一列

在python中的非线性最小二乘实现中,参数不会以较低的容差收敛

为 pandas 数据框中的每一行添加特定的竞争

从最小二乘回归中获得一系列正态分布