สวัสดีครับทุกคน บทความนี้เป็นการทำ Regression อีกแล้วนะครับ หลายๆคนที่เคยทำ Regression มาก่อน (อาจจะเคยตามอ่านบทความของผมมา) คงจะสงสัยว่าการทำ Regression มันเอาไว้ประมาณค่าหนิ อย่างค่า x เท่านี้จะได้ค่า y เท่าไรไม่ใช่หรอ แล้วเราจะเอามันมาจำแนกประเภทข้อมูลได้ยังไง?

แต่สำหรับใครที่ยังไม่ทราบว่าอะไรคือการทำ Regression สามารถย้อนไปอ่านบทความเก่าๆของผมได้ครับ

Machine Learning ด้วย Python : ทำ Linear Regression กับ scipy
สวัสดีครับทุกท่าน สำหรับบล็อกนี้ขอเล่าที่มาก่อนนิดนึง ถ้าขี้เกียจอ่านข้ามไปได้เลยนะครับ
Machine Learning ด้วย Python : ทำ Regression ที่ไม่เป็นเส้นตรง
ในบทความที่แล้วผมเขียนถึงวิธีการทำ Linear Regression ซึ่งก็คือการสร้างสมการเส้นตรงสำหรับชุดข้อมูลชุดนึงขึ้นมา…
Machine Learning ด้วย Python : การทำ Regression แบบหลายตัวแปร
สวัสดีครับ สำหรับบทความนี้บทความที่ต่อจาก 2 บทความที่แล้วที่ผมเขียนไว้ในรอบที่แล้ว ซึ่งเป็นการทำ Regression…

ในบทความนี้ผมขอยกข้อมูล datasets มาจากชุดข้อมูลที่ผมเคยใช้มาแล้วตอนทำ Decision Tree จากบทความนี้ครับ

Machine Learning ด้วย Python : การทำ Decision Tree เพื่อช่วยในการตัดสินในด้วย scikit-learn
สวัสดีครับทุกท่าน สำหรับบทความนี้เป็นการทำ Decision Tree ด้วย scikit-learn ครับ ซึ่งเจ้า Decision Tree…

ทฤษฎี

ก่อนที่จะมาเริ่มเขียนโปรแกรมผมขอเล่าเกี่ยวกับทฤษฎีเบื้องหลังมันก่อนคร่าวๆ สำหรับใครที่เคยทำ Regression มาก่อนแล้วอาจจะทราบครับว่าสิ่งที่มันทำคือการสร้างสมการขึ้นมาสมการนึง ซึ่งเป็น function ทางคณิตศาสตร์ที่คำนวณสิ่งที่เราต้องการได้

สำหรับการทำ Logistic Regression ก็เหมือนกันครับ โดยสมการกราฟที่มันจะสร้างขึ้นมาให้เราจะมีหน้าตาประมาณนี้ (ขวา)

ซึ่งการสร้างกราฟขึ้นมาตัวมันเองจะสร้างกราฟโดยพยายาม fit ชุดข้อมูลของเราให้เข้ากับ sigmoid function ซึ่งการที่เราจะประมาณค่าได้ซักค่านึงเราจะสามารถทำได้ด้วยการเอาค่า x ป้อนไปในฟังค์ชัน หาค่าของมันถ้ามากกว่า 0.5 ก็จะจัดเป็นหมดนึง ต่ำกว่าก็จะจัดเป็นอีกหมวด

แต่ Logistic Regression สามารถทำได้มากกว่าแค่แบ่งประเภทของสิ่งของแค่ 2 สิ่งเหมือนกันนะครับ เบื้องหลังของมันทำยังไงนั้นสามารถอ่านเพิ่มได้ที่

Logistic regression
Logistic Regression is a statistical approach which is used for the classification problems. In statistics, the…

เขียนโค้ดกันดีกว่า

เราสามารถสร้าง model logistic regression ได้ง่ายๆด้วยโค้ดเพียงแค่บรรทัดเดียวเท่านั้นครับ

ก่อนอื่นผมจะขอเริ่มเตรียมข้อมูลก่อน ซึ่งการเตรียมข้อมูลจะขอยกมาจากบทความที่ผมบอกไว้ข้างบน (ในบทความ Decision Tree)import numpy as np
import pandas as pd
from sklearn import treeinput_file = “running.csv”
df = pd.read_csv(input_file, header = 0)d = {‘Y’: 1, ’N’: 0}
df[‘go out?’] = df[‘go out?’].map(d)
df[‘is raining’] = df[‘is raining’].map(d)
df[‘is hot’] = df[‘is hot’].map(d)
df[‘sick?’] = df[‘sick?’].map(d)
df[‘work’] = df[‘work’].map(d)
df[‘stadium close’] = df[‘stadium close’].map(d)y = df[“go out?”]
X = df[[‘is raining’,
‘is hot’,
‘sick?’,
‘work’,
‘stadium close’,
‘last time go out(day)’]]

เมื่อเตรียมข้อมูลเสร็จแล้วเราสามารถสร้างโมเดลได้ตามข้างล่างนี้from sklearn.linear_model import LogisticRegressionclf = LogisticRegression().fit(X, y)

การจะให้มันทำงานก็ใช้คำสั่งเดียวกับ model อื่นๆclf.predict([[0, 1, 1, 1, 1, 2]])

ผลที่ได้จากการทำงานของมันสำหรับคือ 0 แปลว่าไม่ครับ