我有两列的熊猫数据框。
COL_A = 24.38
例如,在此数据帧中,如果COL_B=95.83
则COL_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
}
}
。
答案 0 :(得分:2)
从这个问题看来,Simple Linear Regression
就是您要寻找的东西。
简单线性回归是一种使我们能够总结和研究两个连续(定量)变量之间的关系的方法:
基本上,我们尝试使用现有数据形成方程y = wx +b
COL_A
COL_B
Grdient Descent
使用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()