我正在尝试查找数据点到回归线的距离。 为此,正如另一个问题所建议的那样,我已经编写了该函数。但是,当我尝试应用它时,我不会成功。 原因是该功能需要在groupby之后应用 功能如下
def regress(yvar, xvar):
X = xvar.values[:,np.newaxis]
Y = yvar.values
model=LinearRegression()
model.fit(X,Y)
dist = Y - model.predict(X)
return dist
我正试图在groupby之后应用它,如下所示 我数据框的名称是“ data_train_bel1800”,“时间”和“值”是包含需要馈入函数的值的列
data_train_bel1800['distance'] = (data_train_bel1800.groupby(['Cycle','Type']).apply(regress(data_train_bel1800['Time'].values,data_train_bel1800['Values'].values)))
当我将时间和值列的值传递给他时,我做错了。谁能指导?
答案 0 :(得分:1)
def regress(yvar, xvar):
X = xvar.values[:,np.newaxis]
Y = yvar
model=LinearRegression()
res = model.fit(X,Y)
dist = Y - res.predict(X)
return dist
test = pd.read_csv('Training.csv')
test.drop(['EndTime'],axis=1,inplace=True)
res= test.groupby(['Cycle','Type'],as_index=False).apply(lambda x: regress(x["Time"], x['Values']))
test["distance"] = res.reset_index(level=0, drop=True)
print(test)
Cycle Type Time Values distance
0 2 2 101.0 20.402 426.813637
1 2 2 102.0 20.402 427.813637
2 2 2 103.0 20.402 428.813637
3 2 2 104.0 20.402 429.813637