Python数据清洗和股票价格预测:线性回归与深度学习这篇文章将介绍如何使用Python进行数据清洗,并使用线性回归和深度学习模型预测股票价格。### 1. 数据清洗数据清洗是数据分析中至关重要的一步,它可以帮助我们处理缺失值、删除重复值和异常值,从而提高数据的质量。pythonimport pandas as pd# 读取数据data = pd.read_excel('E:/pythonProject5/深度学习/新建 XLS 工作表.xls')# 打印数据的列名print(data.columns)# 删除缺失值data.dropna(inplace=True)# 删除重复值data.drop_duplicates(inplace=True)# 处理异常值data = data[(data['涨跌幅'] >= -10) & (data['涨跌幅'] <= 10)]代码解释:- 使用pandas库读取Excel文件中的数据。- 使用dropna()方法删除缺失值。- 使用drop_duplicates()方法删除重复值。- 通过设定条件筛选数据,去除异常值。### 2. 数据归一化和标准化数据归一化和标准化可以将数据缩放到相同的范围,提高模型的性能。python# 数据归一化# 最小-最大规范化def min_max_scale(data): return (data - data.min()) / (data.max() - data.min())# 对数据进行归一化data['涨跌幅'] = min_max_scale(data['涨跌幅'])# Z-score规范化def z_score_scale(data): return (data - data.mean()) / data.std()# 对数据进行归一化data['涨跌幅'] = z_score_scale(data['涨跌幅'])# 数据标准化from scipy.stats import boxcoxfrom scipy.stats import yeojohnson# Box-Cox变换data['涨跌幅'] = data['涨跌幅'] - data['涨跌幅'].min() + 1data['涨跌幅'], _ = boxcox(data['涨跌幅'])data['涨跌幅'] = z_score_scale(data['涨跌幅'])# Yeo-Johnson变换data['涨跌幅'] = data['涨跌幅'] - data['涨跌幅'].min() + 1data['涨跌幅'], _ = yeojohnson(data['涨跌幅'])data['涨跌幅'] = z_score_scale(data['涨跌幅'])代码解释:- 使用最小-最大规范化和Z-score规范化对数据进行归一化。- 使用Box-Cox变换和Yeo-Johnson变换对数据进行标准化。### 3. 股票价格预测#### 3.1 线性回归模型线性回归是一种简单但有效的预测模型,可以用于预测股票价格。pythonimport pandas as pdfrom sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LinearRegressionfrom sklearn.metrics import mean_squared_error# 读取数据集data = pd.read_excel('E:/pythonProject5/深度学习/新建 XLS 工作表.xls')# 选择特征和目标变量features = data[['开盘', '涨跌额', '涨跌幅', '最低', '最高', '成交量', '成交金额']]target = data['收盘']# 划分训练集和测试集X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2, random_state=42)# 训练模型model = LinearRegression()model.fit(X_train, y_train)# 预测股票价格predictions = model.predict(X_test)# 对比实际价格进行验证mse = mean_squared_error(y_test, predictions)print('均方误差(MSE):', mse)# 输出预测结果和实际价格result = pd.DataFrame({'预测价格': predictions, '实际价格': y_test})print(result)# 可视化预测结果import matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['SimHei'] # 指定使用SimHei字体plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题plt.plot(result.index, result['预测价格'], label='预测价格')plt.plot(result.index, result['实际价格'], label='实际价格')plt.xlabel('样本编号')plt.ylabel('股票价格')plt.title('预测价格 vs 实际价格')plt.legend()plt.show()代码解释:- 使用LinearRegression类创建线性回归模型。- 使用fit()方法训练模型。- 使用predict()方法预测股票价格。- 使用均方误差(MSE)评估模型性能。#### 3.2 卷积神经网络 (CNN) 模型卷积神经网络 (CNN) 是一种强大的深度学习模型,在图像识别和自然语言处理等领域取得了巨大成功,也可以用于股票价格预测。pythonimport pandas as pdimport numpy as npfrom sklearn.preprocessing import MinMaxScalerfrom tensorflow.keras.models import Sequentialfrom tensorflow.keras.layers import Dense, Conv1D, MaxPooling1D, Flatten# 读取Excel数据data = pd.read_excel('E:/pythonProject5/深度学习/新建 XLS 工作表.xls')# 提取股票价格列prices = data['收盘'].values# 数据归一化scaler = MinMaxScaler(feature_range=(0, 1))scaled_prices = scaler.fit_transform(prices.reshape(-1, 1))# 创建训练集和测试集train_size = int(len(scaled_prices) * 0.8)train_data = scaled_prices[:train_size]test_data = scaled_prices[train_size:]# 构建时间序列数据def create_sequences(data, seq_length): X = [] y = [] for i in range(len(data)-seq_length): X.append(data[i:i+seq_length]) y.append(data[i+seq_length]) return np.array(X), np.array(y)seq_length = 10X_train, y_train = create_sequences(train_data, seq_length)X_test, y_test = create_sequences(test_data, seq_length)# 构建卷积神经网络模型model = Sequential()model.add(Conv1D(filters=64, kernel_size=3, activation='relu', input_shape=(seq_length, 1)))model.add(MaxPooling1D(pool_size=2))model.add(Flatten())model.add(Dense(50, activation='relu'))model.add(Dense(1))# 编译模型model.compile(optimizer='adam', loss='mse')# 训练模型model.fit(X_train, y_train, epochs=50, batch_size=16)# 使用模型进行预测predicted_prices = model.predict(X_test)# 反归一化predicted_prices = scaler.inverse_transform(predicted_prices)# 打印预测结果for i in range(len(predicted_prices)): print('Predicted:', predicted_prices[i], 'Actual:', test_data[i+seq_length])代码解释:- 使用Sequential类创建CNN模型。- 添加卷积层 (Conv1D)、池化层 (MaxPooling1D)、Flatten层和全连接层 (Dense)。- 使用compile()方法编译模型,指定优化器和损失函数。- 使用fit()方法训练模型。- 使用predict()方法预测股票价格。### 4. 模型评估可以使用多种指标评估模型性能,例如均方误差(MSE)、平均绝对误差(MAE)和R平方值。### 5. 结论线性回归和卷积神经网络都可以用于股票价格预测。线性回归模型简单易于实现,而CNN模型则更加复杂,但可以捕捉到数据中更复杂的模式。选择哪种模型取决于具体问题的特点和数据的分布情

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

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

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