【DotNetMLLearn】.NET Core 人工智能系列-.NET Interactive环境介绍
在進(jìn)入.NET Core 的人工智能應(yīng)用開始前,我們先把環(huán)境搭建好,為以后的學(xué)習(xí)提供一個(gè)便利。作為一個(gè).NET 程序員,或者其他編程語(yǔ)言的程序員,相信對(duì)IDE的依賴必不可少,如Visual Studio/Visual StudioCode , IntelliJ , Eclipse等。但是對(duì)于一個(gè)從事數(shù)據(jù)科學(xué)的人來(lái)說(shuō),和傳統(tǒng)的編程相比又有所不同,他們更喜歡通過(guò)Notebook作為主要的數(shù)據(jù)科學(xué)工作的工具。通過(guò)概述的學(xué)習(xí),你可能知道這一個(gè)重要的知識(shí)點(diǎn),但具體還是要和大家介紹一下。環(huán)境配置,我們也從.NET Interactive開始。
1、
為何要用Jupyter Notebook?
我們先看看Jupyter Notebook 是什么。Jupyter 是一種免費(fèi)的、開源的、交互式網(wǎng)絡(luò)工具,稱為計(jì)算筆記本,研究人員可以使用它在單個(gè)文檔中組合軟件代碼、計(jì)算輸出、解釋性文本和多媒體資源。Jupyter Notebook有以下特性:
數(shù)據(jù)分析
Jupyter Notebook允許用戶在線查看代碼的結(jié)果,而無(wú)需依賴代碼的其他部分。在筆記本中,可以隨時(shí)檢查代碼的每個(gè)單元格以繪制輸出。因此,與 傳統(tǒng)IDE 不同,Jupyter Notebook有助于在線打印輸出,這對(duì)于探索性數(shù)據(jù)分析 (EDA) 過(guò)程非常有用。
每個(gè)cell都有緩存
傳統(tǒng)開發(fā)工具要保留每行的執(zhí)行狀態(tài)都比較難,但 Jupyter Notebook可以緩存每行的結(jié)果——無(wú)論是訓(xùn)練 ML 模型的本地代碼還是從遠(yuǎn)程服務(wù)下載的代碼。
和編程語(yǔ)言無(wú)關(guān)
支持多種語(yǔ)言,多種格式。
數(shù)據(jù)可視化
作為一個(gè)組件, Jupyter Notebook支持可視化并包括渲染一些數(shù)據(jù)集,如圖形和圖表,這些數(shù)據(jù)集是在 Matplotlib、Plotly 或 Bokeh 等模塊的幫助下從代碼生成的。Jupyter 允許用戶敘述可視化,同時(shí)共享代碼和數(shù)據(jù)集,使其他人能夠進(jìn)行交互式更改。
與代碼的實(shí)時(shí)交互
Jupyter Notebook 使用“ipywidgets”包,它提供了用于探索代碼和數(shù)據(jù)交互性的標(biāo)準(zhǔn)用戶界面。因此代碼可以由用戶編輯,也可以發(fā)送重新運(yùn)行,使 Jupyter 的代碼非靜態(tài)。它允許用戶控制代碼的輸入源并直接在瀏覽器上提供反饋。
記錄代碼示例
Jupyter 使用戶可以輕松地逐行解釋他們的代碼,并附帶反饋。更好的是,使用 Jupyter,用戶可以添加交互性和解釋,同時(shí)代碼功能齊全。
2、
.NET Interactive 介紹
.NET Interactive 就是一個(gè)更靈活的代碼交互方式,專注于數(shù)據(jù)瀏覽與整理。你可以把他看作Jupyter Notebook下的.NET 插件。如果你曾經(jīng)接觸過(guò)Xamarin你會(huì)發(fā)現(xiàn)它和Xamarin Workbooks很像,通過(guò).NET Interactive 可以寫簡(jiǎn)單的代碼,而且還可以通過(guò)Nuget引入相關(guān)的package ,讓你在數(shù)據(jù)分析,代碼探索,機(jī)器學(xué)習(xí)場(chǎng)景更好地應(yīng)用你熟悉.NET Core 技術(shù)。
.NET Interactive 是.NET 團(tuán)隊(duì)開發(fā)的插件,可以支持傳統(tǒng)的Jupyter Notebook 的頁(yè)面使用,也可以通過(guò)Visual Studio Code 安裝.NET Interactive 的插件直接在IDE 開發(fā)。
3、
.NET Interactive 安裝
.NET Interactive的安裝需要以來(lái)于Python 以及安裝JupyterNotebook,所以你需要在你的機(jī)器上安裝Python(建議安裝3.8.x 的Python版本),如果你安裝Python 成功后需要通過(guò)命令行安裝。
pip3 install jupyter
安裝成功后,別忘記在本機(jī)安裝.NET Core,.NET Interactive 支持.NET Core 3.x+的版本(建議本機(jī)安裝.NET Core 5.x 的版本),安裝成功后 ,就可以通過(guò)dotnet tool 安裝.NET Interactive 了
dotnet tool install --global Microsoft.dotnet-interactive
注意:dotnet tool 需要配置全局PATH ,否則會(huì)影響dotnet-interactive的運(yùn)行 (關(guān)于 dotnet tool path 的文檔可以參考 https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-tool-install)。
把.NET Interactive 綁定到Jupyter Notebook
dotnet-interactive jupyter install
通過(guò)運(yùn)行以下命令檢查.NET Interactive是否已經(jīng)已經(jīng)增加到Jupyter Notebook 的支持環(huán)境下:
jupyter kernelspec list
完成以上相關(guān)操作后,你就可以直接通過(guò)Jupyter Notebook 調(diào)用.NET Interactive去使用C#/F#完成數(shù)據(jù)科學(xué)的工作了 。
你可以通過(guò)命令行的方式去運(yùn)行
jupyter notebook
注意:如果你是第一次運(yùn)行jupyter notebook 有可能提示你輸入密碼,你可以通過(guò)以下鏈接完成密碼修改工作
https://jupyter-notebook.readthedocs.io/en/stable/public_server.html
如果你希望獲取更多Jupyter Notebook 的知識(shí)可以訪問(wèn)以下鏈接
https://jupyter-notebook.readthedocs.io/en/stable/
也可以通過(guò)Visual Studio Code 安裝.NET Interactive后直接運(yùn)行Notebook的應(yīng)用。
4、
使用.NET Interactive示例一
在本機(jī)命令行任意位置創(chuàng)建一個(gè)文件夾,然后進(jìn)入該文件夾,直接輸入jupyter notebook
在瀏覽器打開輸入http://localhost:8888
通過(guò)點(diǎn)擊New 選擇C# 創(chuàng)建一個(gè)新的notebook 文件,然后每行依次輸入
var info = new ReactorInfo{ Name = "Kinfey", Title ="Reactor Guest" };
string infoString = JsonSerializer.Serialize(info);
Console.WriteLine(infoString);
這里注意通過(guò)菜單欄的’+‘增加行
然后按Run運(yùn)行逐行代碼可以看到以下結(jié)果
5、
使用.NET Interactive示例二
在Visual Studio Code 創(chuàng)建一個(gè)以.ipynb的文件(.ipynb是Notebook的默認(rèn)文件),然后通過(guò)nuget 添加RazorInteractive庫(kù)(RazorInteractive 是一個(gè)可以讓你在.NET Interactive下寫做可交互的Razor模板操作)
#r "nuget: RazorInteractive, 1.0.5"
在導(dǎo)入成功下,分別每行添加以下代碼
每行執(zhí)行,你可以看到以下結(jié)果
?.NET Interactive讓你的.NET編程變得有趣,為你在一些實(shí)驗(yàn)環(huán)境,一些教學(xué)上提供了更方便的支持,而且結(jié)合以后的學(xué)習(xí)你可以非常簡(jiǎn)易地完成數(shù)據(jù)交互的操作,讓.NET 程序員完成數(shù)據(jù)科學(xué)的工作更容易。大家快快嘗試下吧。
總結(jié)
以上是生活随笔為你收集整理的【DotNetMLLearn】.NET Core 人工智能系列-.NET Interactive环境介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Quartz - 作业调度框架-插件化开
- 下一篇: 这个时代最重要的技能之一(数据分析)