Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
ML.NET'da yükleme, işleme ve model eğitim adımları sırasında ara verileri incelemeyi öğrenin. Ara veriler, makine öğrenmesi işlem hattındaki her aşamanın çıkışıdır.
Aşağıdaki konut verilerini göz önünde bulundurun:
HousingData[] housingData = new HousingData[]
{
new HousingData
{
Size = 600f,
HistoricalPrices = new float[] { 100000f ,125000f ,122000f },
CurrentPrice = 170000f
},
new HousingData
{
Size = 1000f,
HistoricalPrices = new float[] { 200000f, 250000f, 230000f },
CurrentPrice = 225000f
},
new HousingData
{
Size = 1000f,
HistoricalPrices = new float[] { 126000f, 130000f, 200000f },
CurrentPrice = 195000f
},
new HousingData
{
Size = 850f,
HistoricalPrices = new float[] { 150000f,175000f,210000f },
CurrentPrice = 205000f
},
new HousingData
{
Size = 900f,
HistoricalPrices = new float[] { 155000f, 190000f, 220000f },
CurrentPrice = 210000f
},
new HousingData
{
Size = 550f,
HistoricalPrices = new float[] { 99000f, 98000f, 130000f },
CurrentPrice = 180000f
}
};
ML.NET'te, aşağıdaki bölümlerde açıklandığı gibi, bir IDataView
'a yüklenen ara verileri çeşitli yollarla inceleyebilirsiniz.
IDataView'ı IEnumerable'a Dönüştürme
'yi incelemenin IDataView
en hızlı yollarından biri, bunu öğesine IEnumerable
dönüştürmektir. Bu dönüştürmeyi yapmak için CreateEnumerable
yöntemini kullanın.
Performansı iyileştirmek için olarak reuseRowObject
ayarlayıntrue
. Bunu yapmak, veri kümesindeki her satır için yeni bir nesne oluşturmanın aksine, aynı nesneyi geçerli satırın verileriyle doldurur.
// Create an IEnumerable of HousingData objects from IDataView
IEnumerable<HousingData> housingDataEnumerable =
mlContext.Data.CreateEnumerable<HousingData>(data, reuseRowObject: true);
// Iterate over each row
foreach (HousingData row in housingDataEnumerable)
{
// Do something (print out Size property) with current Housing Data object being evaluated
Console.WriteLine(row.Size);
}
IEnumerable ile belirli dizinlere erişme
Verilerin yalnızca bir bölümüne veya belirli dizinlere erişmeniz gerekiyorsa, veri kümesinde istenen her satır için yeni bir nesne oluşturulacak şekilde parametre değerini CreateEnumerable
kullanın reuseRowObject
ve olarak ayarlayınfalse
. Ardından, öğesini IEnumerable
bir diziye veya listeye dönüştürün.
Uyarı
CreateEnumerable
sonucunu bir diziye veya listeye dönüştürmek, istenen tüm IDataView
satırları belleğe yükler ve bu da performansı etkileyebilir.
Koleksiyon oluşturulduktan sonra veriler üzerinde işlemler gerçekleştirebilirsiniz. Aşağıdaki kod parçacığı veri kümesindeki ilk üç satırı alır ve ortalama geçerli fiyatı hesaplar.
// Create an Array of HousingData objects from IDataView
HousingData[] housingDataArray =
mlContext.Data.CreateEnumerable<HousingData>(data, reuseRowObject: false)
.Take(3)
.ToArray();
// Calculate Average CurrentPrice of First Three Elements
HousingData firstRow = housingDataArray[0];
HousingData secondRow = housingDataArray[1];
HousingData thirdRow = housingDataArray[2];
float averageCurrentPrice = (firstRow.CurrentPrice + secondRow.CurrentPrice + thirdRow.CurrentPrice) / 3;
Tek bir sütundaki değerleri inceleme
Model oluşturma işleminin herhangi bir noktasında, yöntemini kullanarak bir IDataView
öğesinin tek bir sütunundaki değerlere GetColumn
erişilebilir. yöntemi, GetColumn
tek bir sütundaki tüm değerleri olarak IEnumerable
döndürür.
IEnumerable<float> sizeColumn = data.GetColumn<float>("Size").ToList();
IDataView değerlerini bir kerede bir satır inceleme
IDataView
lazily olarak değerlendirilir. Bu belgenin önceki bölümlerinde gösterildiği gibi öğesine dönüştürmeden bir IDataView
öğesinin satırlarını yinelemek için IEnumerable
yöntemini kullanarak DataViewRowCursor
ve parametre olarak sizin DataViewSchema'nızı GetRowCursor
geçirerek bir oluşturun.IDataView
Ardından, satırları yinelemek için, her sütundan ilgili değerleri ayıklamak için temsilcilerle MoveNext
birlikte imleç yöntemini kullanınValueGetter
.
Önemli
Performans amacıyla, ML.NET vektörler yerel koleksiyon türleri (Vector
ve float[]
) yerine VBuffer
kullanır.
// Get DataViewSchema of IDataView
DataViewSchema columns = data.Schema;
// Create DataViewCursor
using (DataViewRowCursor cursor = data.GetRowCursor(columns))
{
// Define variables where extracted values will be stored to
float size = default;
VBuffer<float> historicalPrices = default;
float currentPrice = default;
// Define delegates for extracting values from columns
ValueGetter<float> sizeDelegate = cursor.GetGetter<float>(columns[0]);
ValueGetter<VBuffer<float>> historicalPriceDelegate = cursor.GetGetter<VBuffer<float>>(columns[1]);
ValueGetter<float> currentPriceDelegate = cursor.GetGetter<float>(columns[2]);
// Iterate over each row
while (cursor.MoveNext())
{
//Get values from respective columns
sizeDelegate.Invoke(ref size);
historicalPriceDelegate.Invoke(ref historicalPrices);
currentPriceDelegate.Invoke(ref currentPrice);
}
}
Bir veri alt kümesinde ön işleme veya eğitimin sonucunun önizlemesi
Uyarı
Hata ayıklamaya yönelik olduğundan ve performansı düşürebileceğinden üretim kodunda kullanmayın Preview
.
Model oluşturma işlemi deneysel ve yinelemelidir. Bir makine öğrenmesi modelini verilerin bir alt kümesi üzerinde önişledikten veya eğitdikten sonra nasıl görüneceğini önizlemek için DataDebuggerPreview
döndüren Preview
yöntemini kullanın. Sonuç, hem IEnumerable
hem de belirli bir sütun veya satırdaki değerleri içeren ColumnView
ve RowView
özelliklerine sahip bir nesnedir. parametresiyle maxRows
dönüşümün uygulanacağı satır sayısını belirtin.
Bir IDataView
incelemenin sonucu aşağıdaki görüntüye benzer: