使用Python和Pandas庫構建股票價格預測模型
股票價格預測是機器學習和資料分析中常見的用例。透過分析股票市場的過去趨勢和模式,我們可以構建能夠以相當高的準確度預測未來股票價格的模型。在本教程中,我們將學習如何使用Python和pandas庫來構建一個股票價格預測模型。
pandas庫是一個流行的Python資料分析庫。它包含了用於處理結構化資料(例如資料框和序列)的全面工具集。我們將使用pandas來分析和操作股票資料,然後構建一個機器學習模型來預測未來的股票價格。
開始
在深入使用Pandas庫之前,我們需要使用pip安裝該庫。由於它不是內建的,因此我們必須先安裝Pandas庫。這可以使用pip包管理器來完成。
要安裝Pandas庫,請開啟您的終端並輸入以下命令:
pip install pandas
這將下載並安裝pandas庫及其依賴項。安裝完成後,我們可以使用以下語句在Python程式碼中匯入pandas:
import pandas as pd
收集和預處理資料
要建立股票價格預測模型,我們首先必須收集所考慮股票的資料。我們可以從各種來源獲取資料,包括雅虎財經、Alpha Vantage和谷歌財經。在本教程中,我們將使用雅虎財經來收集資料。
我們可以使用pandas_datareader庫從雅虎財經收集資料,它提供了一個簡單的介面,用於從多個來源(包括雅虎財經)收集資料。我們可以使用pip安裝pandas_datareader:
pip install pandas_datareader
安裝完成後,我們可以使用以下程式碼來收集特定股票的資料:
import pandas_datareader.data as web start_date = '2010-01-01' end_date = '2021-04-30' stock_symbol = 'AAPL' stock_data = web.DataReader(stock_symbol, 'yahoo', start_date, end_date)
在這段程式碼中,我們正在從2010年1月1日至2021年4月30日收集蘋果公司(AAPL)的股票資料。資料是使用pandas_datareader的DataReader函式從雅虎財經獲取的。現在,我們可以使用stock_data變數來分析和操作資料。
在我們可以使用資料來構建預測模型之前,我們必須首先預處理資料。這包括清理資料、處理缺失值以及將資料轉換為模型可以使用的格式。在本教程中,我們將使用股票的收盤價作為我們的目標變數,並將開盤價、最高價、最低價和成交量作為我們的特徵。
為了開始預處理資料,我們將建立一個只包含所需列的新DataFrame:
df = pd.DataFrame(data=stock_data, columns=['Open', 'High', 'Low', 'Close', 'Volume'])
然後,我們將透過用前一天的值替換它們來處理資料中的任何缺失值:
df.fillna(method='ffill', inplace=True)
最後,我們將向DataFrame新增一個新列,其中包含前一天收盤價的百分比變化:
df['Price_Change'] = df['Close'].pct_change()
構建預測模型
收集和清理資料後,我們可以開始使用Python和pandas庫構建我們的股票價格預測模型。我們將使用一種稱為線性迴歸的機器學習方法,根據歷史資料預測未來的股票價格。
線性迴歸是一種監督學習技術,它使用一個或多個自變數來預測因變數的結果。在本例中,因變數是股票價格,自變數是我們之前從股票資料中提取的多個特徵。
# Split the data into training and testing sets train_size = int(len(df) * 0.8) train_data, test_data = df[0:train_size], df[train_size:len(df)]
接下來,我們需要定義我們的因變數和自變數。我們的因變數是股票收盤價,而我們的自變數是我們從歷史資料中提取的各種特徵。
# Define dependent and independent variables X_train, y_train = train_data.drop(['Close'], axis=1), train_data['Close'] X_test, y_test = test_data.drop(['Close'], axis=1), test_data['Close']
現在我們有了訓練資料和測試資料,我們可以開始使用scikit-learn庫構建我們的線性迴歸模型。
# Build Linear Regression model from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit(X_train, y_train)
我們現在已經使用訓練資料訓練了我們的線性迴歸模型。接下來,我們可以使用它來預測測試資料的股票價格,並使用均方誤差 (MSE) 和均方根誤差 (RMSE) 等各種指標來評估其效能。
# Make predictions on the testing data
y_pred = model.predict(X_test)
# Evaluate the performance of the model
from sklearn.metrics import mean_squared_error, r2_score
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
r2 = r2_score(y_test, y_pred)
print('Mean Squared Error:', mse)
print('Root Mean Squared Error:', rmse)
print('R2 Score:', r2)
上面的程式碼將返回我們模型的各種效能指標。均方誤差 (MSE) 是預測值和實際值之間平均平方差的度量,而RMSE是MSE的平方根。R²值是一個指標,它表示模型擬合數據的程度,數值越高表示擬合越好。
繪製圖表
我們還可以使用折線圖來比較我們預測的股票價格與實際的股票價格。
# Visualize the predicted vs actual stock prices
import matplotlib.pyplot as plt
plt.plot(y_test.index, y_test.values, label='Actual')
plt.plot(y_test.index, y_pred, label='Predicted')
plt.xlabel('Date')
plt.ylabel('Stock Price')
plt.title('Actual vs Predicted Stock Prices')
plt.legend()
plt.show()
上面程式碼的輸出將給我們一個折線圖,顯示基於我們模型的實際股票價格和預測股票價格。
結論
在本教程中,我們學習瞭如何使用Python和pandas庫來建立一個股票價格預測模型。pandas庫是用於資料操作和分析的強大工具,當與scikit-learn等其他庫結合使用時,它可以用來構建複雜的機器學習模型。
在本教程中開發的股票價格預測模型只是金融領域眾多資料科學應用之一。隨著資料的可用性和分析資料的工具的出現,可能性是無限的。
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP