机器学习 --- 预测天气是否适合出去游玩(一)| 贝叶斯

开发平台:jupyter lab

运行环境:python3、TensorFlow2.x

预测天气是否适合出去游玩(一)| 贝叶斯

  • 2. 代码实现部分

题目:如图所示
解法
(1)机器学习 — 预测天气是否适合出去游玩(一)| 贝叶斯
(2)机器学习 — 预测天气是否适合出去游玩(二)| 逻辑回归
(3)机器学习 — 预测天气是否适合出去游玩(三)| 神经网络mlp
机器学习 --- 预测天气是否适合出去游玩(一)| 贝叶斯_第1张图片

2. 代码实现部分

# -*- coding: utf-8 -*-
## 1.转换数据:ont-hot编码
## 2.模型:BernoulliNB()
## 3.交叉验证模型:cross_val_score()
import pandas
#读取数据到 data 变量中
data = pandas.read_csv(
    './machine.csv', 
    encoding='utf8', 
    engine='python'
)
#填充缺失值,把所有放弃投票的值填充为字符串None
data = data.fillna("None")
## 获取关键字
data.keys()

在这里插入图片描述

# 将所有属性作为特征
features = [
    '天气状况', '温度', '湿度', '风力'
]
### 转换变量
from sklearn.preprocessing import OneHotEncoder
#新建独热编码器
oneHotEncoder = OneHotEncoder()
#训练独热编码器,得到转换规则
oneHotEncoder.fit(data[features])
#转换数据
oneHotData = oneHotEncoder.transform(data[features])
## 获取构造器
#伯努利贝叶斯
from sklearn.naive_bayes import BernoulliNB
BNBModel = BernoulliNB()
from sklearn.model_selection import cross_val_score
#进行K折交叉验证
cvs = cross_val_score(BNBModel, oneHotData, data['是否适合游玩'], cv=4)
cvs.mean()   # out: 0.6875
## 实例化模型
BNBModel = BernoulliNB()
#使用所有数据训练模型
BNBModel.fit(oneHotData, data['是否适合游玩'])
#对所有的数据进行预测
data['预测是否适合出去游玩'] = BNBModel.predict(oneHotData)
from sklearn.metrics import confusion_matrix
#计算混淆矩阵,labels参数,可由 BNBModel.classes_ 得到
confusion_matrix(
    data['是否适合游玩'], 
    data['预测是否适合出去游玩'], 
    labels=['是', '否']
)

在这里插入图片描述

pandas.crosstab(data['是否适合游玩'], data['预测是否适合出去游玩'])

机器学习 --- 预测天气是否适合出去游玩(一)| 贝叶斯_第2张图片

### 查看贝叶斯预测情况
### 从下图可看出,仅红色部分预测错误,准确率较高;
### 可通过增加数据量提高预测准确值
data

机器学习 --- 预测天气是否适合出去游玩(一)| 贝叶斯_第3张图片

你可能感兴趣的:(机器学习,python,人工智能)