查找熊猫中两列之间的关系函数

时间:2019-05-10 10:53:43

标签: python pandas

我有两列的熊猫数据框

COL_A = 24.38

例如,在此数据帧中,如果COL_B=95.83COL_A=80像这样。

我想做的是找到两列之间的关系,以了解COL_B=?是什么User.current?.isFollow(toTarget: flatFeedPresenter.flatFeed.feedId) { [weak self] in button.isEnabled = true if let error = $2 { self?.showErrorAlert(error) } else { button.isSelected = $0 } }

2 个答案:

答案 0 :(得分:2)

从这个问题看来,Simple Linear Regression就是您要寻找的东西。

简单线性回归是一种使我们能够总结和研究两个连续(定量)变量之间的关系的方法:

  • 一个变量(表示为x)被视为预测变量,解释性变量, 或自变量。
  • 另一个变量y表示响应,结果, 或因变量。

基本上,我们尝试使用现有数据形成方程y = wx +b

  • x是您的COL_A
  • y是您的COL_B
  • w是权重的向量,我们将使用Grdient Descent
  • 之类的算法找到权重
  • b是偏差项

使用scikit-learn的实现:

from sklearn.linear_model import LinearRegression

lr = LinearRegression()

lr.fit(df['COL_A'].values.reshape(-1,1), df['COL_B'])

new_x = 80 

new_y = x*lr.coef_[0]+lr.intercept_
print(new_y)

输出:

99.6

如果必须要预测其值的数组,则可以使用predict方法。请参阅documentation

答案 1 :(得分:1)

绘制数据时,它看起来几乎类似于二次方。

import matplotlib.pyplot as plt
plt.plot(df["COL_A"], df["COL_B"])
plt.xlabel("COL_A")
plt.ylabel("COL_B")
plt.show()

我们可以使用2次多项式回归。多项式回归是线性回归的特殊情况。

from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression

X = df["COL_A"].values
y = df["COL_B"].values
X = X.reshape(-1, 1)
poly = PolynomialFeatures(degree=2)
poly_data = poly.fit_transform(X)
model = LinearRegression()
model.fit(poly_data,y)
coef = model.coef_
intercept = model.intercept_

y =截距+ coef [1] * x + coef [2] * x * x

在绘制模型预测后,可以观察到二次比直线好。通过在多项式回归中使用更高的阶数可以获得更好的模型

plt.scatter(X,y,color='red')
plt.plot(X,model.predict(poly.fit_transform(X)),color='blue')
plt.legend(['Prediction','Original'])
plt.show()