机器学习 啤酒数据集

Artificial neural networks (ANNs), usually simply called neural networks (NNs), are computing systems vaguely inspired by the biological neural networks that constitute animal brains.

人工神经网络(ANN)通常简称为神经网络(NNs),是由构成动物大脑的生物神经网络模糊地启发了计算系统。

An ANN is based on a collection of connected units or nodes called artificial neurons, which loosely model the neurons in a biological brain. Each connection, like the synapses in a biological brain, can transmit a signal to other neurons. An artificial neuron that receives a signal then processes it and can signal neurons connected to it. The “signal” at a connection is a real number, and the output of each neuron is computed by some non-linear function of the sum of its inputs. The connections are called edges. Neurons and edges typically have a weight that adjusts as learning proceeds. The weight increases or decreases the strength of the signal at a connection. Neurons may have a threshold such that a signal is sent only if the aggregate signal crosses that threshold. Typically, neurons are aggregated into layers. Different layers may perform different transformations on their inputs. Signals travel from the first layer (the input layer), to the last layer (the output layer), possibly after traversing the layers multiple times.

人工神经网络基于称为人工神经元的连接单元或节点的集合,这些单元或节点可以对生物脑中的神经元进行松散建模。 每个连接都像生物大脑中的突触一样,可以将信号传输到其他神经元。 接收信号的人工神经元随后对其进行处理,并可以向与之相连的神经元发出信号。 连接处的“信号”是实数,每个神经元的输出通过其输入之和的某些非线性函数来计算。 这些连接称为边。 神经元和边缘通常具有随着学习的进行而调整的权重。 权重增加或减小连接处信号的强度。 神经元可以具有阈值,使得仅当总信号超过该阈值时才发送信号。 通常,神经元聚集成层。 不同的层可以对它们的输入执行不同的变换。 信号可能从第一层(输入层)传播到最后一层(输出层),可能是在多次遍历这些层之后。

Neural networks learn (or are trained) by processing examples, each of which contains a known “input” and “result,” forming probability-weighted associations between the two, which are stored within the data structure of the net itself. The training of a neural network from a given example is usually conducted by determining the difference between the processed output of the network (often a prediction) and a target output. This is the error. The network then adjusts it’s weighted associations according to a learning rule and using this error value. Successive adjustments will cause the neural network to produce output which is increasingly similar to the target output. After a sufficient number of these adjustments the training can be terminated based upon certain criteria. This is known as [[supervised learning]].

神经网络通过处理示例来学习(或训练),每个示例都包含一个已知的“输入”和“结果”,形成两者之间的概率加权关联,这些关联存储在网络本身的数据结构中。 给定示例中的神经网络训练通常是通过确定网络的处理输出(通常是预测)与目标输出之间的差异来进行的。 这是错误。 然后,网络根据学习规则并使用此错误值来调整其加权关联。 连续的调整将导致神经网络产生越来越类似于目标输出的输出。 在进行了足够数量的这些调整后,可以基于某些标准终止训练。 这称为[[监督学习]]。

开始干活 (Let’s work)

安装套件 (Install Packages)

packages <- c("xts","zoo","PerformanceAnalytics", "GGally", "ggplot2", "ellipse", "plotly")newpack  = packages[!(packages %in% installed.packages()[,"Package"])]if(length(newpack)) install.packages(newpack)a=lapply(packages, library, character.only=TRUE)

加载数据集 (Load dataset)

beer <- read.csv("MyData.csv")head(beer)
summary(beer)Clase               Color        BoilGravity        IBU         Length:1000        Min.   : 1.99   Min.   : 1.0   Min.   :  0.00   Class :character   1st Qu.: 5.83   1st Qu.:27.0   1st Qu.: 32.90   Mode  :character   Median : 7.79   Median :33.0   Median : 47.90                      Mean   :13.45   Mean   :33.8   Mean   : 51.97                      3rd Qu.:12.57   3rd Qu.:39.0   3rd Qu.: 67.77                      Max.   :50.00   Max.   :90.0   Max.   :144.53        ABV         Min.   : 2.390   1st Qu.: 5.240   Median : 5.990   Mean   : 6.093   3rd Qu.: 6.810   Max.   :10.380

虹膜数据集的可视化 (Visualization of Iris Data Set)

You can also embed plots, for example:

您还可以嵌入图,例如:

pairs(beer[2:5],       main = "Craft Beer Data -- 5 types",      pch = 21, bg = c("red", "green", "blue", "orange", "yellow"))
library(GGally)pm <- ggpairs(beer,lower=list(combo=wrap("facethist",  binwidth=0.5)),title="Craft Beer", mapping=aes(color=Clase))pm
library(PerformanceAnalytics)chart.Correlation2 <- function (R, histogram = TRUE, method = NULL, ...)    {        x = checkData(R, method = "matrix")        if (is.null(method)) #modified            method = 'pearson'

        use.method <- method #added        panel.cor <- function(x, y, digits = 2, prefix = "",                               use = "pairwise.complete.obs",                               method = use.method, cex.cor, ...)         { #modified        usr <- par("usr")        on.exit(par(usr))        par(usr = c(0, 1, 0, 1))        r <- cor(x, y, use = use, method = method)        txt <- format(c(r, 0.123456789), digits = digits)[1]        txt <- paste(prefix, txt, sep = "")        if (missing(cex.cor))             cex <- 0.8/strwidth(txt)        test <- cor.test(as.numeric(x), as.numeric(y), method = method)        Signif <- symnum(test$p.value, corr = FALSE, na = FALSE,                          cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1),                         symbols = c("***","**", "*", ".", " "))        text(0.5, 0.5, txt, cex = cex * (abs(r) + 0.3)/1.3)        text(0.8, 0.8, Signif, cex = cex, col = 2)        }    f <- function(t)        {        dnorm(t, mean = mean(x), sd = sd.xts(x))        }    dotargs <- list(...)    dotargs$method <- NULL    rm(method)    hist.panel = function(x, ... = NULL)         {        par(new = TRUE)        hist(x, col = "light gray", probability = TRUE, axes = FALSE,              main = "", breaks = "FD")        lines(density(x, na.rm = TRUE), col = "red", lwd = 1)        rug(x)        }    if (histogram)         pairs(x, gap = 0, lower.panel = panel.smooth,               upper.panel = panel.cor, diag.panel = hist.panel)    else pairs(x, gap = 0, lower.panel = panel.smooth, upper.panel = panel.cor)    }#if method option not set default is 'pearson'chart.Correlation2(beer[,2:5], histogram=TRUE, pch="21")
library(plotly)pm <- GGally::ggpairs(beer, aes(color = Clase), lower=list(combo=wrap("facethist",  binwidth=0.5)))class(pm)pm
  1. ‘gg’
    'gg'
  2. ‘ggmatrix’
    'ggmatrix'

建立和训练啤酒数据神经网络 (Setup and Train the Neural Network for Beer Data)

Neural Network emulates how the human brain works by having a network of neurons that are interconnected and sending stimulating signal to each other.

神经网络通过使相互连接的神经元网络相互发送刺激信号来模拟人脑的工作方式。

In the Neural Network model, each neuron is equivalent to a logistic regression unit. Neurons are organized in multiple layers where every neuron at layer i connects out to every neuron at layer i+1 and nothing else.

在神经网络模型中,每个神经元都等效于逻辑回归单元。 神经元是多层组织的,其中第i层的每个神经元都与第i + 1层的每个神经元相连。

The tuning parameters in Neural network includes the number of hidden layers, number of neurons in each layer, as well as the learning rate.

神经网络中的调整参数包括隐藏层数,每层神经元数以及学习率。

There are no fixed rules to set these parameters and depends a lot in the problem domain. My default choice is to use a single hidden layer and set the number of neurons to be the same as the input variables. The number of neurons at the output layer depends on how many binary outputs need to be learned. In a classification problem, this is typically the number of possible values at the output category.

没有固定的规则来设置这些参数,并且在问题域中有很大关系。 我的默认选择是使用单个隐藏层,并将神经元数量设置为与输入变量相同。 输出层神经元的数量取决于需要学习多少个二进制输出。 在分类问题中,这通常是输出类别中可能值的数量。

The learning happens via an iterative feedback mechanism where the error of training data output is used to adjusted the corresponding weights of input. This adjustment will be propagated back to previous layers and the learning algorithm is known as back-propagation.

通过迭代反馈机制进行学习,在该机制中,训练数据输出的错误用于调整输入的相应权重。 此调整将传播回先前的层,学习算法称为反向传播。

library(neuralnet)beer <- beer%>%    select("IBU","ABV","Color","BoilGravity","Clase")head(beer)
# Binarize the categorical outputbeer <- cbind(beer, beer$Clase == 'ALE')beer <- cbind(beer, beer$Clase == 'IPA')beer <- cbind(beer, beer$Clase == 'PALE')beer <- cbind(beer, beer$Clase == 'STOUT')beer <- cbind(beer, beer$Clase == 'PORTER')names(beer)[6] <- 'ALE'names(beer)[7] <- 'IPA'names(beer)[8] <- 'PALE'names(beer)[9] <- 'STOUT'names(beer)[10] <- 'PORTER'head(beer)
set.seed(101)beer.train.idx <- sample(x = nrow(beer), size = nrow(beer)*0.5)beer.train <- beer[beer.train.idx,]beer.valid <- beer[-beer.train.idx,]

啤酒数据神经网络的可视化 (Visulization of the Neural Network on Beer Data)

Here is the plot of the Neural network we learn

这是我们学习的神经网络图

Neural network is very good at learning non-linear function and also multiple outputs can be learnt at the same time. However, the training time is relatively long and it is also susceptible to local minimum traps. This can be mitigated by doing multiple rounds and pick the best learned model.

神经网络非常擅长学习非线性函数,并且可以同时学习多个输出。 但是,训练时间相对较长,并且也容易受到局部最小陷阱的影响。 可以通过多次尝试并选择最佳的学习模型来缓解这种情况。

nn <- neuralnet(ALE+IPA+PALE+STOUT+PORTER ~ IBU+ABV+Color+BoilGravity, data=beer.train, hidden=c(5))plot(nn, rep = "best")

结果 (Result)

beer.prediction <- compute(nn, beer.valid[-5:-10])idx <- apply(beer.prediction$net.result, 1, which.max)predicted <- c('ALE','IPA', 'PALE', 'STOUT', 'PORTER')[idx]table(predicted, beer.valid$Clase)predicted ALE IPA PALE PORTER STOUT    ALE    17   3   12      0     0    IPA     1 203   21      0     2    PALE   29  26   84      1     0    STOUT   0   4    0     30    67

Accuracy of model is calculated as follows

模型的精度计算如下

((17+203+84+0+67)/nrow(beer.valid))*100

74.2

74.2

# nn$result.matrixstr(nn)List of 14 $ call               : language neuralnet(formula = ALE + IPA + PALE + STOUT + PORTER ~ IBU + ABV + Color +      BoilGravity, data = beer.train, hidden = c(5)) $ response           : logi [1:500, 1:5] FALSE FALSE FALSE FALSE FALSE FALSE ...  ..- attr(*, "dimnames")=List of 2  .. ..$ : chr [1:500] "841" "825" "430" "95" ...  .. ..$ : chr [1:5] "ALE" "IPA" "PALE" "STOUT" ... $ covariate          : num [1:500, 1:4] 62.3 27.1 39 72.3 67.8 ...  ..- attr(*, "dimnames")=List of 2  .. ..$ : chr [1:500] "841" "825" "430" "95" ...  .. ..$ : chr [1:4] "IBU" "ABV" "Color" "BoilGravity" $ model.list         :List of 2  ..$ response : chr [1:5] "ALE" "IPA" "PALE" "STOUT" ...  ..$ variables: chr [1:4] "IBU" "ABV" "Color" "BoilGravity" $ err.fct            :function (x, y)    ..- attr(*, "type")= chr "sse" $ act.fct            :function (x)    ..- attr(*, "type")= chr "logistic" $ linear.output      : logi TRUE $ data               :'data.frame':    500 obs. of  10 variables:  ..$ IBU        : num [1:500] 62.3 27.1 39 72.3 67.8 ...  ..$ ABV        : num [1:500] 5.9 5.07 6.57 5.7 6.86 5.21 4.22 5.57 5.76 7.76 ...  ..$ Color      : num [1:500] 5.61 32.07 39.92 9.62 8.29 ...  ..$ BoilGravity: int [1:500] 37 25 40 37 31 28 19 27 30 44 ...  ..$ Clase      : chr [1:500] "IPA" "PORTER" "STOUT" "PALE" ...  ..$ ALE        : logi [1:500] FALSE FALSE FALSE FALSE FALSE FALSE ...  ..$ IPA        : logi [1:500] TRUE FALSE FALSE FALSE TRUE FALSE ...  ..$ PALE       : logi [1:500] FALSE FALSE FALSE TRUE FALSE TRUE ...  ..$ STOUT      : logi [1:500] FALSE FALSE TRUE FALSE FALSE FALSE ...  ..$ PORTER     : logi [1:500] FALSE TRUE FALSE FALSE FALSE FALSE ... $ exclude            : NULL $ net.result         :List of 1  ..$ : num [1:500, 1:5] 0.00942 0.01859 0.01845 0.00916 0.00478 ...  .. ..- attr(*, "dimnames")=List of 2  .. .. ..$ : chr [1:500] "841" "825" "430" "95" ...  .. .. ..$ : NULL $ weights            :List of 1  ..$ :List of 2  .. ..$ : num [1:5, 1:5] -10.8295 0.0944 0.9985 -0.1776 0.0445 ...  .. ..$ : num [1:6, 1:5] 0.0576 -0.058 -0.4324 0.4371 -0.0437 ... $ generalized.weights:List of 1  ..$ : num [1:500, 1:20] -0.08239 -0.000124 -0.000822 -0.082905 -0.093232 ...  .. ..- attr(*, "dimnames")=List of 2  .. .. ..$ : chr [1:500] "841" "825" "430" "95" ...  .. .. ..$ : NULL $ startweights       :List of 1  ..$ :List of 2  .. ..$ : num [1:5, 1:5] -0.5 1.832 -0.329 0.261 -1.112 ...  .. ..$ : num [1:6, 1:5] 0.341 1.107 0.689 0.471 -1.64 ... $ result.matrix      : num [1:58, 1] 8.02e+01 8.76e-03 7.37e+04 -1.08e+01 9.44e-02 ...  ..- attr(*, "dimnames")=List of 2  .. ..$ : chr [1:58] "error" "reached.threshold" "steps" "Intercept.to.1layhid1" ...  .. ..$ : NULL - attr(*, "class")= chr "nn"beer.net <- neuralnet(ALE+IPA+PALE+STOUT+PORTER ~ IBU+ABV+Color+BoilGravity,                       data=beer.train, hidden=c(5),  err.fct = "ce",                       linear.output = F, lifesign = "minimal",                       threshold = 0.1)hidden: 5    thresh: 0.1    rep: 1/1    steps:   86036  error: 431.94881  time: 24.02 secsplot(beer.net, rep="best")

预测结果 (Predicting Result)

beer.prediction <- compute(beer.net, beer.valid[-5:-10])idx <- apply(beer.prediction$net.result, 1, which.max)predicted <- c('ALE','IPA', 'PALE', 'STOUT', 'PORTER')[idx]table(predicted, beer.valid$Clase)predicted ALE IPA PALE PORTER STOUT   ALE     26   4    9      0     0   IPA      0 197   30      1     3   PALE    21  33   78      0     0   PORTER   0   1    0     10     6   STOUT    0   1    0     20    60

Accuracy of model is calculated as follows

模型的精度计算如下

((26+197+78+10+60)/nrow(beer.valid))*100

74.2

74.2

结论 (Conclusion)

As you can see the accuracy is equal!

如您所见,精度是相等的!

I hope it will help you to develop your training.

我希望它能帮助您发展培训。

永不放弃! (Never give up!)

See you in Linkedin!

在Linkedin上见!

翻译自: https://medium.com/@zumaia/neural-network-on-beer-dataset-55d62a0e7c32

机器学习 啤酒数据集

http://www.taodudu.cc/news/show-994920.html

相关文章:

  • nasa数据库cm1数据集_获取下一个地理项目的NASA数据
  • r语言处理数据集编码_在强调编码语言或工具之前,请学习这3个基本数据概念
  • 数据迁移测试_自动化数据迁移测试
  • 使用TensorFlow概率预测航空乘客人数
  • 程序员 sql面试_非程序员SQL使用指南
  • r a/b 测试_R中的A / B测试
  • 工作10年厌倦写代码_厌倦了数据质量讨论?
  • 最佳子集aic选择_AutoML的起源:最佳子集选择
  • 管道过滤模式 大数据_大数据管道配方
  • 用户体验可视化指南pdf_R中增强可视化的初学者指南
  • sql横着连接起来sql_SQL联接的简要介绍(到目前为止)
  • 如何击败Python的问题
  • 数据冒险控制冒险_劳动生产率和其他冒险
  • knn 邻居数量k的选取_选择K个最近的邻居
  • 什么样的代码是好代码_什么是好代码?
  • 在Python中使用Twitter Rest API批量搜索和下载推文
  • 大数据 vr csdn_VR中的数据可视化如何革命化科学
  • 导入数据库怎么导入_导入必要的库
  • 更便捷的画决策分支图的工具_做出更好决策的3个要素
  • 矩阵线性相关则矩阵行列式_搜索线性时间中的排序矩阵
  • bigquery数据类型_将BigQuery与TB数据一起使用后的成本和性能课程
  • 脚本 api_从脚本到预测API
  • binary masks_Python中的Masks概念
  • python 仪表盘_如何使用Python刮除仪表板
  • aws emr 大数据分析_DataOps —使用AWS Lambda和Amazon EMR的全自动,低成本数据管道
  • 先进的NumPy数据科学
  • 统计和冰淇淋
  • 对数据仓库进行数据建模_确定是否可以对您的数据进行建模
  • python内置函数多少个_每个数据科学家都应该知道的10个Python内置函数
  • 针对数据科学家和数据工程师的4条SQL技巧

机器学习 啤酒数据集_啤酒数据集上的神经网络相关推荐

  1. yolo人脸检测数据集_自定义数据集上的Yolo-V5对象检测

    yolo人脸检测数据集 计算机视觉 (Computer Vision) Step by step instructions to train Yolo-v5 & do Inference(fr ...

  2. moore 数据集_【数据集】一文道尽医学图像数据集与竞赛

    首发于<与有三学AI>[数据集]一文道尽医学图像数据集与竞赛​mp.weixin.qq.com 作者 | Nora/言有三 编辑 | Nora/言有三 在AI与深度学习逐渐发展成熟的趋势下 ...

  3. moore 数据集_警报数据集(alarm dataset)_机器学习_科研数据集

    警报数据集 (alarm dataset) 数据摘要: The following datasets were used in Moore and Wong (2003), Optimal Reins ...

  4. jpg 神经网络 手势识别_在STM32上跑神经网络做手势识别

    为了在Cortex-M的MCU上成功跑起CNN,用的模型是一个不到10层FCN网络,但是即便如此,对于主频只有不到100MHz,SRAM只有不到100K的单片机来说依然是极其吃力的,模型不做量化的话肯 ...

  5. 呼吁开放外网_服装数据集:呼吁采取行动

    呼吁开放外网 Getting a dataset with images is not easy if you want to use it for a course or a book. Yes, ...

  6. 机器学习 来源框架_机器学习的秘密来源:策展

    机器学习 来源框架 成功的机器学习/人工智能方法 (Methods for successful Machine learning / Artificial Intelligence) It's wi ...

  7. 机器学习模型 非线性模型_机器学习:通过预测菲亚特500的价格来观察线性模型的工作原理...

    机器学习模型 非线性模型 Introduction 介绍 In this article, I'd like to speak about linear models by introducing y ...

  8. 唐宇迪机器学习课程数据集_最受欢迎的数据科学和机器学习课程-2020年8月

    唐宇迪机器学习课程数据集 There are a lot of great online resources and websites on data science and machine lear ...

  9. 使用mnist数据集_使用MNIST数据集上的t分布随机邻居嵌入(t-SNE)进行降维

    使用mnist数据集 It is easy for us to visualize two or three dimensional data, but once it goes beyond thr ...

最新文章

  1. 在tensorflow2.0下遇到1.x版本中占位符不兼容问题 tf.placeholder() is not compatible with eager execution的解决方法
  2. ListView之SimpleAdapter的使用
  3. 转: 用css把图片转为灰色图
  4. [原创]C#应用访问Microsoft SQL Server 2005分析服务
  5. 国外在线学习网站+慕课平台
  6. 如何升级浏览器_Chrome谷歌浏览器秒变科研神器,让你的效率提升10倍!
  7. 二元函数泰勒公式例题_高等数学入门——二元函数可微性的判断方法总结
  8. 2.0 es6中forEach以及数组操作
  9. 【Java】计算二进制数中1的个数
  10. jQuery-Selectors(选择器)的使用(一、基本篇)
  11. jQuery常见的50种用法
  12. 30美元攻陷Intel SGX enclave,Intel 不打算修复
  13. VMware vSphere学习之手动克隆虚拟机
  14. CentOS 安装快速Nginx-1.12.0
  15. paip.租房宝付房租功能抓包总结
  16. YAMAHA XJR简易说明[网络]
  17. 青山常在,绿水长流,又一个新地方了
  18. MongoDB 后台创建索引、查看创建进度等
  19. comsume(comsumer怎么读)
  20. C++友元(友元函数)

热门文章

  1. php显示时间,php实现用已经过去多长时间的方式显示时间
  2. 贪心算法-区间选点问题-种树
  3. web开发者工具,261页前端面试题宝典,通用流行框架大全
  4. 你必须知道的CSS盒模型,顺利通过阿里面试
  5. c语言 大雨 班上多个同学准备,2015年计算机二级考试《C语言》提高练习题(7)
  6. 标线markLine的用法
  7. Android 适配(一)
  8. HDU4612 Warm up —— 边双联通分量 + 重边 + 缩点 + 树上最长路
  9. 关于meta便签详解
  10. UVA 10600 ACM Contest and Blackout (次小生成树)