2017-11-18 178 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內實際編碼指標。我能夠做到,但男人是醜陋的! :)我已經更新了原始信息。謝謝。只要看看是否有一個可以清理它的程序包/函數。 –