双色球数据分析(朴素贝叶斯算法预测蓝球)
本文依然想论证一下,假定在已知6个红球的情况下,能否准确预测出蓝球是几号。
上述命题可以看成是一个分类问题,即6个红球是特征,蓝球是类别,共16个类别。
先回顾一下用sklearn库进行机器学习的实现步骤:
(1)获取数据集
(2)划分数据集
(3)特征工程 归一化
(4)算法预估器
(5)模型评估
本文的特征工程选择的是归一化处理,是因为标准化处理会使得特征矩阵中存在负值,而朴素贝叶斯算法要求特征矩阵中不能出现负值。
朴素贝叶斯算法实现代码如下:
def analysis_nb():
"""
用朴素贝叶斯算法对蓝球进行分析
:return:
"""
# 1)获取数据集
rbb = load_rbb()
# 2)划分数据集
x_train, x_test, y_train, y_test = train_test_split(rbb.data, rbb.target, random_state=8)
# 3)特征工程 归一化
transfor = MinMaxScaler()
x_train = transfor.fit_transform(x_train)
x_test = transfor.transform(x_test)
# 4)朴素贝叶斯算法预估器
estimator = MultinomialNB(alpha=1)
estimator.fit(x_train, y_train.ravel())
# 5)模型评估
score = estimator.score(x_test, y_test)
return score
先把跑分结果拿出来看一下:
score = analysis_nb()
print(score)
0.06862745098039216
6.86%,非常接近随机概率~~~
基本可以确定:蓝球出几号,跟红球没啥关系。