精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用 .NET 5 體驗大數據和機器學習

開發 前端 大數據
在本文中,我們將介紹 .NET for Spark、大數據、ML.NET 和機器學習的基礎知識,我們將研究其 API 和功能,向你展示如何開始構建和消費你自己的 Spark 作業和 ML.NET 模型。

.NET 5 旨在提供統一的運行時和框架,使其在各平臺都有統一的運行時行為和開發體驗。微軟發布了與 .NET 協作的大數據(.NET for Spark)和機器學習(ML.NET)工具,這些工具共同提供了富有成效的端到端體驗。在本文中,我們將介紹 .NET for Spark、大數據、ML.NET 和機器學習的基礎知識,我們將研究其 API 和功能,向你展示如何開始構建和消費你自己的 Spark 作業和 ML.NET 模型。

什么是大數據

大數據是一個幾乎不言自明的行業術語。該術語指的是大型數據集,通常涉及 TB 甚至 PB 級的信息,這些數據集被用作分析的輸入,以揭示數據中的模式和趨勢。大數據與傳統工作負載之間的關鍵區別在于,大數據往往過于龐大、復雜或多變,傳統數據庫和應用程序無法處理。一種流行的數據分類方式被稱為 "3V"(譯注:即3個V,Volume 容量、Velocity 速度、Variety 多樣性)。

大數據解決方案是為適應高容量、處理復雜多樣的數據結構而定制的,并通過批處理(靜態)和流處理(動態)來管理速度。

大多數大數據解決方案都提供了在數據倉庫中存儲數據的方式,數據倉庫通常是一個為快速檢索和為并行處理而優化的分布式集群。處理大數據往往涉及多個步驟,如下圖所示: 

使用 .NET 5 體驗大數據和機器學習

.NET 5 開發人員如果需要基于大型數據集進行分析和洞察,可以使用基于流行的大數據解決方案 Apache Spark 的 .NET 實現:.NET for Spark。

.NET for Spark

.NET for Spark 基于 Apache Spark,這是一個用于處理大數據的開源分析引擎。它被設計為在內存中處理大量數據,以提供比其他依賴持久化存儲的解決方案更好的性能。它是一個分布式系統,并行處理工作負載。它為加載數據、查詢數據、處理數據和輸出數據提供支持。

Apache Spark 支持 Java、Scala、Python、R 和 SQL。微軟創建了 .NET for Spark 以增加對 .NET 的支持。該解決方案提供了免費、開放、跨平臺的工具,用于使用 .NET 所支持的語言(如 C#和 F#)構建大數據應用程序,這樣你就可以使用現有的 .NET 庫,同時利用 SparkSQL 等 Spark 特性。 

使用 .NET 5 體驗大數據和機器學習

以下代碼展示了一個小而完整的 .NET for Spark 應用程序,它讀取一個文本文件并按降序輸出字數。 

  1. using Microsoft.Spark.Sql; 
  2.  
  3. namespace MySparkApp 
  4.     class Program 
  5.     { 
  6.         static void Main(string[] args) 
  7.         { 
  8.             // Create a Spark session. 
  9.             SparkSession spark = SparkSession.Builder().AppName("word_count_sample").GetOrCreate(); 
  10.  
  11.             // Create initial DataFrame. 
  12.             DataFrame dataFrame = spark.Read().Text("input.txt"); 
  13.  
  14.             // Count words. 
  15.             DataFrame words = dataFrame.Select(Functions.Split(Functions.Col("value"), " ").Alias("words")) 
  16.                 .Select(Functions.Explode(Functions .Col("words")) 
  17.                 .Alias("word")) 
  18.                 .GroupBy("word"
  19.                 .Count() 
  20.                 .OrderBy(Functions.Col("count").Desc()); 
  21.  
  22.             // Show results. 
  23.             words.Show(); 
  24.  
  25.             // Stop Spark session. 
  26.             spark.Stop(); 
  27.         } 
  28.     } 

在開發機器上配置 .NET for Spark 需要安裝幾個依賴,包括 Java SDK 和 Apache Spark。你可以在這里(https://aka.ms/go-spark-net)查看手把手的入門指南。

Spark for .NET 可在多種環境中運行,并可部署到云中運行。可部署目標包括 Azure HDInsight、Azure Synapse、AWS EMR Spark 和 Databricks 等。如果數據作為項目可用的一部分,你可以將其與其他 project 文件一起提交。

大數據通常與機器學習一起使用,以獲得關于數據的洞察。

什么是機器學習

首先,我們先來介紹一下人工智能和機器學習的基本知識。

人工智能(AI)是指計算機模仿人類智慧和能力,如推理和尋找意義。典型的人工智能技術通常是從規則或邏輯系統開始的。作為一個簡單的例子,想一想這樣的場景:你想把某樣東西分類為“面包”或“不是面包”。當你開始時,這似乎是一個簡單的問題,例如“如果它有眼睛,它就不是面包”。然而,你很快就會開始意識到,有很多不同的特征可以將某物定性為面包與非面包,而且特征越多,一系列的 if 語句就會越長越復雜,如下圖所示: 

使用 .NET 5 體驗大數據和機器學習

從上圖中的例子可以看出,傳統的、基于規則的人工智能技術往往難以擴展。這就是機器學習的作用。機器學習(ML)是人工智能的一個子集,它能在過去的數據中找到模式,并從經驗中學習,以對新數據采取行動。ML 允許計算機在沒有明確的邏輯規則編程的情況下進行預測。因此,當你有一個難以(或不可能)用基于規則的編程解決的問題時,你可以使用 ML。你可以把 ML 看作是 "對不可編程的編程"。

為了用 ML 解決“面包”與“非面包”的問題,你提供面包的例子和非面包的例子(如下圖所示),而不是實現一長串復雜的 if 語句。你將這些例子傳遞給一個算法,該算法在數據中找到模式,并返回一個模型,然后你可以用這個模型來預測尚未被模型“看到”的圖像是“面包”還是“不是面包”。 

使用 .NET 5 體驗大數據和機器學習

上圖展示了 AI 與 ML 的另一種思考方式。AI 將規則和數據作為輸入,預期輸出基于這些規則的答案。而 ML 則是將數據和答案作為輸入,輸出可用于對新數據進行歸納的規則。 

使用 .NET 5 體驗大數據和機器學習

AI 將規則和數據作為輸入,并根據這些規則輸出預期的答案。ML 將數據和答案作為輸入,并輸出可用于概括新數據的規則。

ML.NET

微軟在 2019 年 5 月的 Build 上發布了 ML.NET,這是一個面向.NET 開發人員的開源、跨平臺 ML 框架。在過去的九年里,微軟的團隊已經廣泛使用該框架的內部版本來實現流行的 ML 驅動功能;一些例子包括 Dynamics 365 欺詐檢測、PowerPoint 設計理念和 Microsoft Defender 防病毒威脅保護。

ML.NET 允許你在.NET 生態系統中構建、訓練和消費 ML 模型,而不需要 ML 或數據科學的背景。ML.NET 可以在任何.NET 運行的地方運行。Windows、Linux、macOS、on-prem、離線場景(如 WinForms 或 WPF 桌面應用)或任何云端(如 Azure)中。你可以將 ML.NET 用于各種場景,如表 1 所述。

ML.NET 使用自動機器學習(或稱 AutoML)來自動構建和訓練 ML 模型的過程,以根據提供的場景和數據找到最佳模型。你可以通過 AutoML.NET API 或 ML.NET 工具來使用 ML.NET 的 AutoML,其中包括 Visual Studio 中的 Model Builder 和跨平臺的 ML.NET CLI,如圖 6 所示。除了訓練最佳模型外,ML.NET 工具還生成在最終用戶.NET 應用程序中消費模型所需的文件和 C#代碼,該應用程序可以是任何.NET 應用程序(桌面、Web、控制臺等)。所有 AutoML 方案都提供了本地訓練選項,圖像分類也允許你利用云的優勢,使用 Model Builder 中的 Azure ML 進行訓練。 

使用 .NET 5 體驗大數據和機器學習

你可以在 Microsoft Docs 中了解更多關于 ML.NET 的信息,網址是:https://aka.ms/mlnetdocs。

ML 和大數據結合

大數據和 ML 可以很好地結合在一起。讓我們構建一個同時使用 Spark for .NET 和 ML.NET 的管道,以展示大數據和 ML 如何一起工作。Markdown 是一種用于編寫文檔和創建靜態網站的流行語言,它使用的語法不如 HTML 復雜,但提供的格式控制比純文本更多。這是從 .NET 文檔庫中的摘取一段 markdown 文件內容: 

  1. --- 
  2. title: Welcome to .NET 
  3. description: Getting started with the .NET 
  4. family of technologies. 
  5. ms.date: 12/03/2019 
  6. ms.custom: "updateeachrelease" 
  7. --- 
  8.  
  9. # Welcome to .NET 
  10.  
  11. See [Get started with .NET Core](core/get-started.md) to learn how to create .NET Core apps. 
  12.  
  13. Build many types of apps with .NET, such as cloud ,IoT, and games using free cross-platform tools... 

破折號之間的部分稱為前頁(front matter),是使用 YAML 描述的有關文檔的元數據。以井號(#)開頭的部分是標題。兩個哈希(##)表示二級標題。“ .NET Core 入門”是一個超鏈接。

我們的目標是處理大量文檔,添加諸如字數和估計的閱讀時間之類的元數據,并將相似的文章自動分組在一起。

這是我們將構建的管道:

  • 為每個文檔建立字數統計;
  • 估計每個文檔的閱讀時間;
  • 根據“ TF-IDF”或“術語頻率/反向文檔頻率”為每個文檔創建前 20 個單詞的列表(這將在后面說明)。

第一步是拉取文檔存儲庫和需引用的應用程序。你可以使用任何包含 Markdown 文件的存儲庫及文件夾結構。本文使用的示例來自 .NET 文檔存儲庫,可從 https://aka.ms/dot-net-docs 克隆。

為.NET 和 Spark 準備本地環境之后,可以從https://aka.ms/spark-ml-example拉取項目。

解決方案文件夾包含一個批處理命令(在倉庫中有提供),你可以使用該命令來運行所有步驟。

處理 Markdown

DocRepoParser 項目以遞歸方式遍歷存儲庫中的子文件夾,以收集各文檔有關的元數據。Common 項目包含幾個幫助程序類。例如,FilesHelper 用于所有文件 I/O。它跟蹤存儲文件和文件名的位置,并提供諸如為其他項目讀取文件的服務。構造函數需要一個標簽(一個唯一標識工作流的數字)和包含文檔的 repo 或頂級文件夾的路徑。默認情況下,它在用戶的本地應用程序數據文件夾下創建一個文件夾。如有必要,可以將其覆蓋。

MarkdownParser利用 Microsoft.Toolkit.Parsers解析 Markdown 的庫。該庫有兩個任務:首先,它必須提取標題和子標題;其次,它必須提取單詞。Markdown 文件以 "塊 "的形式暴露出來,代表標題、鏈接和其他 Markdown 特征。塊又包含承載文本的“Inlines”。例如,這段代碼通過迭代行和單元格來解析一個 TableBlock,以找到 Inlines。 

  1. case TableBlock table
  2.     table.Rows.SelectMany(r => r.Cells) 
  3.         .SelectMany(c => c.Inlines) 
  4.         .ForEach(i => candidate = RecurseInline(i, candidate, words, titles)); 
  5.         break; 

此代碼提取超鏈接的文本部分: 

  1. case HyperlinkInline hyper: 
  2.     if (!string.IsNullOrWhiteSpace(hyper.Text)) 
  3.     { 
  4.         words.Append(hyper.Text.ExtractWords()); 
  5.     } 
  6.     break; 

結果是一個 CSV 文件,如下圖所示: 

使用 .NET 5 體驗大數據和機器學習

第一步只是準備要處理的數據。下一步使用 Spark for .NET 作業確定每個文檔的字數,閱讀時間和前 20 個術語。

構建 Spark Job

SparkWordsProcessor項目用來運行 Spark 作業。雖然該應用程序是一個控制臺項目,但它需要 Spark 來運行。runjob.cmd批處理命令將作業提交到正確配置的 Windows 計算機上運行。典型作業的模式是創建一個會話或“應用程序”,執行一些邏輯,然后停止會話。 

  1. var spark = SparkSession.Builder() 
  2.     .AppName(nameof(SparkWordsProcessor)) 
  3.     .GetOrCreate(); 
  4. RunJob(); 
  5. spark.Stop(); 

通過將其路徑傳遞給 Spark 會話,可以輕松讀取上一步的文件。 

  1. var docs = spark.Read().HasHeader().Csv(filesHelper.TempDataFile); 
  2. docs.CreateOrReplaceTempView(nameof(docs)); 
  3. var totalDocs = docs.Count(); 

docs變量解析為一個DataFrame。Data Frame 本質上是一個帶有一組列和一個通用接口的表,用于與數據交互,而不管其底層來源是什么。可以從其他 data frame 中引用一個 data frame。SparkSQL 也可以用來查詢 data frame。你必須創建一個臨時視圖,該視圖為 data frame 提供別名,以便從 SQL 中引用它。通過CreateOrReplaceTempView方法,可以像這樣從 data frame 中查詢行:

  1. SELECT * FROM docs 

totalDocs變量檢索文檔中所有行的計數。Spark 提供了一個名為Split的將字符串分解為數組的函數。Explode函數將每個數組項變成一行: 

  1. var words = docs.Select(fileCol, 
  2.     Functions.Split(nameof(FileDataParse.Words) 
  3.     .AsColumn(), " "
  4.     .Alias(wordList)) 
  5.     .Select(fileCol, Functions.Explode(wordList.AsColumn()) 
  6.     .Alias(word)); 

該查詢為每個單詞或術語生成一行。這個 data frame 是生成術語頻率(TF)或者說每個文檔中每個詞的計數的基礎。 

  1. var termFrequency = words 
  2.     .GroupBy(fileCol, Functions.Lower(word.AsColumn()).Alias(word)) 
  3.     .Count() 
  4.     .OrderBy(fileCol, count.AsColumn().Desc()); 

Spark 有內置的模型,可以確定“術語頻率/反向文檔頻率”。在這個例子中,你將手動確定術語頻率來演示它是如何計算的。術語在每個文檔中以特定的頻率出現。一篇關于 wizard 的文檔可能有很高的“wizard”一詞計數。同一篇文檔中,"the "和 "is "這兩個詞的出現次數可能也很高。對我們來說,很明顯,“wizard”這個詞更重要,也提供了更多的語境。另一方面,Spark 必須經過訓練才能識別重要的術語。為了確定什么是真正重要的,我們將總結文檔頻率(document frequency),或者說一個詞在 repo 中所有文檔中出現的次數。這就是“按不同出現次數分組”: 

  1. var documentFrequency = words 
  2.     .GroupBy(Functions.Lower(word.AsColumn()) 
  3.     .Alias(word)) 
  4.     .Agg(Functions.CountDistinct(fileCol) 
  5.     .Alias(docFrequency)); 

現在是計算的時候了。一個特殊的方程式可以計算出所謂的反向文檔頻率(inverse document frequency),即 IDF。將總文檔的自然對數(加一)輸入方程,然后除以該詞的文檔頻率(加一)。 

  1. static double CalculateIdf(int docFrequency, int totalDocuments) => 
  2.     Math.Log(totalDocuments + 1) / (docFrequency + 1); 

在所有文檔中出現的詞比出現頻率較低的詞賦值低。例如,給定 1000 個文檔,一個在每個文檔中出現的詞與一個只在少數文檔中出現的詞(約 1 個)相比,IDF 為 0.003。Spark 支持用戶定義的函數,你可以這樣注冊。

  1. spark.Udf().Register<intintdouble>(nameof(CalculateIdf), CalculateIdf); 

接下來,你可以使用該函數來計算 data frame 中所有單詞的 IDF: 

  1. var idfPrep = documentFrequency.Select(word.AsColumn(), 
  2.     docFrequency.AsColumn()) 
  3.         .WithColumn(total, Functions.Lit(totalDocs)) 
  4.         .WithColumn(inverseDocFrequency, 
  5.             Functions.CallUDF(nameof(CalculateIdf), docFrequency.AsColumn(), total.AsColumn() 
  6.         ) 
  7.     ); 

使用文檔頻率 data frame,增加兩列。第一列是文檔的單詞總數量,第二列是調用你的 UDF 來計算 IDF。還有一個步驟,就是確定“重要詞”。重要詞是指在所有文檔中不經常出現,但在當前文檔中經常出現的詞,用 TF-IDF 表示,這只是 IDF 和 TF 的產物。考慮“is”的情況,IDF 為 0.002,在文檔中的頻率為 50,而“wizard”的 IDF 為 1,頻率為 10。相比頻率為 10 的“wizard”,“is”的 TF-IDF 計算結果為 0.1。這讓 Spark 對重要性有了更好的概念,而不僅僅是原始字數。

到目前為止,你已經使用代碼來定義 data frame。讓我們嘗試一下 SparkSQL。為了計算 TF-IDF,你將文檔頻率 data frame 與反向文檔頻率 data frame 連接起來,并創建一個名為termFreq_inverseDocFreq的新列。下面是 SparkSQL:

  1. var idfJoin = spark.Sql($"SELECT t.File, d.word, d.{docFrequency}, d.{inverseDocFrequency}, t.count, d.{inverseDocFrequency} * t.count as {termFreq_inverseDocFreq} from {nameof(documentFrequency)} d inner join {nameof(termFrequency)} t on t.word = d.word"); 

探索代碼,看看最后的步驟是如何實現的。這些步驟包括:

到目前為止所描述的所有步驟都為 Spark 提供了一個模板或定義。像 LINQ 查詢一樣,實際的處理在結果被具體化之前不會發生(比如計算出總文檔數時)。最后一步調用 Collect 來處理和返回結果,并將其寫入另一個 CSV。然后,你可以使用新文件作為 ML 模型的輸入,下圖是該文件的一部分: 

使用 .NET 5 體驗大數據和機器學習

Spark for .NET 使你能夠查詢和塑造數據。你在同一個數據源上建立了多個 data frame,然后添加它們以獲得關于重要術語、字數和閱讀時間的洞察。下一步是應用 ML 來自動生成類別。

預測類別

最后一步是對文檔進行分類。DocMLCategorization項目包含了 ML.NET 的Microsoft.ML包。雖然 Spark 使用的是 data frame,但 data view 在 ML.NET 中提供了類似的概念。

這個例子為 ML.NET 使用了一個單獨的項目,這樣就可以將模型作為一個獨立的步驟進行訓練。對于許多場景,可以直接從你的.NET for Spark 項目中引用 ML.NET,并將 ML 作為同一工作的一部分來執行。

首先,你必須對類進行標記,以便 ML.NET 知道源數據中的哪些列映射到類中的屬性。在FileData 類使用 LoadColumn 注解,就像這樣: 

  1. [LoadColumn(0)] 
  2. public string File { get; set; } 
  3.  
  4. [LoadColumn(1)] 
  5. public string Title { get; set; } 

然后,你可以為模型創建上下文,并從上一步中生成的文件中加載 data view: 

  1. var context = new MLContext(seed: 0); 
  2. var dataToTrain = context.Data 
  3.     .LoadFromTextFile<FileData>(path: filesHelper.ModelTrainingFile, hasHeader: true, allowQuoting: true, separatorChar: ','); 

ML 算法對數字的處理效果最好,所以文檔中的文本必須轉換為數字向量。ML.NET 為此提供了FeaturizeText方法。在一個步驟中,模型分別:

  • 檢測語言
  • 將文本標記為單個單詞或標記
  • 規范化文本,以便對單詞的變體進行標準化和大小寫相似化
  • 將這些術語轉換為一致的數值或準備處理的“特征向量”

以下代碼將列轉換為特征,然后創建一個結合了多個特征的“Features”列。 

  1. var pipeline = context.Transforms.Text.FeaturizeText( 
  2.     nameof(FileData.Title).Featurized(), 
  3.     nameof(FileData.Title)).Append(context.Transforms.Text.FeaturizeText(nameof(FileData.Subtitle1).Featurized(), 
  4.     nameof(FileData.Subtitle1))).Append(context.Transforms.Text.FeaturizeText(nameof(FileData.Subtitle2).Featurized(), 
  5.     nameof(FileData.Subtitle2))).Append(context.Transforms.Text.FeaturizeText(nameof(FileData.Subtitle3).Featurized(), 
  6.     nameof(FileData.Subtitle3))).Append(context.Transforms.Text.FeaturizeText(nameof(FileData.Subtitle4).Featurized(), 
  7.     nameof(FileData.Subtitle4))).Append(context.Transforms.Text.FeaturizeText(nameof(FileData.Subtitle5).Featurized(), 
  8.     nameof(FileData.Subtitle5))).Append(context.Transforms.Text.FeaturizeText(nameof(FileData.Top20Words).Featurized(), 
  9.     nameof(FileData.Top20Words))).Append(context.Transforms.Concatenate(features, nameof(FileData.Title).Featurized(), 
  10.     nameof(FileData.Subtitle1).Featurized(), 
  11.     nameof(FileData.Subtitle2).Featurized(), 
  12.     nameof(FileData.Subtitle3).Featurized(), 
  13.     nameof(FileData.Subtitle4).Featurized(), 
  14.     nameof(FileData.Subtitle5).Featurized(), 
  15.     nameof(FileData.Top20Words).Featurized()) 
  16. ); 

此時,數據已經為訓練模型做了適當的準備。訓練是無監督的,這意味著它必須用一個例子來推斷信息。你沒有將樣本類別輸入到模型中,所以算法必須通過分析特征如何聚類來找出數據的相互關聯。你將使用k-means 聚類算法。該算法使用特征計算文檔之間的“距離”,然后圍繞分組后的文檔“繪制”邊界。該算法涉及隨機化,因此兩次運行結果會是不相同的。主要的挑戰是確定訓練的最佳聚類大小。不同的文檔集最好有不同的最佳類別數,但算法需要你在訓練前輸入類別數。

代碼在 2 到 20 個簇之間迭代,以確定最佳大小。對于每次運行,它都會獲取特征數據并應用算法或訓練器。然后,它根據預測模型對現有數據進行轉換。對結果進行評估,以確定每個簇中文檔的平均距離,并選擇平均距離最小的結果。 

  1. var options = new KMeansTrainer.Options 
  2.     FeatureColumnName = features, 
  3.     NumberOfClusters = categories, 
  4. }; 
  5.  
  6. var clusterPipeline = pipeline.Append(context.Clustering.Trainers.KMeans(options)); 
  7. var model = clusterPipeline.Fit(dataToTrain); 
  8. var predictions = model.Transform(dataToTrain); 
  9. var metrics = context.Clustering.Evaluate(predictions); 
  10. distances.Add(categories, metrics.AverageDistance); 

經過培訓和評估后,你可以保存最佳模型,并使用它對數據集進行預測。將生成一個輸出文件以及一個摘要,該摘要顯示有關每個類別的一些元數據并在下面列出標題。標題只是幾個功能之一,因此有時需要仔細研究細節才能使類別有意義。在本地測試中,教程之類的文檔歸于一組,API 文檔歸于另一組,而例外歸于它們自己的組。

ML zip 文件可與 Prediction Engine 一起用于其他項目中的新數據。

機器學習模型另存為單個 zip 文件。該文件可以包含在其他項目中,與 Prediction Engine 一起使用以對新數據進行預測。例如,你可以創建一個 WPF 應用程序,該應用程序允許用戶瀏覽目錄,然后加載并使用經過訓練的模型對文檔進行分類,而無需先對其進行訓練。

下一步是什么

Spark for .NET 計劃與.NET 5 同時在 GA(譯注:GA=General Availability,正式發布的版本)發布。請訪問 https://aka.ms/spark-net-roadmap 閱讀路線圖和推出功能的計劃。(譯注:.NET 5 正式發布時間已過,Spark for .NET 已隨 .NET 5 正式發布)

本文著重于本地開發體驗,為了充分利用大數據的力量,你可以將 Spark 作業提交到云中。有各種各樣的云主機可以容納 PB 級數據,并為你的工作負載提供數十個核的計算能力。Azure Synapse Analytics 是一項 Azure 服務,旨在承載大量數據,提供用于運行大數據作業的群集,并允許通過基于圖表的儀表盤進行交互式探索。若要了解如何將 Spark for .NET 作業提交到 Azure Synapse,請閱讀官方文檔(https://aka.ms/spark-net-synapse)。

下面這張表列舉了 ML.NET 機器學習的常見任務和場景: 

 

使用 .NET 5 體驗大數據和機器學習

 

 

 

 

 

責任編輯:未麗燕 來源: 今日頭條
相關推薦

2019-03-14 13:06:41

機器學習大數據數據科學

2017-05-08 15:15:39

大數據機器學習

2018-03-18 16:10:24

2017-02-16 13:44:47

2017-10-26 12:32:23

機器學習大數據藥物

2017-09-01 10:32:56

2019-07-12 10:36:50

大數據互聯網工具

2014-06-19 13:29:29

機器學習大數據

2014-03-31 15:08:23

機器學習大數據

2017-12-01 08:44:36

機器學習大數據管理

2015-04-20 14:36:52

大數據大數據分析提升客戶體驗

2021-03-01 11:39:34

機器學習深度學習人工智能

2019-09-30 10:12:21

機器學習數據映射

2014-08-27 16:01:05

AppDynamics

2016-06-07 10:28:07

大數據機器學習LSTM

2016-10-25 08:38:53

大數據DNA 變種癌癥

2013-03-22 09:24:06

大數據HadoopVertica

2021-07-08 10:07:18

5G大數據機器人

2022-03-15 17:12:03

大數據機器學習人工智能

2018-06-20 11:34:19

Reddit數據科學機器學習
點贊
收藏

51CTO技術棧公眾號

免费日韩电影在线观看| 日韩欧美亚洲国产精品字幕久久久 | a视频在线播放| 成人福利电影精品一区二区在线观看| 色综合五月天导航| 亚洲一区二区三区蜜桃| 外国成人毛片| 粉嫩av一区二区三区免费野| 一本色道久久综合亚洲精品婷婷| 亚洲a视频在线观看| 久久久蜜桃一区二区人| 欧美精品在线第一页| 五月天精品视频| 色悠久久久久综合先锋影音下载| 色婷婷久久一区二区三区麻豆| 91大学生片黄在线观看| 99中文字幕一区| 91丨九色丨尤物| 91成人伦理在线电影| 亚洲天堂视频在线播放| 亚洲精品男同| 久久av中文字幕| 摸摸摸bbb毛毛毛片| 6080亚洲理论片在线观看| 欧美日韩一区精品| caopor在线视频| 成人在线黄色电影| 一区二区高清免费观看影视大全| 日本一区二区三区视频在线观看| 天天摸天天碰天天爽天天弄| 国产精品66部| 91网站免费观看| 怡春院在线视频| 久久一区国产| 57pao成人永久免费视频| 麻豆国产尤物av尤物在线观看 | 精品在线欧美视频| 亚洲一区二区三区四区av| 99er精品视频| 欧美美女视频在线观看| 欧美伦理片在线观看| 亚洲承认视频| 色先锋资源久久综合| 精品久久久久久久久久中文字幕| 欧美人与性动交α欧美精品图片| 亚洲免费av网站| 久久久成人精品一区二区三区| 午夜不卡视频| 中文字幕一区二区三区不卡| 一区二区三区四区五区视频| 成人p站proumb入口| 国产农村妇女毛片精品久久麻豆| 欧美日韩一区二| 九九在线视频| 国产色综合久久| 天堂一区二区三区| 欧美三级黄网| 亚洲免费在线视频一区 二区| 青少年xxxxx性开放hg| 成人黄色在线电影| 亚洲午夜精品久久久久久久久| 亚洲 欧美 综合 另类 中字| 黄色大片在线| 欧美日韩亚洲系列| 亚洲精品高清无码视频| 欧美一级做a| 日韩美女主播在线视频一区二区三区| 午夜性福利视频| 欧美一级一片| 一区二区在线免费视频| 欧美激情精品久久久久久免费| 一区二区三区四区日韩| 久久久久在线观看| 99re国产在线| 国产一区激情在线| 国产一区二区三区黄| 免费一级毛片在线观看| 国产精品色婷婷久久58| 黄色一级大片免费| 中文字幕高清在线播放| 在线观看一区二区精品视频| 国产女同无遮挡互慰高潮91| 高清一区二区三区| 一区二区三区亚洲| 欧美成人手机视频| 亚洲欧美久久| 91中文在线观看| 少妇精品视频一区二区| 国产精品素人一区二区| 波多野结衣 作品| jk漫画禁漫成人入口| 欧美日本国产视频| 好男人香蕉影院| 日本一区二区三区视频| 久久久久久久网站| 中文字幕欧美在线观看| 丁香网亚洲国际| 亚州欧美一区三区三区在线| 国产美女福利在线观看| 欧美视频一区二区三区四区 | 色天下一区二区三区| 中文字幕在线成人| 国产成人自拍视频在线| 九九久久精品视频| 蜜桃av色综合| 久色国产在线| 欧美亚洲禁片免费| 182在线视频| 91精品蜜臀一区二区三区在线| 欧美亚洲一级片| 99精品国产99久久久久久97| 国产日韩v精品一区二区| 欧美这里只有精品| 亚洲二区av| 亚洲三级av在线| 日本亚洲色大成网站www久久| 久久精品国产免费| 日本一区二区三区在线视频| 97人人在线视频| 7799精品视频| 青青青视频在线免费观看| 乱码第一页成人| 国产伦精品一区二区三区在线 | 亚洲女同一区二区| 99sesese| 欧美日韩黑人| 国产成+人+综合+亚洲欧美丁香花| www.av黄色| 亚洲三级久久久| 污片在线免费看| 成人羞羞网站入口免费| 日本精品一区二区三区在线| 午夜影院在线视频| 午夜av区久久| 最新国产精品自拍| 欧美日韩综合| av在线亚洲男人的天堂| av网站在线免费| 91麻豆精品国产91久久久| 亚洲女人毛茸茸高潮| 日韩电影在线免费看| 日本10禁啪啪无遮挡免费一区二区| √最新版天堂资源网在线| 精品国产乱码久久久久久影片| 欧美黄色aaa| 国产成人精品免费在线| 国产精品69久久久| 白嫩白嫩国产精品| 性欧美xxxx| 凸凹人妻人人澡人人添| 欧美日韩中文字幕在线视频| 亚洲专区区免费| 鲁大师影院一区二区三区| 日本一区二区三区视频在线播放| 桃子视频成人app| 宅男66日本亚洲欧美视频| 亚洲天堂中文在线| 日韩美女精品在线| 99riav国产精品视频| 亚洲经典在线| 欧美一区二区综合| 日韩护士脚交太爽了| 欧美理论电影在线播放| 午夜久久久久久噜噜噜噜| 亚洲成人动漫在线观看| a级大片在线观看| 九色porny丨国产精品| 无码人妻aⅴ一区二区三区日本| 亚洲精品国产九九九| 91精品国产91久久久久久不卡| 免费黄色在线视频网站| 欧美精品久久久久久久多人混战 | 精品一区二区三区欧美| 中文字幕日韩精品无码内射| 欧美性生活一级片| 国产精品自拍小视频| 自由的xxxx在线视频| 精品va天堂亚洲国产| 天天干,天天干| **性色生活片久久毛片| 亚洲av成人精品一区二区三区 | 亚洲香蕉中文网| 久久精品免费| 一区二区成人国产精品| 高清精品视频| 国产一区香蕉久久| a天堂资源在线| 中文字幕最新精品| 日韩专区第一页| 欧美日韩国产成人在线91| 久久精品第一页| 国产欧美日韩亚州综合| 中国特级黄色片| 日本不卡一区二区三区| 97在线国产视频| 欧美韩国日本在线观看| 久久爱av电影| 精品国产亚洲日本| 国产精品高潮粉嫩av| heyzo在线| 久久久国产一区二区| 欧美男男激情freegay| 日韩精品中文字幕一区| 国产精品国产精品国产| 亚洲成人av资源| 日韩在线中文字幕视频| 日本一区二区三区国色天香| 国产一级黄色录像| 国产麻豆午夜三级精品| 久久婷婷国产91天堂综合精品| 激情欧美丁香| 桥本有菜av在线| 国产一区网站| 久久久水蜜桃| aiai久久| 91日本视频在线| 国产精品亚洲成在人线| 欧美又大又硬又粗bbbbb| 欧美一卡二卡| www国产精品com| 国产69精品久久app免费版| 亚洲成人精品在线| www.com在线观看| 在线电影一区二区三区| 瑟瑟视频在线免费观看| 色综合色综合色综合色综合色综合 | 亚洲va欧美va人人爽| 中文字幕影音先锋| 亚洲日本青草视频在线怡红院| 国产精品一区二区亚洲| 中文字幕第一页久久| 中文字幕网站在线观看| 久久综合九色综合欧美就去吻| 国产精品成人99一区无码| 国产精品一区二区在线看| 男人的天堂最新网址| 麻豆高清免费国产一区| 高清av免费看| 麻豆91在线观看| 性欧美1819| 精品在线视频一区| www.成年人| 国产麻豆精品theporn| 中文字幕第六页| 国产成人小视频| 久久久老熟女一区二区三区91| a级精品国产片在线观看| 亚洲成av人片在线观看无| 成人精品gif动图一区| 欧洲熟妇的性久久久久久| 岛国一区二区三区| 日本黄色动态图| 久久影院视频免费| 亚洲人成人无码网www国产 | 国产欧美久久久久| 亚洲福利国产| 日韩精品一区二区三区久久| 性色一区二区| 国产喷水theporn| 精品一区二区三区视频在线观看| 国产毛片久久久久久| 国产成人在线视频网站| 岛国精品资源网站| 国产欧美日韩三级| 免费三级在线观看| 亚洲国产sm捆绑调教视频| 欧美一区二区三区四| 欧美最新大片在线看| 国产又粗又猛又爽又黄91| 欧美不卡一区二区三区| 四虎在线观看| 色七七影院综合| 女人黄色免费在线观看| 人人澡人人澡人人看欧美| 国产91亚洲精品久久久| 亚洲一区二区日本| 老牛国内精品亚洲成av人片| 日产精品一线二线三线芒果| 国产高清一区| 国产69精品久久久久久久| 三级影片在线观看欧美日韩一区二区| 怡红院亚洲色图| 99免费精品视频| 女性裸体视频网站| 欧美日韩国产激情| 亚洲视频在线观看一区二区| 精品久久久久久综合日本欧美| 欧美理论在线观看| 久色乳综合思思在线视频| 色在线中文字幕| 92国产精品视频| 精品中文一区| 久久久天堂国产精品| 日日嗨av一区二区三区四区| 欧美熟妇另类久久久久久多毛| 久久久777精品电影网影网| 日本a级片视频| 91久久精品网| 色欲av永久无码精品无码蜜桃| 色av中文字幕一区| 日本在线影院| 成人影片在线播放| 精品久久久久久久久久久aⅴ| 国产在线观看欧美| 久久99精品久久久| 日韩一区二区a片免费观看| 夜夜嗨av一区二区三区网页 | 国产在线视频卡一卡二| 欧美三级视频在线观看| 四虎在线免费看| 欧美激情一级欧美精品| 成人免费观看49www在线观看| 久久青青草原| 精品电影一区| 国产一级二级av| 亚洲视频香蕉人妖| 中文字幕+乱码+中文乱码91| 日韩精品在线播放| 俺来也官网欧美久久精品| 91亚洲va在线va天堂va国| 成人在线免费观看91| 欧美韩国日本在线| 成人v精品蜜桃久久一区| 精国产品一区二区三区a片| 欧美人与性动xxxx| 三级外国片在线观看视频| 国产精品高潮粉嫩av| 国产剧情一区| 人妻无码视频一区二区三区| 99精品视频在线播放观看| 国产在线免费视频| 亚洲第一区第二区| 青青青草视频在线| 国产精品国产亚洲精品看不卡15| 亚洲国产精品日韩专区av有中文| 午夜宅男在线视频| 国产精品视频免费| 做爰无遮挡三级| 中文字幕日韩在线观看| 国产成人免费| 亚洲资源视频| 久久精品二区亚洲w码| 日本少妇aaa| 91麻豆精品国产91久久久久久久久 | 亚洲美女性囗交| 最新热久久免费视频| 国产视频第二页| 欧美另类在线观看| 国产精品极品在线观看| 欧美成人三级在线视频| 99精品久久久久久| 精品一区二三区| 日韩网站免费观看高清| 玖玖精品一区| 日韩视频在线视频| 91欧美一区二区| av首页在线观看| 日韩一区视频在线| 香蕉成人app| 欧美a v在线播放| 国产女人18毛片水真多成人如厕 | 亚洲精品黄网在线观看| 超级碰碰久久| 亚洲日本精品| 国产suv精品一区二区883| 国产一级做a爱片久久毛片a| 亚洲图片欧美日产| 国产激情精品一区二区三区| 免费高清一区二区三区| 久久一留热品黄| 又污又黄的网站| 久久久久久尹人网香蕉| 亚洲电影男人天堂| 一级做a免费视频| 午夜久久久久久电影| 国产精品久久一区二区三区不卡 | 久久av超碰| 亚洲天堂伊人网| 欧美日韩免费在线| 黄网站app在线观看| 国产专区一区二区| 美国一区二区三区在线播放| 久久黄色小视频| 国产亚洲精品久久久| 欧美区一区二区| 成人在线免费播放视频| 亚洲黄色av一区| 国产原创av在线| 超碰97国产在线| 日本午夜一区二区| 久一视频在线观看| 一区二区三区无码高清视频| 韩国精品福利一区二区三区| a在线观看免费视频| 亚洲va中文字幕| 最近中文字幕免费mv2018在线| 日韩av不卡播放| 97久久久精品综合88久久| 91在线公开视频| 日本亚洲欧洲色|