簡體   English   中英

在pandas中查找兩列之間的關系函數

[英]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.38COL_B=95.83並且如下所示。

我想要做的是找到兩列之間的關系,如果COL_A=80那么COL_B=?

從問題來看,似乎Simple Linear Regression就是您正在尋找的。

簡單線性回歸是一種允許我們總結和研究兩個連續(定量)變量之間關系的方法:

  • 一個變量,表示為x,被視為預測變量,解釋變量或自變量。
  • 另一個變量,表示為y,被視為響應,結果或因變量。

基本上我們嘗試使用現有數據形成方程y = wx +b

  • x是你的COL_A
  • 你是你的COL_B
  • w是我們將使用像Grdient Descent這樣的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方法可用。 參考文檔

繪制數據時,它看起來幾乎類似於二次方。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM