使用 Python 和 Pandas 库构建股票价格预测模型
股票价格预测是机器学习和数据分析中常见的用例。我们可以通过分析股票市场的过去趋势和模式来构建预测未来股票价格的模型,准确度较高。在本课中,我们将了解如何使用 Python 和 pandas 包创建股票价格预测模型。
pandas 库是一个流行的 Python 数据分析包。它包括用于处理结构化数据(如数据框和系列)的综合工具集合。在开发机器学习模型来预测未来股票价值之前,我们将使用 pandas 分析和处理股票数据。
入门
在深入使用 Pandas 库之前,我们首先需要使用 pip 安装该库。但是,由于它不是内置的,因此我们必须首先安装 Pandas 库。这可以使用 pip 包管理器完成。
要安装 Pandas 库,请打开终端并输入以下命令:
pip install pandas
这将下载并安装 pandas 库及其依赖项。安装后,我们可以使用以下语句在 Python 代码中导入 pandas:
import pandas as pd
收集和预处理数据
要创建股票价格预测模型,我们必须首先收集所考虑股票的数据。我们可以从各种来源获取数据,包括 Yahoo Finance、Alpha Vantage 和 Google Finance。在本教程中,我们将使用 Yahoo Finance 收集数据。
我们可以使用 pandas_datareader 包从 Yahoo Finance 收集数据,它提供了一个简单的界面,用于从包括 Yahoo Finance 在内的多个来源收集数据。使用 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 日的 Apple Inc. (AAPL) 股票数据。数据是使用 pandas_datareader DataReader 函数从 Yahoo Finance 获取的。现在我们可以使用 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 模块创建股票价格预测模型。基于历史数据,我们将使用一种称为线性回归的机器学习方法来预测未来的股票价格。
线性回归是一种监督学习技术,它使用一个或多个独立变量来预测因变量的结果。在我们的案例中,因变量是股票价格,而自变量则是从我们之前的股票数据中收集到的众多属性。
# 将数据拆分为训练集和测试集 train_size = int(len(df) * 0.8) train_data, test_data = df[0:train_size], df[train_size:len(df)]
接下来,我们需要定义因变量和自变量。我们的因变量是收盘价,而我们的自变量是我们从历史数据中提取的各种特征。
# 定义因变量和自变量 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 库构建线性回归模型。
# 构建线性回归模型 from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit(X_train, y_train)
现在我们已经在训练数据上训练了线性回归模型。接下来,我们可以使用它来预测测试数据上的股票价格,并使用均方误差(MSE)和均方根误差(RMSE)等各种指标评估其性能。
# 对测试数据进行预测 y_pred = model.predict(X_test) # 评估模型的性能 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 的平方根。 R2 数字是一个指标,表示模型与数据的拟合程度,数字越大表示拟合度越高。
绘制图表
我们还可以使用折线图将预测股价与实际股价进行比较。
# 可视化预测股价与实际股价 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)结合使用时,可用于开发复杂的机器学习模型。
本教程中开发的股价预测模型只是金融领域众多数据科学应用之一。有了数据和分析数据的工具,可能性是无限的。