数据挖掘实战—餐饮行业的数据挖掘之挖掘建模



引言

  经过数据探索与数据预处理,我们得到了可以直接建模的数据,根据挖掘目标与数据形式我们可以建立分类与预测、聚类分析、关联规则、时序模式、离群点检测等模型,帮助企业提取数据中蕴含的商业价值。

一、分类与预测

  对于餐饮行业,常遇到如下问题:
在这里插入图片描述

1.常用的分类与预测算法

在这里插入图片描述

2. 回归分析

  在数据挖掘环境下。自变量与因变量具有相关关系,自变量是已知的,因变量是要预测的。常见的回归模型如下:
在这里插入图片描述
当自变量之间出现多重共线性时,用最小二乘法估计回归系数将不准确,消除多重共线性的参数改进方法主要有岭回归和主成分回归

3.决策树

  决策树是一种树状结构,它的每一个叶结点对应着一个分类,非叶结点对应着在某个属性上的划分。根据样本在该属性上的不同取值将划分成若干子集。对于非纯叶节点,多数类的标号给出到达这个节点的样本所属的类。构造决策树的核心问题是在每一步如何选择适当的属性对样本进行拆分。
在这里插入图片描述

#!usr/bin/env python
# -*- coding:utf-8 -*-
"""
@author: admin
@file: ID3决策树.py
@time: 2021/03/31
@desc:
"""
import pandas as pd
from sklearn.tree import DecisionTreeClassifier, export_graphviz
from sklearn.preprocessing import LabelEncoder
import graphviz
import matplotlib as mpl

data = pd.read_excel('data/sales_data.xls', index_col='序号')

data[data == '好'] = 1
data[data == '高'] = 1
data[data == '是'] = 1
data[data != 1] = -1
x = data.iloc[:, :3].values.astype(int)
y = data.iloc[:, 3].values.astype(int)
dtc = DecisionTreeClassifier(criterion='entropy')
dtc.fit(x, y)

dot_data = export_graphviz(dtc, out_file='tree.dot',
                           feature_names=['天气', '是否周末', '是否有促销'],
                           class_names=['高', '低'], filled=True,
                           rounded=True, special_characters=True)

with open('tree.dot', encoding='utf-8') as f:
    dot_grapth = f.read()
dot = graphviz.Source(dot_grapth.replace("helvetica", "MicrosoftYaHei"))   # 解决中文乱码replace("helvetica", "MicrosoftYaHei")
dot.view()

在这里插入图片描述

4.人工神经网络

  使用人工神经网络模型需要确定网络连接的拓扑结构、神经元的特征和学习规则。常用来实现分类与预测的人工神经网络算法有:
在这里插入图片描述

import pandas as pd
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers, Model, optimizers, losses, metrics, activations
from tensorflow.keras.layers import Dense, Dropout, Input, Lambda
import matplotlib as mpl

data = pd.read_excel('data/sales_data.xls', index_col='序号')

data[data == '好'] = 1
data[data == '高'] = 1
data[data == '是'] = 1
data[data != 1] = 0
x = data.iloc[:, :3].values.astype(int)
y = data.iloc[:, 3].values.astype(int)


def bpModel():
    input = Input(shape=(3,))
    x = Dense(10, activation=tf.nn.relu)(input)
    x = Dense(10, activation=tf.nn.relu)(x)
    output = Dense(1, activation='sigmoid')(x)

    model = Model(inputs=input, outputs=output)
    model.compile(optimizer=optimizers.Adam(learning_rate=0.01),
                  loss='binary_crossentropy',
                  metrics=['accuracy'])
    return model


def cm_plot(y, yp):
    """
    混淆矩阵可视化
    :param y:
    :param yp:
    :return:
    """
    from sklearn.metrics import confusion_matrix

    cm = confusion_matrix(y, yp)
    print(cm)
    import matplotlib.pyplot as plt
    plt.matshow(cm, cmap=plt.cm.Greens)
    plt.colorbar()

    for x in range(len(cm)):
        for y in range(len(cm)):
            plt.annotate(cm[x, y], xy=(x, y), horizontalalignment='center', verticalalignment='center')

    plt.ylabel('True label')
    plt.xlabel('Predicted label')
    return plt


bp = bpModel()
bp.fit(x, y, epochs=1000, batch_size
  • 16
    点赞
  • 167
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值