The referencesource repository contains sources from Microsoft .NET Reference Source that represent a subset of the .NET Framework. This subset contains similar functionality to the class libraries that are being developed in .NET Core. We intend to consult the referencesource repository as we develop .NET Core. It is also for the community to leverage to enable more scenarios for .NET developers.
لیستی از کامپوننتهای Angular
Accord.NET #2
برای استفاده از Accord.NET میتوان به یکی از دو صورت زیر اقدام کرد :
- دریافت آخرین نسخهی متن باز و یا dllهای پروژهی Accord.NET از طریق گیت هاب
- نصب از طریق NuGet (با توجه به این که در چارچوب Accord.NET کتابخانههای متنوعی وجود دارند و در هر پروژه نیاز به نصب همگی آنها نیست، فضای نامهای مختلف در بستههای مختلف نیوگت قرار گرفتهاند و برای نصب هر کدام میتوانیم یکی از فرمانهای زیر را استفاده کنیم)
PM> Install-Package Accord.MachineLearning
PM> Install-Package Accord.Imaging
PM> Install-Package Accord.Neuro
نکته : روشهای یادگیری به دو دسته کلی با نظارت (Supervised learning) و بدون نظارت (Unsupervised learning) تقسیم بندی میشوند. در روش با نظارت، دادهها دارای برچسب یا label هستند و عملا نوع کلاسها مشخص هستند و اصطلاحا برای طبقه بندی (Classification) استفاده میشوند. در روش بدون نظارت، دادههایمان بدون برچسب هستند و فقط تعداد کلاس ها و نیز یک معیار تفکیک پذیری مشخص است و برای خوشه بندی (Clustering) استفاده میشوند.
عملکرد SVM یا ماشین بردار پشتیبان به صورت خلاصه به این صورت است که با در نظر گرفتن یک خط یا ابرصفحه جدا کننده فرضی، ماشین یا دسته بندی را ایجاد میکند که از نقاط ابتدایی کلاسهای مختلف که بردار پشتیبان یا SV نام دارند، بیشترین فاصله را دارند و در نهایت دادها را به دو کلاس مجزا تقسیم میکند.
در تصویر بالا مقداری خطا مشاهده میشود که با توجه با خطی بودن جداساز مجبور به پذیرش این خطا هستیم.
در نسخههای جدیدتر این الگوریتم یک Kernel ( از نوع خطی Linear ، چند جملهای Polynomial، گوسین Gaussian و یا ...) برای آن در نظر گرفته شد که عملا نگاشتی را بین خط (نه صرفا فقط خطی) را با آن ابرصفحه جداکننده برقرار کند. در نتیجه دسته بندی با خطای کمتری را خواهیم داشت. (اطلاعات بیشتر در + و همچنین مطالب دکتر سعید شیری درباره SVM در +)
یک مثال مفهومی : هدف اصلی در این مثال شبیه سازی تابع XNOR به Kernel SVM میباشد.
برای شروع کار از فضای نام MachineLearning استفاده میکنیم و بستهی نیوگت مربوطه را فرخوانی میکنیم. پس از اجرا، مشاهده میکنیم که فضای نامهای Accord.Math و Accord.Statistics نیز به پروژه اضافه میشود.
در ابتدا مقادیر ورودی و برچسبها را تعریف میکنیم
// ورودی double[][] inputs = { new double[] { 0, 0 }, // 0 xnor 0: 1 (label +1) new double[] { 0, 1 }, // 0 xnor 1: 0 (label -1) new double[] { 1, 0 }, // 1 xnor 0: 0 (label -1) new double[] { 1, 1 } // 1 xnor 1: 1 (label +1) }; // خروجی دسته بند ماشین بردار پشتیبان باید -1 یا +1 باشد int[] labels = { // 1, 0, 0, 1 1, -1, -1, 1 };
// ساخت کرنل IKernel kernel = createKernel(); // ساخت دسته بند به کمک کرنل انتخابی و تنظیم تعداد ویژگیها ورودیها به مقدار 2 KernelSupportVectorMachine machine = new KernelSupportVectorMachine(kernel, 2);
private static IKernel createKernel() { //var numPolyConstant = 1; //return new Linear(numPolyConstant); //var numDegree = 2; //var numPolyConstant = 1; //return new Polynomial(numDegree, numPolyConstant); //var numLaplacianSigma = 1000; //return new Laplacian(numLaplacianSigma); //var numSigAlpha = 7; //var numSigB = 6; //return new Sigmoid(numSigAlpha, numSigB); var numSigma = 0.1; return new Gaussian(numSigma); }
// معرفی دسته بندمان به الگوریتم یادگیری SMO SequentialMinimalOptimization teacher_smo = new SequentialMinimalOptimization(machine_svm, inputs, labels); // اجرای الگوریتم یادگیری double error = teacher_smo.Run(); Console.WriteLine(string.Format("error rate : {0}", error));
// بررسی یکی از ورودیها var sample = inputs[0]; int decision = System.Math.Sign(machine_svm.Compute(sample)); Console.WriteLine(string.Format("result for sample '0 xnor 0' is : {0}", decision));
دریافت کد
تزریق وابستگیهای AutoMapper در لایه سرویس برنامه
- همچنین اگر Solution شما چند پروژهای است، احتمال دارد که قسمتهای مختلف آن از اسمبلیهای مشابهی، اما با نگارشهای مختلفی استفاده میکنند. اگر این اسمبلیها از طریق نیوگت اضافه شدهاند، دستور ذیل را صادر کنید:
PM> Update-Package
- مطلب «به روز رسانی قسمت assemblyBinding فایلهای config توسط NuGet» را هم مدنظر داشته باشید.
- Accessibility improvements in narration, high contrast and focus control areas
- .NET Framework support for .NET Standard 2.0 and compiler features
- More secure SHA-2 support in ASP.NET and System.Messaging
- Configuration builders
- ASP.NET Execution step feature
- ASP.NET HttpCookie parsing
- Enhancements in Visual Tree for WPF applications
- Performance and reliability improvements
توسط این کتابخانه میتوانید دیتابیسهای MongoDb را بدون نیاز به نصب آنها، به صورت یکبار مصرف ایجاد کنید. یعنی یک دیتابیس موقت (در پوشه Temp سیستم عامل) برای شما میسازد و در آخر وقتی کار شما با آن تمام شد، آن را حذف میکند. در نتیجه برای Integration Testing بسیار مناسب و کاربردی هست.
طرز کار با آن خیلی سادهاست؛ فقط کافی است بستهی NuGet آن را نصب کنید:
Install-Package Mongo2Go
و به صورت زیر از آن استفاده کنید:
using (var runner = MongoDbRunner.Start()) { var client = new MongoClient(runner.ConnectionString); var database = client.GetDatabase("IntegrationTest"); var collection = database.GetCollection<TestDocument>("TestCollection"); //Just use it! }