Проблема с использованием леса изоляции для обнаружения аномалий в Accord.NET: отсутствует пространство именC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с использованием леса изоляции для обнаружения аномалий в Accord.NET: отсутствует пространство имен

Сообщение Anonymous »

введите здесь описание изображения
Я пытаюсь реализовать обнаружение аномалий в своем приложении C# с помощью библиотеки Accord.NET, в частности с помощью алгоритма Isolation Forest. Однако я столкнулся с ошибкой, указывающей на то, что пространство имен Accord.MachineLearning.AnomalyDetection не существует.
\

\

\

\

CS0234: The type or namespace name 'AnomalyDetection' does not exist in the namespace 'Accord.MachineLearning' (are you missing an assembly reference?)

using CsvHelper;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using CVAnomalyDetection.Models;

public class HomeController : Controller
{
private List _csvData;

public IActionResult Index()
{
return View();
}

[HttpPost]
public IActionResult Upload(IFormFile file)
{
if (file != null && file.Length > 0)
{
using (var reader = new StreamReader(file.OpenReadStream()))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
_csvData = csv.GetRecords().ToList();
}
return View("Index", _csvData);
}
return RedirectToAction("Index");
}

[HttpPost]
public IActionResult Predict()
{
var anomalies = DetectAnomalies(_csvData);
return View("AnomalyResults", anomalies);
}

private List DetectAnomalies(List data)
{
// One-hot encode categorical columns
var uniqueValuesProductCategory = data.Select(x => x.ProductCategory).Distinct().ToList();
var uniqueValuesCustomerRegion = data.Select(x => x.CustomerRegion).Distinct().ToList();
var uniqueValuesPaymentMethod = data.Select(x => x.PaymentMethod).Distinct().ToList();

// Create the input data array for anomaly detection
var combinedData = new List();

foreach (var item in data)
{
var features = new List();

// One-hot encoding for ProductCategory
foreach (var value in uniqueValuesProductCategory)
{
features.Add(value == item.ProductCategory ? 1.0 : 0.0);
}

// One-hot encoding for CustomerRegion
foreach (var value in uniqueValuesCustomerRegion)
{
features.Add(value == item.CustomerRegion ? 1.0 : 0.0);
}

// One-hot encoding for PaymentMethod
foreach (var value in uniqueValuesPaymentMethod)
{
features.Add(value == item.PaymentMethod ? 1.0 : 0.0);
}

combinedData.Add(features.ToArray());
}

// Initialize the Isolation Forest
var isolationForest = new Accord.MachineLearning.IsolationForest()
{
NumberOfTrees = 100,
Contamination = 0.05 // Adjust based on your needs
};

// Train the Isolation Forest model with the combined data
isolationForest.Learn(combinedData.ToArray());

// Predict anomalies
var predictions = isolationForest.Decide(combinedData.ToArray());

// Find and return the actual anomalous records
return data.Where((d, index) => predictions[index] == -1).ToList(); // -1 indicates an anomaly
}

private double EuclideanDistance(double[] a, double[] b)
{
return Math.Sqrt(a.Zip(b, (x, y) => Math.Pow(x - y, 2)).Sum());
}
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... -missing-n
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»