本文主要是介绍python 天气与股票的关系--第3部分,建立模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
起因(目的):
继续瞎折腾。
过程:
- 假设有下面这些规则: 天气中的温度,
- 如果最高温度大于 36, 那么就是坏天气。
- 如果最低温度小于 5, 那么也是坏天气。
- 如果下雨, 下雪, 那么也是坏天气。
- 其他情况为 好天气
import pandas as pddef calculate_comfort(row, initial_comfort=17):# confy = initial_comfortconfy = int(row['high'].replace('℃', '')) - int(row['low'].replace('℃', '')) # 提取温度信息high_temp = int(row['high'].replace('℃', ''))low_temp = int(row['low'].replace('℃', ''))# 天气信息中的关键词weather_info = row['info']# 根据天气调整舒适度if '雨' in weather_info:confy -= 3if '雪' in weather_info:confy -= 5# 高温处理if high_temp >= 36:confy -= 0.1 * (high_temp - 35)# 低温处理if low_temp <= 5:confy -= 0.1 * (6 - low_temp)# 理想温度增加舒适度ideal_temp = 20if 18 <= high_temp <= 22:confy *= 1.8elif 16 <= high_temp <= 24:confy *= 1.3return confy
df['comfort_level'] = df.apply(calculate_comfort, axis=1)
- 此外, 开盘, 收盘,之间的差距, 作为一天的结果。 也是作为模型的 y!
# ret --> mean 0.171798
df["ret"] = (df["收盘"] - df["开盘"] ) *100 # 17
- 画图查看
如果只从数值的角度, 那么很难看出有什么关系!
- 换一种思路。 对比变换情况。
- 今天与昨天的天气变化情况 A
- 今天与昨天的股市变化情况 B
- A 与 B 之间的关系!
# 创建二元变量表示今天的值是否大于昨天的值
df['comfort_change'] = (df['comfort_level'] > df['comfort_level'].shift(1)).astype(int)
df['ret_change'] = (df['ret'] > df['ret'].shift(1)).astype(int)# ret_change, 第二种思路, 根据正负值来判断!
df['ret_change2'] = (df['ret'] > 0).astype(int) # 修改此行来适应新的规则# 打印结果查看
df[['date', 'comfort_level', 'ret', 'comfort_change', 'ret_change', "ret_change2"]].head()# 统计两个列中相等值的行数
equal_count = (df['comfort_change'] == df['ret_change']).sum()
输出 258, 而总共有484条数据,准确率是 258 / 484 = 0.533
结论 + todo
- 根据天气, 来猜测股市的涨跌, 猜对的概率为 53%
- 一个问题是, 由于节假日,休市, 所以日期是不连贯的。 数据中的昨天, 不一定是昨天(比如, 假设今天是周一, 那么“昨天”, 不是真正的昨天, 而是上个星期的周五。) 这中间差了几天, 天气也变化了。所以有问题!
走过路过,支持一下啊。
这篇关于python 天气与股票的关系--第3部分,建立模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!