2017-11-18 144 views
0

我试图在python中复制一个函数,并能够使用数据框中的多列对以下代码进行编码,但想知道是否有一个python回归函数可以更有效地执行此操作。这里是该功能描述的链接。对不起,先进的不是一个真正的统计人员。 :)哪个python回归函数用于线性回归曲线

http://tlc.thinkorswim.com/center/reference/thinkScript/Functions/Statistical/Inertia.html

它指出它的使用最小二乘法线性回归曲线为每个组杆近似数据。

输入y =关闭; 输入n = 20;

def x = x [1] + 1; (先前值+1)

def a =(n * Sum(x * y,n)-Sum(x,n)* Sum(y,n))/(n * Sum(Sqr )-Sqr(Sum(x,n))); (Sum(Sqr(x),n)* Sum(y,n) - Sum(x,n)* Sum(x * y,n))/(n * Sum(Sqr(x, ),n)-Sqr(Sum(x,n)));

plot InertiaTS = a * x + b;

感谢

更新

这里是大熊猫列和函数。我第一次定义的x值和y值列,然后下面是原始计算:

df['ind1']= ((10 * (df['xValue']*df['ysValue']).rolling(10, min_periods=10).sum() - df['xValue'].rolling(10, min_periods=10).sum()*df['ysValue'].rolling(10, min_periods=10).sum())/ (10 * (df['xValue'] ** 2).rolling(10, min_periods=10).sum() - (df['xValue'].rolling(10, min_periods=10).sum())**2)) * df['xValue'] + (((df['xValue'] ** 2).rolling(10, min_periods=10).sum()*df['ysValue'].rolling(10, min_periods=10).sum() - df['xValue'].rolling(10, min_periods=10).sum()*(df['xValue']*df['ysValue']).rolling(10, min_periods=10).sum())/(10 * (df['xValue'] ** 2).rolling(10, min_periods=10).sum() - (df['xValue'].rolling(10, min_periods=10).sum())**2)) 

回答

0

这不是真的清楚你是否只是在寻找在Python执行回归的方式,或者你想自己的算法代码。

  1. 如果你想有一个包做回归,你可以看看scikit-learn 使用,

    from sklearn import linear_model 
    linear_model.LinearRegression() 
    
  2. 如果你想编写自己的算法,你可以看看gradient descent。你可以看安德鲁Ng在coursera上的视频 - https://www.coursera.org/learn/machine-learning/lecture/GFFPB/gradient-descent-intuition。编码算法相当直观,步骤如下,

    i。定义一个成本函数 - 这是一个基于OLS(普通最小二乘)和模样,

    J = 1/2 (h(x) - y) ^2

    II。对每个特征或j采取成本函数的偏导数。这里X是由n个特征组成的输入向量,其中之一是j。

    iii。采用梯度下降更新的特征向量 -

theta = theta - alpha * (partial derivative) 您可以从安德鲁·Ng的papaper发现这里的细节:http://cs229.stanford.edu/notes/cs229-notes1.pdf

对不起,这是很难把乳胶对SO

+0

是即时寻找在熊猫df内实际编码指标。我能够做到,但男人是丑陋的! :)我已经更新了原始信息。谢谢。只要看看是否有一个可以清理它的程序包/函数。 –