在數據采集器中用TensorFlow進行實時機器學習

最新DataOps平臺的真正價值,只有在業務用戶和應用程序能夠從各種數據源來訪問原始數據和聚合數據,并且及時地產生數據驅動的認識時,才能夠實現。利用機器學習(Machine Learning),分析師和數據科學家可以利用歷史數據,以及實時地使用類似TensorFlow(TF)這樣的技術,以做出更好的數據驅動業務的線下決策。

在本文中,你將學習如何利用TensorFlow模型在StreamSets Data Collector3.5.0和StreamSets Data Collector Edge中最新發布的TensorFlow Evaluator*進行預測和分類。

在深入討論細節之前,我們來看一些基本概念。

機器學習(Machine Learning)

亞瑟·塞繆爾把它描述為:“不需要明確地編寫程序而使計算機有能力學習的研究領域。”隨著機器學習領域的最新發展,計算機現在有能力做出預測,甚至比人類做的還要好,并且感覺可以解決任何問題。讓我們先回顧一下機器學習都解決了什么樣的問題吧。

通常來說,機器學習被分為兩大類:

監督學習(Supervised Learning)

“監督學習是學習一個函數的機器學習任務,該函數基于輸入-輸出的實例,將輸入映射到輸出。”—維基百科(Wikipedia)。

它涉及到構建一個精準的模型,當歷史數據被標記為一些結果的時候,模型就可以預測出結果了。

用監督學習解決的常見業務問題:

  • 二元分類(學習預測一個分類值)
    -?顧客會購買一個特定產品嗎?
    -?癌癥是惡性的還是良性的?
  • 多級分類(學習預測一個分類值)
    -?給定的一段文本是否帶有病毒、恐嚇或淫穢內容?
    -?這是山鳶尾、藍旗鳶尾還是北美鳶尾的物種?
  • 回歸(學習預測一個連續值)
    -?一個代售房子的預測價格是多少?
    -?明天舊金山的氣溫是多少?

無監督學習

無監督學習允許我們在知道很少,或是完全不知道輸出應該是什么樣子的情況下處理問題。它涉及在之前數據上的標簽是不可用的情況下創建模型。在這類的問題中,通過對基于數據中變量之間的關系進行數據聚類來導出結構。

無監督學習的兩種常見方法是K-均值聚類(K-means clustering)和DBSCAN。

注意:Data Collector和Data Collector Edge中的TensorFlow Evaluator目前僅支持監督學習模型。

神經網絡與深度學習

神經網絡是機器學習算法的一種,可以學習和使用受人腦結構啟發而來的計算模型。與其它機器學習算法,如決策樹、邏輯回歸等相比,神經網絡具有較高的準確性。

Andrew Ng在傳統人工神經網絡的背景下對深度學習進行了描述。在題為“深度學習、自我學習與無監督特征學習”的演講中,他把深度學習的思想描述為:

“利用了大腦結構的模仿,?希望:
-?讓學習算法更好地、更容易地使用;
-?在機器學習和人工智能領域取得革命性的進展;
我相信這是我們朝著真正的人工智能前進的最好辦法。”

常見的神經網絡和深度學習應用包括:

  • 計算機視覺/圖像識別/目標檢測
  • 語言識別/自然語言處理(NLP)
  • 推薦系統(產品、婚介等)
  • 異常檢測(網絡安全等)

TensorFlow

TensorFlow是為深度神經網絡設計的開源機器學習框架,由Google Brain Team開發的。TensorFlow支持在Windows和Mac操作系統上的可伸縮和便攜式的訓練,包括CPU、GPU和TPU。迄今為止,它是GitHub上最流行的和最活躍的機器學習項目。

Data Collector中的TensorFlow

隨著TensorFlow Evaluator的引入,你現在能夠創建管道(pipelines),以獲取數據或特征,并在一個可控的環境中生成預測結果或分類,而不必發起對作為Web服務而提供和公布的機器學習模型的HTTP或REST API的調用。例如,Data Collector管道現在可以實時地檢測欺詐交易或在文本上執行自然語言處理,因為數據在被存儲到最終目的地之前,為了進一步的處理或做決策,正在經過各個階段。

另外,使用Data Collector Edge,你可以在Raspberry Pi和其它運行在所支持的平臺上的設備上運行已經啟用了的TensorFlow機器學習管道。例如,在高風險地區檢測洪水等自然災害發生的概率,以防止對人們財產的破壞。

乳腺癌分類

讓我們考慮將乳腺癌腫瘤分類成惡性還是良性的例子。乳腺癌是一個經典的數據集,可以作為scikit-learn的一部分。要了解如何在Python中使用該數據集訓練和導出一個簡單的TensorFlow模型,請查看我在GitHub上的代碼。正如你將要看到的那樣,模型創建和訓練被保持在最小范圍,并且非常簡單,只有幾個隱藏層。最需要注意的重要方面是如何使用TensorFlow SavedModelBuilder*來導出和保存模型。

*注意:要在Data Collector或Data Collector Edge中使用TensorFlow模型,首先應該在你選擇支持的開發語言里,如Python,和交互式環境中,如Jupiter Notebook,使用TensorFlow的SavedModelBuilder導出和保存模型。

一旦使用TensorFlow的SavedModelBuilder訓練并導出了模型,那么在數據流管道中使用它進行預測或分類就非常簡單了?—?只要模型保存在Data Collector或Data Collector Edge可訪問的位置上即可。

管道概述

在深入了解細節之前,可以看下管道是什么樣的:

?

管道細節

  • 目錄源:
    -?這將從.csv文件中加載乳腺癌的記錄數據(注意:這個輸入數據源可以非常簡單地替換為其它的來源,包括Kafka、AWS S3、MySQL等等);
  • 字段轉換器:
    -?這個處理器將轉換供模型所使用的所有輸入的乳腺癌記錄特征數據,從String類型轉換到Float類型(mean_radius,mean_texture,mean_perimeter,mean_area,mean_smoothness,mean_compactness,mean_concavity,mean_concave_points,mean_symmetry,mean_fractal_dimension,radius_error,texture_error,perimeter_error,area_error,smoothness_error,compactness_error,concavity_error,concave_points_error,symmetry_error,fractal_dimension_error,worst_radius,worst_texture,worst_perimeter,worst_area,worst_smoothness,worst_compactness,worst_concavity,worst_concave_points,worst_symmetry,worst_fractal_dimension)?;
  • TensorFlow Evaluator*:
    -?模型的保存路徑:指定要使用的預訓練的TensorFlow模型的位置;
    -?模型標簽:設置為“serve”,因為元圖(在我們導出的模型中)要用于服務中。有關詳細信息,請參見tag_constants.py和相關的TensorFlow API documentation;
    -?輸入配置:指定在訓練和導出模型期間配置的輸入張量信息(請見Train model and save/export it using TensorFlow SavedModelBuilder部分);
    -?輸出配置:指定在訓練和導出模型期間配置的輸出張量信息(請見Train model and save/export it using TensorFlow SavedModelBuilder部分);
    -?輸出字段:我們想保存分類值的輸出記錄字段;
  • Expression Evaluator:
    -該處理器評估模型輸出或分類值為0或1(存儲在輸出的字段TF_Model_Classification之中)?,并用Benign或Malignantrespectively這兩個值創建一個新的記錄字段“Condition”;
  • Stream Selector:
    -?該處理器評估癌癥狀況(良性或惡性)并發送記錄到各自的Kafka生產者;
  • Kafka Producers:
    -?輸入記錄以及模型的輸出或者分類值被有條件地發送給兩個Kafka生產者以獲得進一步地處理和分析;

*TensorFlow Evaluator配置

?

?

注意:一旦TensorFlow Evaluator產生了模型輸出結果,本實例中采用的管道階段是可選的,并且可以根據用例的需要與其它處理器和目標進行互換。

管道執行

?

?

?

在預覽管道上,乳腺癌數據記錄的輸入通過了上面所述的數據流管道過程,包括服務于我們的TensorFlow模型。發送給Kafka生產者的最終輸出記錄數據(如上所示)包括用于分類的模型所使用的乳腺癌特征,在用戶定義的字段TF_Model_Classification中模型輸出值為0或1,以及由Expression Evaluator創建的Condition字段中表示相應的癌癥狀況是良性或惡性。

總結

本文說明了在Data Collector 3.5.0中使用最新發布的TensorFlow Evaluator。一般來說,這個評估器將允許你提供預訓練的TensorFlow模型,用于生成預測結果和分類結果,而無需編寫任何自己的代碼。

?

原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。

轉載于:https://www.cnblogs.com/yunqishequ/p/10057415.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/278771.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278771.shtml
英文地址,請注明出處:http://en.pswp.cn/news/278771.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

excel條件格式使用_如何使用條件格式在Excel中創建進度欄

excel條件格式使用Progress bars are pretty much ubiquitous these days; we’ve even seen them on some water coolers. A progress bar provides instant feedback on a given process, so why not bring some of that graphical pizzazz into your spreadsheet, using Exc…

spring技術小結

1.DI和IOC 依賴注入(Dependency Injection)還是控制反轉(Inversion of Conctrol) bean通過依賴注入,注冊到spring容器里面。spring容器通過控制反轉,調用bean。 2.DI的方法 這里網上很多配置注入,構造方法注入,類參數注入&#xf…

raspberry pi_每日新聞摘要:新型iMac,NVIDIA的Raspberry Pi競爭對手等

raspberry piFor the morning of March 19th, 2019, Apple unveiled an updated iMac, NVIDIA showed off a Raspberry Pi competitor, Instagram will let you buy things without leaving the service, Call of Duty is coming to mobile, and a lot more. 在2019年3月19日上…

六) 條件搜索

什么是條件搜索 用關健字與指定的單列或多例進行匹配的搜索 單字段條件搜索 QueryParser queryParser new QueryParser(LuceneUtil.getVersion(),"content",LuceneUtil.getAnalyzer()); 多字段條件搜索,項目中提倡多字段搜索 QueryParser queryParser n…

Ubuntu 16.04/CentOS 6.9安裝Apache壓力(并發)測試工具ab

說明: ab工具已經在Apache中包含,如果不想安裝Apache,那么可以使用下面方法單獨安裝。 安裝: Ubuntu: sudo apt-get install apache2-utils CentOS: sudo yum -y install httpd-tools 官網: h…

鼠標指針放置上面,顯示內容_使鼠標指針遠離您鍵入的內容

鼠標指針放置上面,顯示內容If your mouse pointer seems to constantly get in the way while you are typing, you aren’t alone… you click in the middle of some text and start typing to insert more, but the cursor stays in the way. There’s a tiny utility calle…

Java基礎查漏補缺:(String篇)一個面試題問倒了我,原來String并不簡單

先來一道java面試題:String s new String(“zsx”);問:創建了幾個String Object? 先別往下看,想想答案 先上一個圖: 如圖所示,問題所示的語句創建了2個String對象和一個引用。String s new String(“zsx”); 相當于…

06 小數據池 is 和 = = 再談編碼

今日主要內容 1. 小數據池, id() 小數據池針對的是: int, str, bool 在py文件中幾乎所有的字符串都會緩存. id() 查看變量的內存地址 2. is和的區別 is 比較的是內存地址 比較的是內容 當兩…

geek_愚蠢的怪胎技巧:在Windows 7中啟用秘密的“ How-To Geek”模式

geekWe haven’t told anybody before, but Windows has a hidden “How-To Geek Mode” that you can enable which gives you access to every Control Panel tool on a single page—and we’ve documented the secret method for you here. 我們以前沒有告訴過任何人&#…

使用MetaPost繪制流程圖

小白最近閑來無事,自學了一點metapost,主要用它來繪制拓撲圖或流程圖。小白最近在寫自己從工作以來的所學,寫成了一份PDF的電子文檔(小白不太會使用MS Word)。小白又不想使用JPEG或PNG格式的圖片作為插圖,因…

基于GDAL庫,讀取海洋風場數據(.nc格式)c++版

經過這一段時間的對海洋數據的處理,接觸了大量的與海洋相關的數據,例如海洋地形、海洋表面溫度、鹽度、濕度、云場、風場等數據,除了地形數據是grd格式外,其他的都是nc格式的數據。本文將以海洋風場數據為例,進行nc格式…

zune linux_快速提示:在出售Zune HD之前,先擦除所有內容

zune linuxBefore selling your Zune HD online or to another individual, you’ll probably want to erase all of its content. Here we show you how to erase all of the content through the Zune Desktop Player. 在在線上出售Zune HD或將其出售給其他人之前&#xff0c…

SSM框架——使用MyBatis Generator自動創建代碼

SSM框架——使用MyBatis Generator自動創建代碼 這是通過命令行, 不用ide插件. 若在IDEA中通過插件generator, 還可以參考另一篇: IDEA搭建SpringSpringMVCmybatis框架教程轉載于:https://www.cnblogs.com/yadongliang/p/8097449.html

鏡像VirtualBox 下安裝 CentOS 7搭建python項目

一、下載和安裝VirtualBox工具 CentOS 鏡像 下載地址(windows x86):百度網盤 提取碼:z44g 安裝說明:簡書-XiTeacher 二、下載OS輔助工具——putty,mtputty,winscp 下載地址(windo…

Python基礎七(函數)

函數概述 函數:組織好的、可重復使用的。杉樹能提高應用的模塊性和代碼的重復利用性。Python提供了很多的內置函數,比如len()等等,可以自行定義函數。 函數的定義 def 函數名(參數列表): #函數定義 函數體…

ios 取消交互_每日新聞摘要:Google披露了iOS“無交互”漏洞

ios 取消交互Google, through its Project Zero initiative, disclosed six vulnerabilities in iOS. In each case, a hacker could execute remote code on someone’s iPhone without any interaction by the user. Apple’s iOS 12.3 fixes five of the issues. 谷歌通過其…

Ubuntu 16.04使用timedatectl進行管理時間(UTC/CST)(服務器/桌面)

說明:16.04開始,systemd接管了系統之后就不再使用/etc/default/rcS和ntpdate、dpkg-reconfigure tzdata進行時間的管理,所以在這些地方設置是無效的,標準的寫法是使用timedatectl進行管理。且經過測試hwclock操作硬件BIOS&#xf…

讓你的div可拖動(手機端)

電腦端引入 jQuery UI 可以實現。而手機并沒有 mousemove 等事件,所以這里采用手機事件:touchstart 和 touchmove 實現拖拽。 一、引入: 只要引入 jQuery.js 和 dragger.js(如下)即可 注:實現拖拽部分轉…

5-4 全局變量

1、函數內部使用全局變量時,需要申明global 1 name 小明 # 定義一個全局變量name,并給它賦值小明2 stus [] # 定義一個空list3 # list、字典、集合4 5 def a():6 # 字符串、int、float、元組 需要聲明global7 global name # 函數內部使用局部變量時&a…

黑客攻防:從入門到入獄_每日新聞摘要:游戲服務黑客被判入獄27個月

黑客攻防:從入門到入獄On Christmas day, 2013, many delighted people opened up new Xbox and Playstation gifts. That excitement turned to disappointment when they were unable to log onto game services and play. Now the hacker responsible will spend 27 months …