esemény
Intelligens alkalmazások létrehozása
márc. 17. 21 - márc. 21. 10
Csatlakozzon a meetup sorozathoz, hogy valós használati esetek alapján, skálázható AI-megoldásokat hozzon létre más fejlesztőkkel és szakértőkkel.
RegisztrációEzt a böngészőt már nem támogatjuk.
Frissítsen a Microsoft Edge-re, hogy kihasználhassa a legújabb funkciókat, a biztonsági frissítéseket és a technikai támogatást.
Megtudhatja, hogyan tölthet be adatokat ML.NET feldolgozáshoz és betanításhoz az API használatával. Az adatok eredetileg fájlokban vagy más adatforrásokban, például adatbázisokban, JSON-ban, XML-ben vagy memóriabeli gyűjteményekben vannak tárolva.
Ha a Model Buildert használja, olvassa el a Betanítási adatok betöltése a Model Builderbe című témakört.
ML.NET lehetővé teszi az adatmodellek osztályokon keresztüli meghatározását. Például a következő bemeneti adatok alapján:
Size (Sq. ft.), HistoricalPrice1 ($), HistoricalPrice2 ($), HistoricalPrice3 ($), Current Price ($)
700, 100000, 3000000, 250000, 500000
1000, 600000, 400000, 650000, 700000
Hozzon létre egy adatmodellt, amely a következő kódrészletet jelöli:
public class HousingData
{
[LoadColumn(0)]
public float Size { get; set; }
[LoadColumn(1, 3)]
[VectorType(3)]
public float[] HistoricalPrices { get; set; }
[LoadColumn(4)]
[ColumnName("Label")]
public float CurrentPrice { get; set; }
}
Az attribútumok további információkat nyújtanak ML.NET az adatmodellről és az adatforrásról.
Az LoadColumn
attribútum megadja a tulajdonságok oszlopindexeit.
Fontos
LoadColumn
csak akkor szükséges, ha adatokat tölt be egy fájlból.
Oszlopok betöltése a következő módon:
Size
az osztályban és CurrentPrices
az HousingData
osztályban.HistoricalPrices
az HousingData
osztályban.Ha vektortulajdonságsal rendelkezik, alkalmazza az VectorType
attribútumot az adatmodell tulajdonságára. A vektor minden elemének azonos típusúnak kell lennie. Az oszlopok elkülönítése lehetővé teszi a funkciófejlesztés egyszerűségét és rugalmasságát, de sok oszlop esetében az egyes oszlopokon végzett munka hatással van a betanítási sebességre.
ML.NET oszlopneveken keresztül működik. Ha egy oszlop nevét a tulajdonságnéven kívül másra szeretné módosítani, használja az ColumnName
attribútumot. Memóriabeli objektumok létrehozásakor továbbra is a tulajdonságnév használatával hozhat létre objektumokat. Az adatfeldolgozáshoz és a gépi tanulási modellek létrehozásához azonban ML.NET felülbírálja és hivatkozik a tulajdonságra az ColumnName
attribútumban megadott értékkel.
Ha adatokat szeretne betölteni egy fájlból, használja a LoadFromTextFile
metódust a betöltendő adatok adatmodelljével. Mivel separatorChar
a paraméter alapértelmezés szerint tabulátorral tagolt, szükség szerint módosítsa az adatfájlhoz. Ha a fájl fejléccel rendelkezik, állítsa a hasHeader
paramétert úgy, hogy true
figyelmen kívül hagyja a fájl első sorát, és kezdje el betölteni az adatokat a második sorból.
//Create MLContext
MLContext mlContext = new MLContext();
//Load Data
IDataView data = mlContext.Data.LoadFromTextFile<HousingData>("my-data-file.csv", separatorChar: ',', hasHeader: true);
Abban az esetben, ha az adatok több fájlban vannak tárolva, mindaddig, amíg az adatséma megegyezik, ML.NET lehetővé teszi az adatok betöltését több fájlból, amelyek ugyanabban a könyvtárban vagy több könyvtárban találhatók.
Ha az összes adatfájl ugyanabban a könyvtárban található, használjon helyettesítő karaktereket a LoadFromTextFile
metódusban.
//Create MLContext
MLContext mlContext = new MLContext();
//Load Data File
IDataView data = mlContext.Data.LoadFromTextFile<HousingData>("Data/*", separatorChar: ',', hasHeader: true);
Ha több könyvtárból szeretne adatokat betölteni, a CreateTextLoader
metódussal hozzon létre egy TextLoader
. Ezután használja a metódust TextLoader.Load
, és adja meg az egyes fájlelérési utakat (helyettesítő karakterek nem használhatók).
//Create MLContext
MLContext mlContext = new MLContext();
// Create TextLoader
TextLoader textLoader = mlContext.Data.CreateTextLoader<HousingData>(separatorChar: ',', hasHeader: true);
// Load Data
IDataView data = textLoader.Load("DataFolder/SubFolder1/1.txt", "DataFolder/SubFolder2/1.txt");
ML.NET támogatja az adatok betöltését az SQL Server, az Azure SQL Database, az Oracle, az SQLite, a PostgreSQL, a Progress, az IBM DB2 és sok más által System.Data
támogatott relációs adatbázisból.
Megjegyzés
A használatához DatabaseLoader
hivatkozzon a System.Data.SqlClient NuGet-csomagra.
Adott egy adatbázis nevesített táblával House
és a következő sémával:
CREATE TABLE [House] (
[HouseId] INT NOT NULL IDENTITY,
[Size] INT NOT NULL,
[NumBed] INT NOT NULL,
[Price] REAL NOT NULL
CONSTRAINT [PK_House] PRIMARY KEY ([HouseId])
);
Az adatokat egy osztály modellezheti, például HouseData
:
public class HouseData
{
public float Size { get; set; }
public float NumBed { get; set; }
public float Price { get; set; }
}
Ezután az alkalmazáson belül hozzon létre egy DatabaseLoader
.
MLContext mlContext = new MLContext();
DatabaseLoader loader = mlContext.Data.CreateDatabaseLoader<HouseData>();
Adja meg a kapcsolati sztring, valamint az adatbázison végrehajtandó SQL-parancsot, és hozzon létre egy példánytDatabaseSource
. Ez a minta egy LocalDB SQL Server-adatbázist használ egy fájl elérési útjával. A DatabaseLoader azonban minden más érvényes kapcsolati sztring támogat a helyszíni és a felhőbeli adatbázisokhoz.
Fontos
A Microsoft azt javasolja, hogy a legbiztonságosabb hitelesítési folyamatot használja. Ha azure SQL-hez csatlakozik, az Azure-erőforrások felügyelt identitásai az ajánlott hitelesítési módszer.
string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=<YOUR-DB-FILEPATH>;Database=<YOUR-DB-NAME>;Integrated Security=True;Connect Timeout=30";
string sqlCommand = "SELECT CAST(Size as REAL) as Size, CAST(NumBed as REAL) as NumBed, Price FROM House";
DatabaseSource dbSource = new DatabaseSource(SqlClientFactory.Instance, connectionString, sqlCommand);
A nem típusú Real
numerikus adatokat konvertálni Real
kell . A Real
típus egy pontosságú lebegőpontos értékként vagy Single
ML.NET algoritmusok által várt bemeneti típusként jelenik meg. Ebben a mintában az Size
oszlopok egész NumBed
számok az adatbázisban. A beépített függvény használatával a CAST
rendszer átalakítja Real
. Mivel a Price
tulajdonság már típusos Real
, a rendszer betölti, ahogy van.
Load
A metódus használatával töltse be az adatokat egy IDataView
.
IDataView data = loader.Load(dbSource);
A képadatok könyvtárból való betöltéséhez először hozzon létre egy modellt, amely tartalmazza a kép elérési útját és egy címkét. ImagePath
az adatforrás könyvtárában lévő kép abszolút elérési útja. Label
a tényleges képfájl osztálya vagy kategóriája.
public class ImageData
{
[LoadColumn(0)]
public string ImagePath;
[LoadColumn(1)]
public string Label;
}
public static IEnumerable<ImageData> LoadImagesFromDirectory(string folder,
bool useFolderNameAsLabel = true)
{
string[] files = Directory.GetFiles(folder, "*", searchOption: SearchOption.AllDirectories);
foreach (string file in files)
{
if (Path.GetExtension(file) != ".jpg")
continue;
string label = Path.GetFileName(file);
if (useFolderNameAsLabel)
label = Directory.GetParent(file).Name;
else
{
for (int index = 0; index < label.Length; index++)
{
if (!char.IsLetter(label[index]))
{
label = label.Substring(0, index);
break;
}
}
}
yield return new ImageData()
{
ImagePath = file,
Label = label
};
}
}
Ezután töltse be a képet:
IEnumerable<ImageData> images = LoadImagesFromDirectory(
folder: "your-image-directory-path",
useFolderNameAsLabel: true
);
A memóriában lévő nyers lemezképek könyvtárból való betöltéséhez hozzon létre egy modellt a nyers kép bájttömbjének és címkéjének tárolásához:
public class InMemoryImageData
{
[LoadColumn(0)]
public byte[] Image;
[LoadColumn(1)]
public string Label;
}
static IEnumerable<InMemoryImageData> LoadInMemoryImagesFromDirectory(
string folder,
bool useFolderNameAsLabel = true
)
{
string[] files = Directory.GetFiles(folder, "*",
searchOption: SearchOption.AllDirectories);
foreach (string file in files)
{
if (Path.GetExtension(file) != ".jpg")
continue;
string label = Path.GetFileName(file);
if (useFolderNameAsLabel)
label = Directory.GetParent(file).Name;
else
{
for (int index = 0; index < label.Length; index++)
{
if (!char.IsLetter(label[index]))
{
label = label.Substring(0, index);
break;
}
}
}
yield return new InMemoryImageData()
{
Image = File.ReadAllBytes(file),
Label = label
};
}
}
A fájlokban tárolt adatok betöltése mellett ML.NET támogatja az adatok betöltését olyan forrásokból, amelyek a következőket tartalmazzák:
A streamelési források használatakor a ML.NET a bemeneti adatok memórián belüli gyűjtemény formájában fognak működni. Ezért amikor olyan forrásokkal dolgozik, mint a JSON/XML, ügyeljen arra, hogy az adatokat memórián belüli gyűjteménybe formázza.
A következő memóriabeli gyűjteményre tekintettel:
HousingData[] inMemoryCollection = new HousingData[]
{
new HousingData
{
Size =700f,
HistoricalPrices = new float[]
{
100000f, 3000000f, 250000f
},
CurrentPrice = 500000f
},
new HousingData
{
Size =1000f,
HistoricalPrices = new float[]
{
600000f, 400000f, 650000f
},
CurrentPrice=700000f
}
};
Töltse be a memóriabeli gyűjteményt egy IDataView
metódusba LoadFromEnumerable
:
Fontos
LoadFromEnumerable
feltételezi, hogy a IEnumerable
terhelés szálbiztos.
// Create MLContext
MLContext mlContext = new MLContext();
//Load Data
IDataView data = mlContext.Data.LoadFromEnumerable<HousingData>(inMemoryCollection);
.NET-visszajelzés
A(z) .NET egy nyílt forráskód projekt. Visszajelzés adásához válasszon egy hivatkozást:
esemény
Intelligens alkalmazások létrehozása
márc. 17. 21 - márc. 21. 10
Csatlakozzon a meetup sorozathoz, hogy valós használati esetek alapján, skálázható AI-megoldásokat hozzon létre más fejlesztőkkel és szakértőkkel.
RegisztrációOktatás
Modul
Adatok betöltése Microsoft Fabric-adattárházba - Training
Megismerheti az adatok Microsoft Fabricben lévő raktárba való betöltésének folyamatát.
Tanúsítvány
Microsoft Tanúsított: Azure Adattudós Szaktárs - Certifications
Kezelheti az adatok betöltését és előkészítését, a modellek betanítását és üzembe helyezését, valamint a gépi tanulási megoldások monitorozását a Python, az Azure Machine Learning és az MLflow használatával.
Dokumentáció
Adatok előkészítése modell készítéséhez - ML.NET
Megtudhatja, hogyan használhat átalakításokat ML.NET az adatok további feldolgozáshoz vagy modellkészítéshez való kezeléséhez és előkészítéséhez.
Modell betanítása és kiértékelése - ML.NET
Megtudhatja, hogyan hozhat létre gépi tanulási modelleket, gyűjthet metrikákat és mérheti a teljesítményt ML.NET. A gépi tanulási modell azonosítja a betanítási adatok mintáit, hogy új adatokkal előrejelzéseket készítsen.
Betanított modellek mentése és betöltése - ML.NET
Ismerje meg, hogyan menthet és tölthet be be betanított modelleket