วิธีการสร้างอัลกอริทึมทำนายอนาคตโดยใช้ PYTHON
Tags: predictionsfuture, python, mdt, mediakmutt
Published: 2023-04-09 01:17:58

ถ้าเราต้องการจะทำนายสิ่งต่าง ๆ ในอนาคต อาทิเช่น การทํานายอนาคตของโควิด ราคาหุ้น ราคา bitcoin และผลกําไรทางธุรกิจของคุณ ซึ่งในวันนี้กระผมจะมาแนะนำวิธีในการสร้างอัลกอริทึมสำหรับใช้ในการทำนายอนาคตโดยใช้ PYTHON กันครับ

บทความนี้ เราจะมาดูการสร้างอัลกอริทึมสำหรับใช้ในการทำนายอนาคตใน Python กัน ซึ่งกระผมได้ใช้ Google Colab ในการรันชุดคำสั่งต่าง ๆ 

ซึ่ง Dataset ที่กระผมได้นำมาใช้เป็นตัวอย่าง คือ ข้อมูลสถิติราคาตลาดหุ้นย้อนหลังจาก Yahoo! Finance

โดยทางกระผมจะมีวิธีการและขั้นตอนในการสร้างอัลกอริทึมสำหรับใช้ในการทำนายสิ่ง ๆ ซึ่งในวันนี้ตัวอย่างที่จะนำมาเป็นสิ่งที่ใช้ในการทำนาย คือ การคาดการณ์แนวโน้มของราคาตลาดหุ้นในอนาคต

**ซึ่งจะมีวิธีการและขั้นตอนในการสร้างอัลกอริทึม ดังต่อไปนี้ครับ**

## ขั้นตอนที่ 1 ติดตั้งไลบรารี
ก่อนอื่นต้องติดตั้งไลบรารี pystan ที่ช่วยให้เรียกใช้ไลบรารี fbprophet ได้อย่างง่ายดาย ซึ่งสามารถติดตั้งไลบรารี pystan โดยใช้

```
!pip install pystan
```

จากนั้นคุณสามารถติดตั้งไลบรารี fbpropeht โดยใช้คําสั่งต่อไปนี้

```
!pip install fbprophet
or
conda install -c conda-forge fbprophet
```

จากนั้นเราจะใช้ไลบรารี yfinance เพื่อดึงข้อมูลราคาหุ้น

```
!pip install yfinance
```
ในที่สุดเราต้องติดตั้งไลบรารี plotly และ pandas เพื่อทํางานกับข้อมูลในอดีตที่ได้ดึงมาและพล็อตมัน

```
!pip install plotly==4.4.1
!pip install pandas==1.3.4
```

## ขั้นตอนที่ 2 นำเข้าไลบรารี
ให้นําเข้าไลบรารีที่เราเพิ่งติดตั้งไปในขั้นตอนที่ 1 โดยใช้ชุดคำสั่งต่อไปนี้

```
import pandas as pd
from fbprophet import Prophet
import yfinance as yf
import plotly
import warnings

warnings.simplefilter('ignore')

def enable_plotly_in_cell():
    ''' Use this function in each cell to show plot in Google Colaboratory.'''
    import IPython
    from plotly.offline import init_notebook_mode
    display(IPython.core.display.HTML('''<script src="/static/components/requirejs/require.js"></script>'''))
    init_notebook_mode(connected=False)


get_ipython().events.register('pre_run_cell', enable_plotly_in_cell)
```

## ขั้นตอนที่ 3 ดาวน์โหลดข้อมูลข้อมูลสถิติราคาตลาดหุ้นย้อนหลังจาก Yahoo! Finance
ใช้ yahoo finance API เพื่อติดตั้งข้อมูลในอดีต แต่คุณสามารถดึงข้อมูลจากที่ใดก็ได้ นอกจากนี้ฉันได้กําหนดเวลาทํานายเป็น 3 ปี โดยใช้ชุดคำสั่งต่อไปนี้

```
COMPANY = "RELIANCE"
prediction_time = "1Y"
temp = yf.download(f'{COMPANY}.NS', end="2022-01-01") 
temp.tail()
```
ผลของตารางที่ได้

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/it9nbrj3n46e1sh6okol.png)

## ขั้นตอนที่ 4 จัดรูปแบบข้อมูลประวัติสําหรับไลบรารี fbprophet
สร้างกรอบข้อมูลใหม่และกําหนดคอลัมน์วันที่เป็น ds และปิดค่าเป็น y สิ่งนี้สําคัญมากเนื่องจากชื่อคอลัมน์ต้องเป็น ds และ y เนื่องจาก fbprophet จะมองหาคอลัมน์เหล่านี้
df['ds'] —> คอลัมน์ของวันที่
df['y'] —> คุณค่าทางประวัติศาสตร์ที่คุณต้องป้อนให้กับโมเดล
สามารถจัดรูปแบบข้อมูลประวัติสําหรับไลบรารี fbprophet โดยใช้ชุดคำสั่งต่อไปนี้

```
df = pd.DataFrame()
df['ds'] = temp.index.get_level_values('Date')
df['y'] = temp['Close'].values
```
## ขั้นตอนที่ 5 ฝึก (train) โมเดลของอัลกอริทึม
ฝึก (train) โมเดลของอัลกอริทึมโดยทั่วไปหมายถึงการป้อนข้อมูลในอดีตและแบบจําลองจะฝึกให้ป้อนข้อมูลทีละรายการและลดการสูญเสีย การสูญเสียเป็นตัวเลขที่แสดงถึงความเลวร้ายของแบบจําลองคือการคาดการณ์ข้อมูลที่กําหนด ยิ่งจํานวนการสูญเสียน้อยเท่าไหร่โมเดลของอัลกอริทึมของคุณก็จะยิ่งดีขึ้นเท่านั้น โดยใช้ชุดคำสั่งต่อไปนี้

```
m=Prophet()
model = m.fit(df)
```

## ขั้นตอนที่ 6 คาดการณ์ผลในอนาคต
ใช้แบบจําลองที่ผ่านการฝึก (train) โมเดลของอัลกอริทึมก่อนหน้านี้และคาดการณ์ผลลัพธ์ที่เป็นไปได้ในอนาคต โดยใช้ชุดคำสั่งต่อไปนี้

```
future = m.make_future_dataframe(periods=int(prediction_time[:-1]),freq=prediction_time[-1])
forecast = m.predict(future)
forecast.tail()
```
ผลของตารางที่ได้

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y7ongjt6qt1qzdp4y6ja.png)

## ขั้นตอนที่ 7 พล็อตการคาดการณ์
ที่จริงแล้วเราได้ทํานายอนาคตได้สําเร็จ แต่เพื่อวัตถุประสงค์ในการวิเคราะห์มันเป็นวิธีปฏิบัติที่ดีในการแสดงภาพโดยใช้กราฟ สามารถพล็อตการคาดการณ์ดังกล่าวโดยใช้ชุดคำสั่งต่อไปนี้

```
forecast.tail()
```
ผลของพล็อตที่ได้

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/62haa0cc5vftz4j7h5wl.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2tfs6w8gtt0fd90iv3fn.png)

## ผลของการคาดการณ์นี้แสดงถึงอะไร?
- บนแกน y คุณสามารถดูราคาหุ้นและบนแกน x คุณสามารถดูวันที่ได้ 
- เส้นสีดํา คือ ราคาจริง
- ช่วงที่คาดการณ์ไว้คือเส้นสีเขียวและสีน้ําเงิน ซึ่งหมายความว่าราคาหุ้นจะอยู่ระหว่างเส้นสีเขียวและสีน้ําเงิน
- เส้นสีแดง แสดงแนวโน้มและในตัวอย่างนี้แนวโน้มจะปรากฏขึ้นอย่างชัดเจนในอีก 3 ปีข้างหน้า

## สรุปผล
จากการสร้างอัลกอริทึมจะทำให้เราได้ว่า ถ้าต้องการสร้างอัลกอริทึมเพื่อทำนายอนาคตสิ่งต่าง ๆ ในอนาคตได้นั้น สิ่งหนึ่งที่สำคัญที่สุดที่จะทำให้อัลกอริทึมที่เราสร้างขึ้นนั้นสามารถทำนายอนาคตได้นั้น คือ สถิติของข้อมูลย้อนหลัง ที่จะเป็นสิ่งสำคัญที่ช่วยทำให้อัลกอริทึมของเรานั้นสามารถทำนายผลต่าง ๆ ล่วงหน้าได้ผ่านปัญญาประดิษฐ์ (AI) ที่อยู่ในชุดคำสั่ง PYTHON ของอัลกอริทึมดังกล่าวที่กระผมได้จัดสร้างขึ้นในข้างต้นได้เป็นอย่างดีและเกิดประโยชน์สูงสุดในอนาคตครับผม

> **ขอแสดงความยินดี!!!!! 
> กับทุกท่านที่สามารถสร้างอัลกอริทึมตามกระผม
> ได้อย่างประสบความสำเร็จครับผม 😍🙏🎉❤️✨️**

_แหล่งอ้างอิง (References)_
[_https://dev.to/yash_makan/how-to-predict-future-using-python--3i39_](https://dev.to/yash_makan/how-to-predict-future-using-python--3i39)