Python数据清洗与股票价格预测:线性回归、CNN和深度学习/n/n## 数据清洗/n/n在进行任何机器学习任务之前,数据清洗都是至关重要的第一步。以下是如何使用Python Pandas库进行数据清洗的示例:/n/npython/nimport pandas as pd/n/n# 读取数据/ndata = pd.read_excel('E:/pythonProject5/深度学习/新建 XLS 工作表.xls')/n/n# 打印数据的列名/nprint(data.columns)/n/n# 删除缺失值/ndata.dropna(inplace=True)/n/n# 删除重复值/ndata.drop_duplicates(inplace=True)/n/n# 处理异常值/ndata = data[(data['涨跌幅'] >= -10) & (data['涨跌幅'] <= 10)]/n/n# 数据归一化/n# 最小-最大规范化/ndef min_max_scale(data):/n return (data - data.min()) / (data.max() - data.min())/n/n# 对数据进行归一化/ndata['涨跌幅'] = min_max_scale(data['涨跌幅'])/n/n/n# Z-score规范化/ndef z_score_scale(data):/n return (data - data.mean()) / data.std()/n/n# 对数据进行归一化/ndata['涨跌幅'] = z_score_scale(data['涨跌幅'])/n/n# 数据标准化/n/nfrom scipy.stats import boxcox/n/n# Box-Cox变换/n# 需要保证数据为正数,如果数据中存在负数,则需要先进行平移操作/ndata['涨跌幅'] = data['涨跌幅'] - data['涨跌幅'].min() + 1/ndata['涨跌幅'], _ = boxcox(data['涨跌幅'])/n/n# 对数据进行标准化/ndata['涨跌幅'] = z_score_scale(data['涨跌幅'])/n/n/nfrom scipy.stats import yeojohnson/n/n/n# Yeo-Johnson变换/n# 需要保证数据为正数,如果数据中存在负数,则需要先进行平移操作/ndata['涨跌幅'] = data['涨跌幅'] - data['涨跌幅'].min() + 1/ndata['涨跌幅'], _ = yeojohnson(data['涨跌幅'])/n/n# 对数据进行标准化/ndata['涨跌幅'] = z_score_scale(data['涨跌幅'])/n/n/n## 股票价格预测/n/n### 线性回归模型/n/n线性回归是一种简单而有效的预测模型,可以用来建立股票价格与其他因素之间的关系。以下是如何使用Python Scikit-learn库实现线性回归模型的示例:/n/npython/nimport pandas as pd/nfrom sklearn.model_selection import train_test_split/nfrom sklearn.linear_model import LinearRegression/nfrom sklearn.metrics import mean_squared_error/n/n# 读取数据集/ndata = pd.read_excel('E:/pythonProject5/深度学习/新建 XLS 工作表.xls')/n/n# 选择特征和目标变量/nfeatures = data[['开盘', '涨跌额', '涨跌幅', '最低', '最高', '成交量', '成交金额']]/ntarget = data['收盘']/n/n# 划分训练集和测试集/nX_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2, random_state=42)/n/n# 训练模型/nmodel = LinearRegression()/nmodel.fit(X_train, y_train)/n/n# 预测股票价格/npredictions = model.predict(X_test)/n/n# 对比实际价格进行验证/nmse = mean_squared_error(y_test, predictions)/nprint('均方误差(MSE):', mse)/n/n# 输出预测结果和实际价格/nresult = pd.DataFrame({'预测价格': predictions, '实际价格': y_test})/nprint(result)/n/n/n### CNN模型/n/n卷积神经网络 (CNN) 在图像识别等领域取得了巨大成功,并且可以应用于时间序列数据(例如股票价格)以进行预测。 以下是如何使用 Python Keras 库实现 CNN 模型的示例:/n/npython/nimport pandas as pd/nimport numpy as np/nfrom tensorflow.keras.models import Sequential/nfrom tensorflow.keras.layers import Dense, Conv1D, MaxPooling1D, Flatten/n/n# 读取Excel数据/ndata = pd.read_excel('E:/pythonProject5/深度学习/新建 XLS 工作表.xls')/n/n# 提取股票价格列/nprices = data['收盘'].values/n/n# 数据归一化/nscaler = MinMaxScaler(feature_range=(0, 1))/nscaled_prices = scaler.fit_transform(prices.reshape(-1, 1))/n/n# 创建训练集和测试集/ntrain_size = int(len(scaled_prices) * 0.8)/ntrain_data = scaled_prices[:train_size]/ntest_data = scaled_prices[train_size:]/n/n# 构建时间序列数据/ndef create_sequences(data, seq_length):/n X = []/n y = []/n for i in range(len(data)-seq_length):/n X.append(data[i:i+seq_length])/n y.append(data[i+seq_length])/n return np.array(X), np.array(y)/n/nseq_length = 10/nX_train, y_train = create_sequences(train_data, seq_length)/nX_test, y_test = create_sequences(test_data, seq_length)/n/n# 构建卷积神经网络模型/nmodel = Sequential()/nmodel.add(Conv1D(filters=64, kernel_size=3, activation='relu', input_shape=(seq_length, 1)))/nmodel.add(MaxPooling1D(pool_size=2))/nmodel.add(Flatten())/nmodel.add(Dense(50, activation='relu'))/nmodel.add(Dense(1))/n/n# 编译模型/nmodel.compile(optimizer='adam', loss='mse')/n/n# 训练模型/nmodel.fit(X_train, y_train, epochs=50, batch_size=16)/n/n# 使用模型进行预测/npredicted_prices = model.predict(X_test)/n/n# 反归一化/npredicted_prices = scaler.inverse_transform(predicted_prices)/n/n# 打印预测结果/nfor i in range(len(predicted_prices)):/n print('Predicted:', predicted_prices[i], 'Actual:', test_data[i+seq_length])/n/n/n## 模型评估/n/n为了评估模型的性能,我们可以使用各种指标,例如均方误差 (MSE)。 我们还可以使用 Matplotlib 库可视化预测结果和实际价格。/n/npython/nimport matplotlib.pyplot as plt/n/nplt.rcParams['font.sans-serif'] = ['SimHei'] # 指定使用SimHei字体/nplt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题/n/n# 绘制预测价格和实际价格的图像/nplt.plot(result.index, result['预测价格'], label='预测价格')/nplt.plot(result.index, result['实际价格'], label='实际价格')/nplt.xlabel('样本编号')/nplt.ylabel('股票价格')/nplt.title('预测价格 vs 实际价格')/nplt.legend()/nplt.show()/n/n/n## 结论/n/n数据清洗和特征工程对于构建准确的股票价格预测模型至关重要。 线性回归是一种简单而有效的模型,而 CNN 更复杂,可以捕获数据中的非线性模式。 通过使用 Python 中提供的丰富库,我们可以轻松地实现和评估这些模型。/n

Python数据清洗与股票价格预测:线性回归、CNN和深度学习

原文地址: https://www.cveoy.top/t/topic/f4ej 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录