新时代【机器学习】与【Pycharm】:【随机数据生成】与智能【股票市场分析】

目录

第一步:准备工作

1.1 安装必要的库

小李的理解:

1.2 导入库

小李的理解:

第二步:生成和准备数据

2.1 生成随机股票数据

小李的理解:

2.2 数据探索与可视化

小李的理解:

2.3 数据处理

小李的理解:

2.4 选择特征和标签

小李的理解:

第三步:拆分数据集

小李的理解:

第四步:训练决策树模型

小李的理解:

第五步:模型预测与评估

小李的理解:

结果

完整代码

总结


 

专栏:机器学习笔记

总篇:学习路线

第一卷:线性回归模型

第二卷:逻辑回归模型

第一步:准备工作

1.1 安装必要的库

小李的理解:

在开始之前,需要安装一些工具,类似于做饭前要准备好各种食材。这里,需要安装pandasscikit-learnmatplotlib,它们分别用于数据处理、机器学习和数据可视化。

在Pycharm中打开终端,并运行以下命令:

pip install pandas scikit-learn matplotlib

这些库的作用如下:

  • pandas:用于数据处理和分析,就像厨房里的切菜板和刀。
  • scikit-learn:用于机器学习模型的构建和评估,相当于厨房里的锅和炉灶。
  • matplotlib:用于数据可视化,类似于摆盘和装饰菜肴。

1.2 导入库

小李的理解:

在新的Python文件中,导入这些库。就像准备好工具后,把它们放在桌子上随时可以使用。

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt

第二步:生成和准备数据

2.1 生成随机股票数据

小李的理解:

现在要生成一些模拟的股票数据。想象在创建一个虚拟的股票市场,这些数据包括日期、开盘价、最高价、最低价、收盘价和成交量。就像在做一顿虚拟的大餐,需要各种食材和调料。

# 设置随机种子以确保结果可重复
np.random.seed(42)# 生成99个交易日期(工作日)
dates = pd.date_range(start='2023-01-01', periods=99, freq='B')# 随机生成股票价格数据
open_prices = np.random.uniform(low=100, high=200, size=len(dates))
high_prices = open_prices * np.random.uniform(low=1, high=1.1, size=len(dates))
low_prices = open_prices * np.random.uniform(low=0.9, high=1, size=len(dates))
close_prices = np.random.uniform(low=100, high=200, size=len(dates))
volumes = np.random.randint(low=1000, high=10000, size=len(dates))# 创建数据框
stock_data = pd.DataFrame({'日期': dates,'开盘价': open_prices,'最高价': high_prices,'最低价': low_prices,'收盘价': close_prices,'成交量': volumes
})# 将数据保存到CSV文件中
stock_data.to_csv('data.csv', index=False, encoding='utf-8-sig')
print("数据已保存到data.csv文件中")

2.2 数据探索与可视化

小李的理解:

为了更好地理解我们的数据,可以绘制收盘价的时间序列图。这就像是把做好的菜摆盘后拍张照片,看看颜色和外观怎么样。

# 绘制收盘价的时间序列图
plt.figure(figsize=(12, 6))
plt.plot(stock_data['收盘价'], label='收盘价')
plt.title('模拟股票收盘价历史')
plt.xlabel('日期')
plt.ylabel('收盘价 (美元)')
plt.legend()
plt.show()

 

这段代码将显示模拟股票收盘价随时间变化的图表。

2.3 数据处理

小李的理解:

为了进行预测,需要创建一些特征和标签。用今天的数据来预测明天的情况。具体来说,会看看今天的收盘价,并判断明天的收盘价是否会上涨。就像是根据今天的天气预测明天是否会下雨。

# 创建新的特征和标签
stock_data['次日收盘价'] = stock_data['收盘价'].shift(-1)
stock_data['价格上涨'] = (stock_data['次日收盘价'] > stock_data['收盘价']).astype(int)
stock_data.dropna(inplace=True)
print(stock_data.head())

在这段代码中:

  1. 创建了一个新的列次日收盘价,表示下一天的收盘价。
  2. 创建了标签列价格上涨,如果第二天的收盘价高于当天,则标签为1,否则为0。
  3. 删除了包含空值的行。

2.4 选择特征和标签

小李的理解:

选择一些关键数据作为特征,用它们来预测明天的情况。这些特征包括收盘价、开盘价、最高价、最低价和成交量。就像是选择了一些重要的天气指标(如温度、湿度、风速等)来预测明天的天气。

# 选择特征和标签
features = stock_data[['收盘价', '开盘价', '最高价', '最低价', '成交量']]
labels = stock_data['价格上涨']

在这段代码中,选择了特征列和标签列,用于后续的模型训练和评估。

第三步:拆分数据集

小李的理解:

为了评估模型,需要把数据分成两部分:一部分用来训练模型,另一部分用来测试模型的准确性。就像是用一些数据来训练一个预测模型,然后用其他数据来验证它的预测能力。

from sklearn.model_selection import train_test_split# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42)

 

在这段代码中,将数据集的80%用作训练集,20%用作测试集。还设置了random_state参数,以确保每次运行代码时拆分方式相同。

第四步:训练决策树模型

小李的理解:

可以用训练数据来训练我们的模型了。决策树是一种机器学习算法,就像是一个聪明的机器人,它可以学习数据中的模式,并根据这些模式做出预测。

from sklearn.tree import DecisionTreeClassifier# 训练决策树模型
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)

在这段代码中,首先创建了一个DecisionTreeClassifier对象,然后使用训练数据X_trainy_train来训练模型。

第五步:模型预测与评估

小李的理解:

训练完成后,可以用测试数据来评估模型的表现。让模型对测试数据做出预测,并计算预测的准确性。就像是测试一个天气预报模型,看看它预测的准确性有多高。

from sklearn.metrics import accuracy_score# 模型预测与评估
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"准确率: {accuracy:.2f}")

 

在这段代码中,我们使用clf.predict方法来预测测试数据的标签,然后使用accuracy_score函数来计算模型的准确性。

结果

 日期         开盘价         最高价         最低价         收盘价   成交量
0  2023-01-02  137.454012  138.937023  135.901969  121.582103  4440
1  2023-01-03  195.071431  195.684524  190.777431  162.289048  4766
2  2023-01-04  173.199394  184.221984  166.999404  108.534746  6644
3  2023-01-05  159.865848  164.891327  145.224374  105.168172  3914
4  2023-01-06  115.601864  121.481036  105.910136  153.135463  5968

 

日期         开盘价         最高价  ...   成交量       次日收盘价  价格上涨
0  2023-01-02  137.454012  138.937023  ...  4440  162.289048     1
1  2023-01-03  195.071431  195.684524  ...  4766  108.534746     0
2  2023-01-04  173.199394  184.221984  ...  6644  105.168172     0
3  2023-01-05  159.865848  164.891327  ...  3914  153.135463     1
4  2023-01-06  115.601864  121.481036  ...  5968  154.063512     1

 

[5 rows x 8 columns]
准确率: 0.50

完整代码

为了方便你查看和运行,以下是完整的代码:

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties# 设置随机种子以确保结果可重复
np.random.seed(42)# 生成99个交易日期(工作日)
dates = pd.date_range(start='2023-01-01', periods=99, freq='B')# 随机生成股票价格数据
open_prices = np.random.uniform(low=100, high=200, size=len(dates))
high_prices = open_prices * np.random.uniform(low=1, high=1.1, size=len(dates))
low_prices = open_prices * np.random.uniform(low=0.9, high=1, size=len(dates))
close_prices = np.random.uniform(low=100, high=200, size=len(dates))
volumes = np.random.randint(low=1000, high=10000, size=len(dates))# 创建数据框
stock_data = pd.DataFrame({'日期': dates,'开盘价': open_prices,'最高价': high_prices,'最低价': low_prices,'收盘价': close_prices,'成交量': volumes
})# 将数据保存到CSV文件中
stock_data.to_csv('data.csv', index=False, encoding='utf-8-sig')
print("数据已保存到data.csv文件中")# 读取CSV文件中的数据
stock_data = pd.read_csv('data.csv')
print(stock_data.head())# 设置字体属性,确保能显示中文
font = FontProperties(fname='C:/Windows/Fonts/simhei.ttf')  # 这里使用黑体,可以根据需要更改# 绘制收盘价的时间序列图
plt.figure(figsize=(12, 6))
plt.plot(stock_data['日期'], stock_data['收盘价'], label='收盘价')
plt.title('模拟股票收盘价历史', fontproperties=font)
plt.xlabel('日期', fontproperties=font)
plt.ylabel('收盘价 (美元)', fontproperties=font)
plt.legend(prop=font)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()# 创建新的特征和标签
stock_data['次日收盘价'] = stock_data['收盘价'].shift(-1)
stock_data['价格上涨'] = (stock_data['次日收盘价'] > stock_data['收盘价']).astype(int)
stock_data.dropna(inplace=True)
print(stock_data.head())# 选择特征和标签
features = stock_data[['收盘价', '开盘价', '最高价', '最低价', '成交量']]
labels = stock_data['价格上涨']# 拆分数据集
X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42)# 训练决策树模型
clf = DecisionTreeClassifier()
clf.fit(X_train, y_train)# 模型预测与评估
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"准确率: {accuracy:.2f}")

总结

生成随机股票数据,保存为 CSV 文件,并使用决策树进行预测和评估。

  1. 安装必要的库

    使用 pip install pandas numpy scikit-learn matplotlib 安装库。
  2. 生成并保存随机数据

    生成 99 个交易日(工作日)的随机股票数据,包括日期、开盘价、最高价、最低价、收盘价和成交量。使用 pandas 将数据保存到 data.csv 文件中。
  3. 读取并准备数据

    • 从 CSV 文件中读取数据。
    • 创建新的特征(次日收盘价)和标签(价格上涨)。
  4. 数据可视化

    • 使用 matplotlib 绘制收盘价的时间序列图。
    • 设置字体属性以确保图表中能正确显示中文。
  5. 拆分数据集

    将数据集拆分为训练集和测试集。
  6. 训练决策树模型

    使用 DecisionTreeClassifier 训练模型。
  7. 模型预测与评估

    使用测试集对模型进行评估,计算模型的准确性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/42832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可编程直流电源的恒压模式(CV)和恒流模式(CC)

本文介绍可编程直流电源的恒压模式(CV)和恒流模式(CC)。 可编程直流电源在硬件开发过程中经常被用到,通常,它有2种模式,恒压模式(CV)和恒流模式(CC&#xff…

桌面记事便签哪款好 好用的桌面记事本app

很多人喜欢在桌面上记事,尤其是经常使用电脑的上班族,这样查看起来更加方便。但在网上众多的记事软件中,哪款才是最好用的呢? 在众多选择中,敬业签以其出色的功能和用户体验脱颖而出,成为很多人记事的首选…

Debezium报错处理系列之第111篇:Can‘t compare binlog filenames with different base names

Debezium报错处理系列之第111篇:Cant compare binlog filenames with different base names 一、完整报错二、错误原因三、解决方法Debezium从入门到精通系列之:研究Debezium技术遇到的各种错误解决方法汇总: Debezium从入门到精通系列之:百篇系列文章汇总之研究Debezium技…

#数据结构 链表

单向链表 1. 概念 单向链表 单向循环链表 双向链表 双向循环链表 解决:长度固定的问题,插入和删除麻烦的问题 1、逻辑结构: 线性结构 2、存储结构: 链式存储 链表就是将 结点 用链串起来的线性表,链就是 结点 中的…

UE C++ 多镜头设置缩放 平移

一.整体思路 首先需要在 想要控制的躯体Pawn上,生成不同相机对应的SpringArm组件。其次是在Controller上,拿到这个Pawn,并在其中设置输入响应,并定义响应事件。响应事件里有指向Pawn的指针,并把Pawn的缩放平移功能进行…

MySQL的慢sql

什么是慢sql 每执行一次sql,数据库除了会返回执行结果以外,还会返回sql执行耗时,以mysql数据库为例,当我们开启了慢sql监控开关后,默认配置下,当sql的执行时间大于10s,会被记录到慢sql的日志文件…

优选算法之技巧(一):双指针一:移位0与复写0

引用:我们之前学过快排,首先用三元取中,找(key),然后就用到了双指针的方法来进行交换排序,那我们今天要讲的双指针其实大同小异,无非在数组中就变成了下标。 题一: 给定一个数组 nums&#xf…

LDR6020-VR串流线:开启虚拟现实新纪元的钥匙

随着科技的飞速发展,虚拟现实(VR)技术已经从科幻概念逐渐走进我们的生活,成为娱乐、教育、医疗等多个领域的热门话题。而VR串流线,作为这一技术的重要组成部分,正逐步成为连接用户与高质量VR体验的关键桥梁…

移动硬盘坏道深度解析与应对全攻略

一、现象解读:移动硬盘坏道的直观展示 在数字化信息爆炸的今天,移动硬盘作为便捷的数据存储与传输工具,其重要性不言而喻。然而,随着使用时间的推移,不少用户遭遇了移动硬盘出现“坏道”的困扰。坏道,作为…

Spring与Quartz整合

Quartz框架是一个轻量级的任务调度框架,它提供了许多内置的功能,包括:支持作业的调度、集群调度、持久化、任务持久化、任务依赖、优先级、并发控制、失败重试等。同时也支持自定义作业类型和触发器类型。与Spring整合步骤如下: …

scp命令快速上手用法

作用 scp命令可以实现linux和linux,linux和windows之间文件互传 操作 实验准备 windows系统 ip:192.168.172.1 linux系统A ip:192.168.172.181 linux系统B ip:192.168.172.181 实验1:linux系统A推送文件到linxu…

基于springboot+vue+uniapp的贵工程寝室快修小程序

开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…

哈喽GPT-4o,程序员如何通过GPT-4o提高工作效率

目录 一、编写代码Prompt:请用Java语言编写一个二分查找的样例 二、修正代码错误、代码优化Prompt:我们上传一张华为OD算法题的题目描述,再给它我的Java解题代码,问问它有什么问题? 三、解读代码功能、代码翻译Prompt&…

数据分析入门指南Excel篇:各类Excel函数概览与详解(二)

在当今数字化时代,数据已成为推动业务决策和创新的关键因素。而表格结构数据,作为最常见的数据存储形式之一,广泛应用于财务、物流、电商等多个领域。本文将基于提供的材料文本,深入探讨表格数据的处理与分析,特别是通…

华为 eNSP 路由器 实现双wan出口 访问外网nat 策略路由配置

1 实验拓扑 2 路由器配置 #R1配置 <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]sysn [Huawei]sysname R1 [R1]int GigabitEthernet 0/0/0 [R1-GigabitEthernet0/0/0]ip address 192.168.1.1 255.255.255.0 [R1-GigabitEthernet0/0/0]qu [R1…

详解Linux的shell脚本基础指令

一、shell简介 是Linux系统的用户界面&#xff0c;它提供用户与内核的一种交互方式。它接收用户输入的命令&#xff0c;并把它送入内核去执行&#xff0c;是一个命令解释器。 脚本&#xff1a;本质是一个文件&#xff0c;文件里面存放的是 特定格式的指令&#xff0c;系统可以…

如何选择快手矩阵源码:关键因素解析

在短视频行业迅速发展的今天&#xff0c;快手平台已成为众多内容创作者和企业的重要阵地。为了有效管理和运营多个快手账号&#xff0c;快手矩阵源码成为了一个关键工具。然而&#xff0c;市场上的快手矩阵源码种类繁多&#xff0c;选择一个合适的源码并非易事。本文将探讨选择…

【每日一练】python基础入门实例

""" 幼儿园加法练习题 题数不限 每满100分奖励10个棒棒糖 要求&#xff1a; 1.使用三目运算符与基础运算的对比 2.随机数字相加 3.调用函数 4.循环执行练习题 5.有计算分数 6.有时间停止休眠 """ #导入随机模块 import random #导入时间模块 imp…

聚观早报 | 蚁天鉴2.0发布;理想汽车推送无图NOA

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 7月8日消息 蚁天鉴2.0发布 理想汽车推送无图NOA 特斯拉推送FSD v12.4.3 iQOO Neo9s Pro配色公布 百川智能AI健康…

【知识专栏丨python数据采集数据分析实战】电商数据分析案例

今天这篇文章将给大家分享一个电商数据采集和数据分析的案例。 电商数据采集&#xff1a; https://www.heywhale.com/mw/project/604ae69d89c874001527ff16 下面我们先来简单了解一下数据。 01 数据信息 数据来源&#xff1a; https://www.kesci.com/mw/dataset/601e971ab23…