当前位置:   article > 正文

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

新时代【机器学习】与【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文件中,导入这些库。就像准备好工具后,把它们放在桌子上随时可以使用。

  1. import pandas as pd
  2. import numpy as np
  3. from sklearn.model_selection import train_test_split
  4. from sklearn.tree import DecisionTreeClassifier
  5. from sklearn.metrics import accuracy_score
  6. import matplotlib.pyplot as plt

第二步:生成和准备数据

2.1 生成随机股票数据

小李的理解:

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

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

2.2 数据探索与可视化

小李的理解:

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

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

 

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

2.3 数据处理

小李的理解:

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

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

在这段代码中:

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

2.4 选择特征和标签

小李的理解:

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

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

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

第三步:拆分数据集

小李的理解:

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

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

 

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

第四步:训练决策树模型

小李的理解:

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

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

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

第五步:模型预测与评估

小李的理解:

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

  1. from sklearn.metrics import accuracy_score
  2. # 模型预测与评估
  3. y_pred = clf.predict(X_test)
  4. accuracy = accuracy_score(y_test, y_pred)
  5. 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

完整代码

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

  1. import pandas as pd
  2. import numpy as np
  3. from sklearn.model_selection import train_test_split
  4. from sklearn.tree import DecisionTreeClassifier
  5. from sklearn.metrics import accuracy_score
  6. import matplotlib.pyplot as plt
  7. from matplotlib.font_manager import FontProperties
  8. # 设置随机种子以确保结果可重复
  9. np.random.seed(42)
  10. # 生成99个交易日期(工作日)
  11. dates = pd.date_range(start='2023-01-01', periods=99, freq='B')
  12. # 随机生成股票价格数据
  13. open_prices = np.random.uniform(low=100, high=200, size=len(dates))
  14. high_prices = open_prices * np.random.uniform(low=1, high=1.1, size=len(dates))
  15. low_prices = open_prices * np.random.uniform(low=0.9, high=1, size=len(dates))
  16. close_prices = np.random.uniform(low=100, high=200, size=len(dates))
  17. volumes = np.random.randint(low=1000, high=10000, size=len(dates))
  18. # 创建数据框
  19. stock_data = pd.DataFrame({
  20. '日期': dates,
  21. '开盘价': open_prices,
  22. '最高价': high_prices,
  23. '最低价': low_prices,
  24. '收盘价': close_prices,
  25. '成交量': volumes
  26. })
  27. # 将数据保存到CSV文件中
  28. stock_data.to_csv('data.csv', index=False, encoding='utf-8-sig')
  29. print("数据已保存到data.csv文件中")
  30. # 读取CSV文件中的数据
  31. stock_data = pd.read_csv('data.csv')
  32. print(stock_data.head())
  33. # 设置字体属性,确保能显示中文
  34. font = FontProperties(fname='C:/Windows/Fonts/simhei.ttf') # 这里使用黑体,可以根据需要更改
  35. # 绘制收盘价的时间序列图
  36. plt.figure(figsize=(12, 6))
  37. plt.plot(stock_data['日期'], stock_data['收盘价'], label='收盘价')
  38. plt.title('模拟股票收盘价历史', fontproperties=font)
  39. plt.xlabel('日期', fontproperties=font)
  40. plt.ylabel('收盘价 (美元)', fontproperties=font)
  41. plt.legend(prop=font)
  42. plt.xticks(rotation=45)
  43. plt.tight_layout()
  44. plt.show()
  45. # 创建新的特征和标签
  46. stock_data['次日收盘价'] = stock_data['收盘价'].shift(-1)
  47. stock_data['价格上涨'] = (stock_data['次日收盘价'] > stock_data['收盘价']).astype(int)
  48. stock_data.dropna(inplace=True)
  49. print(stock_data.head())
  50. # 选择特征和标签
  51. features = stock_data[['收盘价', '开盘价', '最高价', '最低价', '成交量']]
  52. labels = stock_data['价格上涨']
  53. # 拆分数据集
  54. X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42)
  55. # 训练决策树模型
  56. clf = DecisionTreeClassifier()
  57. clf.fit(X_train, y_train)
  58. # 模型预测与评估
  59. y_pred = clf.predict(X_test)
  60. accuracy = accuracy_score(y_test, y_pred)
  61. 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. 模型预测与评估

    使用测试集对模型进行评估,计算模型的准确性。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/805808
推荐阅读
相关标签
  

闽ICP备14008679号