[英]Find relationship function between two columns in pandas
我有一個包含2列的pandas 數據幀 。
|COL_A | COL_B |
|------|-------|
|24.38 | 95.83 |
|36.15 | 96.99 |
|37.90 | 98.13 |
|41.14 | 98.75 |
|63.45 | 98.77 |
|74.95 | 99.04 |
|77.15 | 99.30 |
例如,在此數據COL_A = 24.38
,如果COL_A = 24.38
則COL_B=95.83
並且如下所示。
我想要做的是找到兩列之間的關系,如果COL_A=80
那么COL_B=?
。
從問題來看,似乎Simple Linear Regression
就是您正在尋找的。
簡單線性回歸是一種允許我們總結和研究兩個連續(定量)變量之間關系的方法:
基本上我們嘗試使用現有數據形成方程y = wx +b
COL_A
COL_B
Grdient Descent
這樣的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
方法可用。 參考文檔
繪制數據時,它看起來幾乎類似於二次方。
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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.