机器学习 --- 预测天气是否适合出去游玩(三)| 神经网络mlp

开发平台:jupyter lab

运行环境:python3、TensorFlow2.x

预测天气是否适合出去游玩(三)| 神经网络mlp

  • 1. 逻辑回归原理部分
  • 2. 代码实现部分

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

1. 逻辑回归原理部分

2. 代码实现部分

# -*- coding: utf-8 -*-
import pandas as pd
## 1.转换数据:字符转换
## 2.模型:model.compile(optimizer = optimizers.Adam(learning_rate=0.001),loss='binary_crossentropy',metrics=['acc'])
data = pd.read_csv(
    './machine.csv',
    engine='python', encoding='utf8'
)
data
#删除缺失值
data = data.dropna()
## 获取关键字
data.keys()

在这里插入图片描述

# 所有属性作为特征
features = [
   '天气状况', '温度', '湿度', '风力','是否适合游玩'
]
from sklearn.preprocessing import OneHotEncoder
#新建独热编码器
oneHotEncoder = OneHotEncoder()
#训练独热编码器,得到转换规则
oneHotEncoder.fit(data[features])
#转换数据
oneHotData = oneHotEncoder.transform(data[features])
oneHotData.toarray()    ## 显示转换后的变量

机器学习 --- 预测天气是否适合出去游玩(三)| 神经网络mlp_第1张图片

### 获取因变量和目标变量
x = oneHotData.toarray()[:,:10]
y = oneHotData.toarray()[:,10:12]
x.shape,y.shape   ## ((14, 10), (14, 2))
#构建模型
from tensorflow.keras import layers
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense,Activation
## 1.获取构造器
model = Sequential()
## 2.添加层
model.add(layers.Dense(32,input_dim = 10,activation='relu'))
model.add(layers.Dense(16,activation='relu'))
model.add(layers.Dense(2,activation='sigmoid'))
## 显示模型结构
model.summary()

机器学习 --- 预测天气是否适合出去游玩(三)| 神经网络mlp_第2张图片

from tensorflow.keras import optimizers
#配置模型参数
#优化方法 损失函数
model.compile(optimizer = optimizers.Adam(learning_rate=0.001),loss='categorical_crossentropy',metrics=['acc'])  # categorical_crossentropy 多分类
#模型训练
hist = model.fit(x,y,epochs=1000)#迭代次数

机器学习 --- 预测天气是否适合出去游玩(三)| 神经网络mlp_第3张图片

import matplotlib.pyplot as plt
## 精确度曲线
plt.plot(range(1000),hist.history.get('acc'))

机器学习 --- 预测天气是否适合出去游玩(三)| 神经网络mlp_第4张图片

### 损失曲线
plt.plot(range(1000),hist.history.get('loss'))

机器学习 --- 预测天气是否适合出去游玩(三)| 神经网络mlp_第5张图片

### 预测数据
import numpy as np
result = model.predict(x)
result

机器学习 --- 预测天气是否适合出去游玩(三)| 神经网络mlp_第6张图片

### 获取数据最大可能性的下标
is_go_out = np.argmax(result,axis = 1)
is_go_out
## out: array([0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1], dtype=int64)

### 通过下标进行结果转换
predict_result = []
for value in is_go_out:
    if value==1:
        predict_result.append('是')
    else:
        predict_result.append('否')
        
data['预测是否适合出去游玩']=predict_result
data

机器学习 --- 预测天气是否适合出去游玩(三)| 神经网络mlp_第7张图片

你可能感兴趣的:(机器学习,神经网络,python)