เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การสร้างฟีเจอร์จากข้อมูลปริมาณการซื้อขาย

เราจะใช้โมเดลแบบ non-linear เพื่อให้การทำนายแม่นยำยิ่งขึ้น โมเดลเชิงเส้น (linear model) กำหนดให้ฟีเจอร์มีความสัมพันธ์เชิงเส้นกับ target เท่านั้น แต่โมเดล machine learning ประเภทอื่นสามารถนำฟีเจอร์มารวมกันในรูปแบบ non-linear ได้ ตัวอย่างเช่น ราคาอาจปรับตัวขึ้นเมื่อค่าเฉลี่ยเคลื่อนที่ของราคามีแนวโน้มขึ้น ขณะที่ค่าเฉลี่ยเคลื่อนที่ของปริมาณการซื้อขายมีแนวโน้มลง วิธีเดียวที่จะจับปฏิสัมพันธ์เหล่านี้ได้คือการคูณฟีเจอร์เข้าด้วยกัน หรือใช้อัลกอริทึม machine learning ที่รองรับความสัมพันธ์แบบ non-linear (เช่น random forests)

เพื่อเพิ่มข้อมูลที่อาจมีปฏิสัมพันธ์กับฟีเจอร์อื่น เราสามารถเพิ่มฟีเจอร์ที่มีความสัมพันธ์ต่ำเข้าไปได้ โดยเริ่มจากข้อมูลปริมาณการซื้อขาย (volume) ซึ่งอยู่ใน lng_df ในคอลัมน์ Adj_Volume

ก่อนเริ่มต้น ให้จำไว้ว่าฟังก์ชันของ TA-Lib (เช่น SMA()) ต้องรับ Numpy array เท่านั้น ไม่ใช่ pandas object สามารถใช้ attribute .values ของ pandas Series หรือ DataFrame เพื่อแปลงเป็น Numpy array ได้

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Machine Learning สำหรับการเงินด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • สร้างค่าเปอร์เซ็นต์การเปลี่ยนแปลงของปริมาณการซื้อขายแบบ 1 วัน (ใช้ pct_change() จาก pandas) แล้วกำหนดค่าไปยังคอลัมน์ Adj_Volume_1d_change ใน lng_df
  • สร้างค่าเฉลี่ยเคลื่อนที่ 5 วันของเปอร์เซ็นต์การเปลี่ยนแปลงรายวันของปริมาณการซื้อขาย แล้วกำหนดค่าไปยังคอลัมน์ Adj_Volume_1d_change_SMA ใน lng_df
  • พล็อต histogram ของฟีเจอร์ใหม่ทั้งสองที่สร้างขึ้น โดยใช้ลิสต์ new_features

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Create 2 new volume features, 1-day % change and 5-day SMA of the % change
new_features = ['Adj_Volume_1d_change', 'Adj_Volume_1d_change_SMA']
feature_names.extend(new_features)
lng_df[____] = lng_df['Adj_Volume'].____
lng_df[____] = talib.SMA(____[____].____,
                        timeperiod=____)

# Plot histogram of volume % change data
lng_df[____].plot(kind='hist', sharex=False, bins=50)
plt.show()
แก้ไขและรันโค้ด