神经网络进行股票预测

27 篇文章 1 订阅
26 篇文章 1 订阅

-- coding: utf-8 --

“”"
@Time : 19-10-1 上午7:32
@Author : lei
@Site :
@File : 神经网络预测股票.py
@Software: PyCharm
“”"

股票预测

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
from sklearn.neural_network import MLPRegressor
from sklearn.metrics import mean_squared_error
from sklearn.linear_model import Ridge

股票预测

class Stock(object):
def init(self, file_path):
self.file_path = file_path

def read_data(self):
    return pd.read_csv(self.file_path)

# 特征工程
def feature_select(self, data):
    # print(data)
    # print(data.corr())
    data.drop("index_code", axis=1, inplace=True)
    data.set_index("date", drop=True, inplace=True)
    data.astype(np.float)
    # print(data.info())

    x_train, x_test, y_train, y_test = train_test_split(data.iloc[:, 0:7], data.iloc[:, 7], test_size=0.25)

    # print(x_test)
    mm_x = MinMaxScaler()
    x_train = mm_x.fit_transform(x_train)
    x_test = mm_x.transform(x_test)

    mm_y = MinMaxScaler()
    y_train = mm_y.fit_transform(np.array(y_train).reshape(-1, 1))
    y_test = mm_y.transform(np.array(y_test).reshape(-1, 1))

    # print(mm_x)

    return mm_y, x_train, x_test, y_train, y_test

def neural_network(self, mm_y, x_train, x_test, y_train, y_test):
    mlp = MLPRegressor(hidden_layer_sizes=(7, 3), solver="sgd", max_iter=2000)

    mlp.fit(x_train, y_train)
    y_predict = mm_y.inverse_transform(np.array(mlp.predict(x_test)).reshape(-1, 1))
    y_mean_squared = mean_squared_error(mm_y.inverse_transform(y_test), y_predict)

    print("神经网络预测结果为:", y_predict)
    print("预测的均方误差为:", y_mean_squared)
    print("预测的平均误差为:", y_mean_squared ** 0.5)
    print("--"*50)

# 岭回归进行预测
def ridge_regression(self, mm_y, x_train, x_test, y_train, y_test):
    rg = Ridge(alpha=0.01)
    rg.fit(x_train, y_train)
    y_predict = mm_y.inverse_transform(np.array(rg.predict(x_test)).reshape(-1, 1))
    y_mean_squared = mean_squared_error(mm_y.inverse_transform(y_test), y_predict)

    print("岭回归预测结果为:", y_predict)
    print("预测的均方误差为:", y_mean_squared)
    print("预测的平均误差为:", y_mean_squared ** 0.5)
    print("--" * 50)

# 主逻辑函数
def run(self):
    data = self.read_data()
    # 特征工程
    mm_y, x_train, x_test, y_train, y_test = self.feature_select(data)
    # 神经网络进行预测
    self.neural_network(mm_y, x_train, x_test, y_train, y_test)
    # 岭回归进行预测
    self.ridge_regression(mm_y, x_train, x_test, y_train, y_test)

def main():
temp = Stock("./stock_dataset.csv")
temp.run()

if name == “main”:
main()

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值