หมายเหตุ !
การทำนายในบทความนี้ เป็นเพียงตัวอย่างที่ผู้เขียนหยิบยกขึ้นมาเพื่อให้เข้าใจการสร้าง Machine learning ด้วย Scikit-learn ใน Python เท่านั้น ซึ่งไม่มีความแม่นยำเท่าไร (ไม่มีการรับประกัน % ความถูกต้องในการทำนาย) เนื่องจากการทำนายจำนวนประชากรต้องมีรายละเอียดปลีกย่อยเข้ามาช่วยคำนวณด้วยมากกว่านี้ แต่ในบทความนี้หยิบยกเพียงข้อมูลจำนวนประชากรมาใช้ในการเขียนบทความนี้
ในบทความนี้เราจะไปสร้าง machine learning ทำนายจำนวนประชากรของไทย แบบง่าย ๆ กันครับ
จากบทความก่อน ๆ Machine Learning ด้วย Scikit-learn ผมพาผู้อ่านใช้ Iris dataset สร้าง Machine learning ด้วย Scikit-learn ใน Python แบบง่าย ๆ แต่ถ้าหากต้องการนำ dataset ที่สร้างเองมาใช้ใน Scikit-learn ต้องทำอย่างไร เราไปลองสร้าง Machine learning จาก dataset ของตัวเองกันครับ
สร้าง dataset ข้อมูลประชากร
เข้าไปที่ http://countrymeters.info/en/Thailand จะเจอ

จะเห็นได้ว่า ข้อมูลมีตั้งแต่ปี ค.ศ.1951 - ค.ศ.2017 โดยข้อมูลจะถูกนับในเดือนมกราคมของปีนั้น
ทำการคัดลอกช่อง Population มา แล้วจับใส่
list
ในโค้ด Pythonดูโค้ดได้ที่ https://gist.github.com/wannaphong/2269f8d9a032ab8cd9836890045c0343
มีทั้งหมด 67 บรรทัด
นำเข้า dataset เข้ามาใช้ใน Scikit-learn
เนื่องจากข้อมูลเรียงเป็นปี ในการเอาไปใช้ใน
Scikit-learn
เราต้องแปลงข้อมูลโดยจัดเรียงตามเวลาต้องใช้ pandas
กับ numpy
เข้ามาช่วยด้วย และใช้ matplotlib
ในการนำเสนอข้อมูลในรูปกราฟคำสั่งควรรู้เกี่ยวกับ pandas
pandas.date_range(เวลา,periods=จำนวน,freq=ความถี่)
เป็นคำสั่งสำหรับสร้างช่วงเวลาจะได้ไม่ต้องมาไล่พิมพ์ข้อมูลเวลาวันเดือนปี - อ่านเพิ่มเติม http://pandas.pydata.org/pandas-docs/stable/generated/pandas.date_range.htmlpandas.DataFrame()
ใช้สร้างข้อมูลแต่ละช่วงเวลา - อ่านเพิ่มเติม http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.htmlดูโค้ดได้ที่ https://gist.github.com/wannaphong/f4c3ba45981188ed2f4ff9ace749aef3

เลือก Algorithms ที่ใช้งาน
จาก

from sklearn.linear_model import LinearRegression
model = LinearRegression()
ลงมือทำการทำนายข้อมูลประชากรด้วย Scikit-learn ในภาษา Python
X = data[['date_ordinal']]
y =np.asarray(data['value'])
model.fit(X, y) # ทำการวิเคราะห์
แล้วทำการทำนาย ลองทำนายจำนวนประชากรปี ค.ศ.2018
# ทำนายแบบปีเดียว
time2 = pd.date_range('2018', periods=1)
x= time2.tolist()
x=x[0].toordinal()
print(model.predict(x))
ผลลัพธ์
[ 74384505.71644115]
ทำนายว่าในปี ค.ศ.2018 จำนวนประชากรของไทยจะมีจำนวน 74,384,506 คน
ทำนายแบบหลายปีโดยนำเสนอบนกราฟ
ดูโค้ดได้ที่ https://gist.github.com/wannaphong/f74625ec7e02a0c7ff57169ae7e80d7b
ผลลัพธ์

จากการทำนายแบบไม่ละเอียด จะพบว่าในปี ค.ศ.2028 จำนวนประชากรของไทยน่าจะใกล้ 80 ล้านคน
โค้ดฉบับเต็ม
หากไม่ขึ้น กดดูโค้ดฉบับเต็มได้ที่ https://gist.github.com/wannaphong/e265b8d01e4ed7fe1e3aa6481adeb1a6
ลองนำความรู้ที่ได้ไปประยุกต์กันดูนะครับ
สอน Python
ติดตามบทตวามต่อไปนะครับ
ขอบคุณครับ
0 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)