DEV Community

Visit Manomaivisit
Visit Manomaivisit

Posted on

การแสดง Multiple Linear Regression เป็นกราฟ 3 มิติ โดยใช้ Python

ในการที่เราจะทำการคาดคะเนหรือทำนายของยอดขายของสินค้าเราจำเป็นต้องมีการนำตัวแปรหลายตัว เช่น ราคาสินค้า,ปริมาณการลงโฆษณา ที่มีผลต่อการยอดขายสินค้า ซึ่งหนึ่งในวิธีในการที่จะใช้ในการทำนายข้อมูลแบบนี้คือ Multiple Linear Regression

Multiple Linear Regression (MLR) คือ สมการเชิงเส้นที่มีตัวแปรอิสระหรือตัวแปร X มากกว่า 1 ตัวมาเป็นตัวกำหนดตัวแปรตามหรือค่า Y โดยมีสมการในการคำนวณดังนี้

Image description

  • Y คือ ตัวแปรตาม
  • X คือ ตัวแปรอิสระ
  • β คือ พารามิเตอร์
  • ε คือ ความคลาดเคลื่อน

Multiple Linear Regression นั้นสามารถใช้งานได้ในการ วิเคราะห์ความสัมพันธ์ การทำนายหรือการหาค่าคงที่

ซึ่งในบทความนี้เราจะใช้ Multiple Linear Regression ใน Python ซึ่งจะทำทั้งหมดนี้ใน Google Colab และในส่วนของ Dataset จะเป็นการกำหนดขึ้นมาเอง

ขั้นตอนการทำ
ขั้นที่ 1 : นำเข้า libraries ที่ต้องการใช้ทั้งหมดลงใน Google Colab
โดยตัวแปร x กับ y จะใช้ในการสร้าง

import numpy as np
X= [[160,100],[179,189],[175,321],[190,320],[195,480],[185,185],[179,149],[200,150],[189,350],[221,240],[235,120],[269,280],[259,345],[269,135],[279,378]]
Y= [0.80,1.50,2.22,1.68,1.85,1.45,0.90,0.60,1.85,1.30,0.55,1.06,1.33,0.64,1.23]
Enter fullscreen mode Exit fullscreen mode

ขั้นที่ 2 : _ทำการเตรียมข้อมูลให้อยู่ในรูปแบบ DataFrame เพื่อนำมาใช้ในการสร้างโมเดล _

import pandas as pd
df2=pd.DataFrame(X,columns=['Price','AdSpends'])
df2['Sales']=pd.Series(Y)
df2
Enter fullscreen mode Exit fullscreen mode

ขั้นที่ 3 : สร้างและประมวลผลโมเดล Multiple Linear Regression โดยใช้ statsmodels และเก็บผลลัพธ์ไว้ในตัวแปร

import matplotlib.pyplot as plt
import statsmodels.formula.api as smf
model = smf.ols(formula='Sales ~ Price + AdSpends', data=df2)
results_formula = model.fit()
results_formula.params

Enter fullscreen mode Exit fullscreen mode

ขั้นที่ 4 : เตรียมข้อมูลเพื่อนำไปใช้ในการพล็อตกราฟ

x_surf, y_surf = np.meshgrid(np.linspace(df2.Price.min(), df2.Price.max(), 100),np.linspace(df2.AdSpends.min(), df2.AdSpends.max(), 100))
onlyX = pd.DataFrame({'Price': x_surf.ravel(), 'AdSpends': y_surf.ravel()})
fittedY=results_formula.predict(exog=onlyX)
Enter fullscreen mode Exit fullscreen mode

ขั้นที่ 5 : แปลงผลลัพธ์ที่ได้มาเป็นอาร์เรย์

fittedY=np.array(fittedY)
Enter fullscreen mode Exit fullscreen mode

ขั้นที่ 6 : ทำการพล็อตกราฟ 3 มิติเพื่อแสดงการกระจายของข้อมูลตัวแปรอิสระ และผลลัพธ์ที่ทำนายได้ โดยอยู่แสดงออกมาเป็นภาพของภาพสี่เหลี่ยมสีฟ้า

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(df2['Price'],df2['AdSpends'],df2['Sales'],c='red', marker='o', alpha=0.3)
ax.plot_surface(x_surf,y_surf,fittedY.reshape(x_surf.shape), color='b', alpha=0.4)
ax.set_xlabel('Price')
ax.set_ylabel('AdSpends')
ax.set_zlabel('Sales')
plt.show()
Enter fullscreen mode Exit fullscreen mode

เพิ่มเติม หากคุณต้องจะกำหนดขนาดของพื้นที่กราฟให้คำการเพิ่ม Code
fig = plt.figure(figsize=(n,n)) แทนตัวของ fig = plt.figure()

Image description

สรุปผล
ถ้าหากเราต้องการที่จะทำการคาดคะเนตัวแปรใดตัวแปรหนึ่ง โดยที่ตัวแปรนั้นๆมีความเกี่ยวข้องกับตัวแปรอื่นๆกันให้อยู่ในรูปของกราฟ 3 มิติเพื่อใช้ในการระบุข้อมูลต่างๆนั้นสามารถใช้ Multiple Linear Regression ในการช่วยคำนวณได้

Top comments (0)