正好手上有這些資料辑舷∮骼纾可以提供一些思路。
本文章為技術(shù)貼何缓,討論如何使用人工智能機(jī)器學(xué)習(xí)統(tǒng)計(jì)數(shù)據(jù)并進(jìn)行分析肢础,無任何導(dǎo)向。請(qǐng)大家理性看待碌廓。請(qǐng)多多支持公益事業(yè)传轰。
1 準(zhǔn)備數(shù)據(jù)
以下是我采集的2024年全年的3D球的數(shù)據(jù),包括每期的銷售總額和三個(gè)數(shù)字芳绩。
2024年一共是352期墓造。
接下來瘪贱,我們使用Python代碼分析一下規(guī)律。
代碼如下:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.family']='simhei'
df = pd.read_csv('3d_2024.csv')
# 轉(zhuǎn)換 draw_date 為日期格式
df['draw_date'] = pd.to_datetime(df['draw_date'])
# display(df)
# 設(shè)置圖形大小
plt.figure(figsize=(12, 80)) # 你可以根據(jù)需要調(diào)整大小
# 創(chuàng)建每個(gè)數(shù)字的趨勢(shì)圖
# 繪制 One 的趨勢(shì)圖
plt.subplot(1, 3, 1) # 1行3列的第1個(gè)子圖
plt.plot(df['one'], df.index + 1, marker='o',c='r') # 將Y軸的索引放大1.5倍
plt.title('數(shù)字 百 的趨勢(shì)') # 中文標(biāo)題
plt.xlabel('數(shù)字') # 中文 x 軸標(biāo)題
plt.ylabel('期數(shù)') # 中文 y 軸標(biāo)題
plt.xticks(range(10)) # 設(shè)置 x 軸刻度為 0-9
plt.yticks(df.index + 1, df['draw_date'].dt.strftime('%Y-%m-%d')) # 設(shè)置 y 軸為開獎(jiǎng)日期
# 在點(diǎn)上方顯示數(shù)字
for i in range(len(df)):
plt.text(df['one'][i], df.index[i] + 1.1, str(df['one'][i]), ha='center', va='bottom')
# 繪制 Two 的趨勢(shì)圖
plt.subplot(1, 3, 2) # 1行3列的第2個(gè)子圖
plt.plot(df['two'], df.index + 1, marker='o',c='g') # 將Y軸的索引放大1.5倍
plt.title('數(shù)字 十 的趨勢(shì)') # 中文標(biāo)題
plt.xlabel('數(shù)字') # 中文 x 軸標(biāo)題
plt.ylabel('期數(shù)') # 中文 y 軸標(biāo)題
plt.xticks(range(10)) # 設(shè)置 x 軸刻度為 0-9
plt.yticks(df.index + 1, df['draw_date'].dt.strftime('%Y-%m-%d')) # 設(shè)置 y 軸為開獎(jiǎng)日期
# 在點(diǎn)上方顯示數(shù)字
for i in range(len(df)):
plt.text(df['two'][i], df.index[i] + 1.1, str(df['two'][i]), ha='center', va='bottom')
# 繪制 Three 的趨勢(shì)圖
plt.subplot(1, 3, 3) # 1行3列的第3個(gè)子圖
plt.plot(df['three'], df.index + 1, marker='o') # 將Y軸的索引放大
plt.title('數(shù)字 個(gè) 的趨勢(shì)') # 中文標(biāo)題
plt.xlabel('數(shù)字') # 中文 x 軸標(biāo)題
plt.ylabel('期數(shù)') # 中文 y 軸標(biāo)題
plt.xticks(range(10)) # 設(shè)置 x 軸刻度為 0-9
plt.yticks(df.index + 1, df['draw_date'].dt.strftime('%Y-%m-%d')) # 設(shè)置 y 軸為開獎(jiǎng)日期
# 在點(diǎn)上方顯示數(shù)字
for i in range(len(df)):
plt.text(df['three'][i], df.index[i] + 1.1, str(df['three'][i]), ha='center', va='bottom')
plt.tight_layout() # 自動(dòng)調(diào)整子圖間距
# 保存圖片到指定路徑
plt.savefig('3D走勢(shì)圖.png')
plt.show() # 顯示圖形
看這個(gè)蛇形走位期贫,看起來有規(guī)律嗎?
就算全宇宙最牛逼的算法和算力也無法發(fā)現(xiàn)他的規(guī)律吧廷区。
2 統(tǒng)計(jì)規(guī)律
我們通過這352期的數(shù)字唯灵,找到個(gè)十百位的回歸曲線。
根據(jù)數(shù)字分布圖隙轻,可以發(fā)現(xiàn)埠帕,這條線就基本就是直線了,并且就著4,5,6之間的直線玖绿。
并且你會(huì)發(fā)現(xiàn)敛瓷,如果統(tǒng)計(jì)2004-2024年這10年的數(shù)據(jù),這條曲線基本就會(huì)變成數(shù)字5左右的直線了斑匪。
數(shù)據(jù)量越大呐籽,越?jīng)]有規(guī)律了。
不過,我們可以試一下狡蝶,看看是否可以預(yù)測(cè)庶橱。
3 根據(jù)條件預(yù)測(cè)
預(yù)測(cè)的前提條件是這樣的。
根據(jù)2024年的歷史規(guī)律總結(jié)贪惹,尋找當(dāng)上一期出現(xiàn)的某個(gè)數(shù)字之后苏章,下一期會(huì)出現(xiàn)什么數(shù)字。
例如:2024351期奏瞬,2024-12-30,出現(xiàn)的數(shù)字是6,5,7枫绅,使用代碼總結(jié)一下,當(dāng)百位出現(xiàn)6的時(shí)候硼端,下一期最多會(huì)出現(xiàn)什么數(shù)字并淋,當(dāng)十位出現(xiàn)5時(shí),下一期最多會(huì)出現(xiàn)什么數(shù)字珍昨,當(dāng)個(gè)位出現(xiàn)7時(shí)县耽,個(gè)位會(huì)出現(xiàn)什么數(shù)字。
接下來曼尊,我們根據(jù)代碼預(yù)測(cè):
輸入:第2025026期的結(jié)果5,8,8酬诀,預(yù)測(cè)下一期的號(hào)碼
'''
@date 2024年11月20日
@author liandyao
dy號(hào): liandyao
'''
# 導(dǎo)入必要的庫
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# 創(chuàng)建 DataFrame
df = pd.read_csv('3d_2024.csv')
# 將數(shù)據(jù)按期號(hào)進(jìn)行排序以確保順序
df.sort_values(by='issue', inplace=True)
# 創(chuàng)建特征: 使用過去的值作為輸入特征
# 假設(shè)有記錄過去幾期的數(shù)據(jù)
df['prev_one'] = df['one'].shift(1)
df['prev_two'] = df['two'].shift(1)
df['prev_three'] = df['three'].shift(1)
# 刪除缺失值
df.dropna(inplace=True)
# 提取特征和目標(biāo)
X = df[['prev_one', 'prev_two', 'prev_three']]
y_one = df['one']
y_two = df['two']
y_three = df['three']
# 數(shù)據(jù)分割
X_train, X_test, y_train_one, y_test_one = train_test_split(X, y_one, test_size=0.2, random_state=42)
X_train, X_test, y_train_two, y_test_two = train_test_split(X, y_two, test_size=0.2, random_state=42)
X_train, X_test, y_train_three, y_test_three = train_test_split(X, y_three, test_size=0.2, random_state=42)
# 構(gòu)建和訓(xùn)練模型
model_one = RandomForestClassifier()
model_one.fit(X_train, y_train_one)
model_two = RandomForestClassifier()
model_two.fit(X_train, y_train_two)
model_three = RandomForestClassifier()
model_three.fit(X_train, y_train_three)
# 預(yù)測(cè)
y_pred_one = model_one.predict(X_test)
y_pred_two = model_two.predict(X_test)
y_pred_three = model_three.predict(X_test)
# 評(píng)估模型
accuracy_one = accuracy_score(y_test_one, y_pred_one)
accuracy_two = accuracy_score(y_test_two, y_pred_two)
accuracy_three = accuracy_score(y_test_three, y_pred_three)
print(f"模型 'one' 的準(zhǔn)確率: {accuracy_one:.2f}")
print(f"模型 'two' 的準(zhǔn)確率: {accuracy_two:.2f}")
print(f"模型 'three' 的準(zhǔn)確率: {accuracy_three:.2f}")
# 輸入預(yù)測(cè)值(最后一行數(shù)據(jù),預(yù)測(cè)未來的值)
input_data = [[5,8,8]] # 使用數(shù)字進(jìn)行預(yù)測(cè)
predicted_one = model_one.predict(input_data)
predicted_two = model_two.predict(input_data)
predicted_three = model_three.predict(input_data)
print(f"預(yù)測(cè)下一期的數(shù)字 'one' 是: {predicted_one[0]}")
print(f"預(yù)測(cè)下一期的數(shù)字 'two' 是: {predicted_two[0]}")
print(f"預(yù)測(cè)下一期的數(shù)字 'three' 是: {predicted_three[0]}")
得到的結(jié)果:
模型 'one' 的準(zhǔn)確率: 0.08
模型 'two' 的準(zhǔn)確率: 0.10
模型 'three' 的準(zhǔn)確率: 0.11
上一期的數(shù)字: prev_one prev_two prev_three
0 5 8 8
預(yù)測(cè)下一期的數(shù)字 'one' 是: 1
預(yù)測(cè)下一期的數(shù)字 'two' 是: 0
預(yù)測(cè)下一期的數(shù)字 'three' 是: 8
大家可以參考一下骆撇。
如果中獎(jiǎng)了瞒御,別忘了回來感謝我,哈哈神郊。