• 通过python简单预测彩票下次是否中奖:LSTM、LogisticRegression


    背景:根据往期历史中奖记录,预测下次中奖的概率!总共有日期和中奖结果两个字段,中奖为1,不中奖为0,休息日的记录删除不要!

    一:LSTM预测

    import numpy as np
    import pandas as pd
    import tensorflow as tf
    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import LSTM, Dense
    
    # 准备训练数据
    df = pd.read_excel('zj.xlsx', sheet_name='武神')
    data = df['结果'].tolist()
    
    n_steps = 5  # 每个样本的时间步数,可以自己设置,这里意思是根据前五次结果预测第六次的
    X, y = [], []
    for i in range(len(data) - n_steps):
        X.append(data[i:i+n_steps])
        y.append(data[i+n_steps])
    X = np.array(X).reshape(-1, n_steps, 1)
    y = np.array(y)
    
    # 构建模型
    model = Sequential()
    model.add(LSTM(50, activation='relu', input_shape=(n_steps, 1)))
    model.add(Dense(1, activation='sigmoid'))
    model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
    
    # 训练模型
    model.fit(X, y, epochs=100, batch_size=1)
    
    # 使用模型进行预测
    test_data = data[-5:]  # 用于预测的最后五个中奖结果
    test_input = np.array(test_data).reshape(1, n_steps, 1)
    prediction = model.predict(test_input)
    prediction = np.round(prediction)  # 四舍五入为最接近的整数
    print("预测结果:", prediction)
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    二、LogisticRegression预测

    import pandas as pd
    from sklearn.model_selection import train_test_split
    from sklearn.linear_model import LogisticRegression
    
    # 假设data.csv是包含日期和中奖结果的数据文件
    data = pd.read_excel('zj.xlsx', sheet_name='武神')
    # print(data.head())
    
    # 确保日期是日期时间类型
    data['日期'] = pd.to_datetime(data['日期'])
    
    # 排序数据按照日期
    data = data.sort_values('日期')
    
    # 转换中奖结果为0和1
    # data['结果'] = data['结果'].apply(lambda x: 1 if x == '中奖' else 0)
    
    # 构建特征和标签
    data['前一次结果'] = data['结果'].shift()  # 前一次的中奖结果
    data = data.dropna()  # 去除NaN值
    
    X = data[['前一次结果']]
    y = data['结果']
    
    # 划分数据集为训练集和测试集
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    
    # 使用逻辑回归模型
    model = LogisticRegression()
    model.fit(X_train, y_train)
    
    # 预测下一次中奖结果
    last_result = data['结果'].iloc[-1]  # 最后一次的中奖结果
    prediction = model.predict([[last_result]])
    if prediction[0] == 1:
        print("预测值为:", prediction)
        print("下一次可能中奖!")
    else:
        print("预测值为:", prediction)
        print("下一次可能不会中奖。")
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    三、简单概率预测

    # 假设这是你的历史数据,1代表中奖,0代表未中奖
    historical_data = [1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1]
    
    # 计算中奖的次数
    win_count = sum(historical_data)
    total_draws = len(historical_data)
    
    # 计算中奖的概率
    win_probability = win_count / total_draws
    
    print(f"中奖概率为: {win_probability}")
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  • 相关阅读:
    算法题 — 接雨水
    图解电商系统的架构演进
    微信小程序商城:解决用户拉新与留存问题
    机器学习笔记 - 使用 PyTorch 的多任务学习和 HydraNet
    【仿美团点餐App】—— 首页(一)
    Python 细聊可以媲美 PS 的 PIL 图片处理库
    上海高考语文命题趋势和备考建议?附1990年-2023年高考语文真题和答案资源
    Acwing算法基础【1】基础(三)前缀和与差分
    Apollo在NetCore实践
    【深入了解回调函数:在编程中的应用和原理】
  • 原文地址:https://blog.csdn.net/rubyw/article/details/134412338