Temel Kodlarla Matlab'da Makine Öğrenmesine Giriş Yapalım
Matlab'da makine öğrenmesi için öncelikle verilerin temsilinden başlayalım. Yazımızda en çok kullandığımız matrisler, hücre dizileri, görüntüler,uzun diziler, tablolar ve büyük MAT dosyalarını ele alacağız.
29.02.2020 tarihli yazı 11961 kez okunmuştur.
Matrisler
Genel olarak, MATLAB içindeki tüm değişkenler çift duyarlıklı matrislerdir. Bu değişkenler için bir tür bildirmeniz gerekmez. Matrisler çok boyutlu olabilir ve parantez yoluyla 1 tabanlı indeksler kullanılarak erişilebilir. Bir matris değişkeni oluşturmak için, ona 2 × 2 boyutunda olan a gibi bir değer atayalım:
>> a = [1 2; 3 4];
>> a(1,1)
1
>> a(3)
2
Özel bir sözdizimi olmadan matrisleri ekleyebilir, çıkarabilir, çarpabilir ve bölebilirsiniz. Matrisler istenen doğrusal cebir işlemi için uygun boyutta olmalıdır. Bir matrisin transpozu için ‘, kuvveti için ^ operatörü kullanılır
>> a(1,1)
1
>> a(3)
2
Özel bir sözdizimi olmadan matrisleri ekleyebilir, çıkarabilir, çarpabilir ve bölebilirsiniz. Matrisler istenen doğrusal cebir işlemi için uygun boyutta olmalıdır. Bir matrisin transpozu için ‘, kuvveti için ^ operatörü kullanılır
>> b = a'*a;
>> c = aˆ2;
>> d = b + c;
Her değişken sayısal bir değişkendir. Sayısal değişkenleri tanımlamak için aşağıda belirtilen temel fonksiyonlar kullanılır.
►zeros(m, n) komutu m x n boyutunda sıfırlardan oluşan bir matris oluşturur.
►ones(m, n) komutu m x n boyutunda birlerden oluşan bir matris oluşturur.
►eye(m, n) komutu m x n boyutunda birim matris oluşturur.
►eye(m, n) komutu m x n boyutunda birim matris oluşturur.
►eye(m) komutu m x m boyutunda birim matris oluşturur.
►rand(n) komutu n x n boyutunda elemanları 0-1 aralığından rastgele seçilmiş olarak bir matris oluşturur.
►diag(d) komutu köşegeni d vektörünün elemanlarından oluşan diagonal bir matris üretir.
Hücre Dizileri
Hücre dizileri birbirinden farklı veri tiplerini içeren bir dizi oluşturabilme imkanı sağlar. Hücre dizileri, tıpkı matrisler gibi çok boyutlu olabilir ve kaşlı ayraç {} ile gösterilir. Herhangi bir boyutta olabilir ve integer, matrix, string gibi verileri bir arada içerebilir. Hücre işlevini kullanarak bunları başlatabilir, celldisp kullanarak içeriği özyinelemeli olarak görüntüleyebilir ve matrisde olduğu gibi parantez kullanarak alt kümelere erişebilirsiniz.
>> c = cell(3,1);
>> c{1} = 'string';
>> c{2} = false;
>> c{3} = [1 2; 3 4];
>> b = c(1:2);
>> celldisp(b)
b{1} = string
b{2} = 0
Hücre dizisinin öğelerine parantez kullanarak eriştiğinizde, içerik hücre içeriği yerine başka bir hücre dizisi olarak döndürülür. MATLAB’da hücre dizilerinin liste olarak kullanımını vurgulayan Virgülle Ayrılmış Listeler adlı özel bir bölüm bulunur.
>> c = cell(3,1);
>> c{1} = 'string';
>> c{2} = false;
>> c{3} = [1 2; 3 4];
>> b = c(1:2);
>> celldisp(b)
b{1} = string
b{2} = 0
Hücre dizisinin öğelerine parantez kullanarak eriştiğinizde, içerik hücre içeriği yerine başka bir hücre dizisi olarak döndürülür. MATLAB’da hücre dizilerinin liste olarak kullanımını vurgulayan Virgülle Ayrılmış Listeler adlı özel bir bölüm bulunur.
a = {b{:} c};
with
a = [b {c}];
with
a = [b {c}];
Hücre dizisi değişkenlerini tanımlamak için iscell, yapı dizisini ve hücre dizisi içeriğini değiştirmek için ise deal komutu kullanılır.
►cell hücre dizisini başlatır
►cellstr Karakter dizisinden hücre dizisi oluşturur
►iscell Bir hücre dizisi belirler
►iscellstr Yalnızca dizeleri içeren bir hücre dizisini tanımlar
►celldisp Bir hücre dizisinin içeriğini yinelemeli olarak görüntüler
►length(a) a vektörünün eleman sayısı
►max(a) a vektörünün maksimum elemanı
►min(a) a vektörünün minimum elemanı
►size(a) a matrisinin boyutu
►size(a,1) a matrisinin satır sayısı
►size(a,2) a matrisinin sütun sayısı
►det(a) a matrisinin determinantı
►inv(a) a matrisinin tersi
►a’ a matrisinin transpozu
►max(a) a vektörünün maksimum elemanı
►min(a) a vektörünün minimum elemanı
►size(a) a matrisinin boyutu
►size(a,1) a matrisinin satır sayısı
►size(a,2) a matrisinin sütun sayısı
►det(a) a matrisinin determinantı
►inv(a) a matrisinin tersi
►a’ a matrisinin transpozu
Veri Yapıları
Matlab’daki veri yapıları oldukça esnektir. Bir yapı, tek bir sayı, karakter veya booleanın yapabileceğinden daha karmaşık bir şey hakkındaki bilgileri temsil etmek için kullanılır. Örneğin, bir öğrenci adı, yaşı, kullanıcı kimliği vb. İle tanımlanabilir. Bu bilgi parçalarının her biri kolay anlaşılır bir tanımlayıcı başlıkla etiketlenmeli ve daha sonra bir bütün (yapı) oluşturmak için birleştirilmelidir.
Replace
d.fieldName = 0;
with
d = struct;
d.fieldName = 0;
Bir yapının sözdizimi "Değişken Adı" ve ardından "nokta" ve ardından "alan" dır. Her alanın kendisiyle ilişkili bir veri türü vardır.
d = MyStruct;
d(2) = MyStruct;
function d = MyStruct
d = struct;
d.a = 1.0;
d.b = 'string';
Veri yapılarında kullandığımız bazı temel fonksiyonlara bakacak olursak, s = struct(field,value) belirtilen alan ve değere sahip bir yapı dizisi oluşturur. Giriş bağımsız değişkeni sayısal, mantıksal, karakter veya hücre dizisi gibi herhangi bir veri türü olabilir. Struct alanları olan veya olmayan bir yapı oluşturur.
s.a = 1;
s.b = {'A','B','C'}
s.b = {'A','B','C'}
s = struct with fields:
a: 1
b: {'A' 'B' 'C'}
s= struct
s= struct (field, value)
s= struct (field1, value1, ..., fieldN, valueN)
s= struct ([])
s= struct(obj)
s = struct (field1, value1,...,fieldN, valueN) birden çok alana sahip bir yapı dizisi oluşturur.
s = struct([]) alanı olmayan boş (0 x 0) bir yapı oluşturur.
-Isstruct girdinin yapı dizisi olup olmadığını belirler.
>>patient.name = 'John Doe';
>>patient.billing = 127.00;
>>patient.test = [79 75 73; 180 178 177.5; 220 210 205];
>>isstruct(patient)
ans = 1
Isfield yapıda alan olup olmadığını belirler.
TF = isfield (S,field) S yapı dizisinin alanı ise 1 döndürür, aksi halde 0 döndürür.
>>S.x = linspace(0,2*pi);
>>S.y = sin(S.x);
>>S.title = 'y = sin(x)'
S = struct with fields:
x: [1x100 double]
y: [1x100 double]
title: 'y = sin(x)'
>>TF = isfield(S,'title')
TF = logical 1
>>S.y = sin(S.x);
>>S.title = 'y = sin(x)'
S = struct with fields:
x: [1x100 double]
y: [1x100 double]
title: 'y = sin(x)'
>>TF = isfield(S,'title')
TF = logical 1
Rmfield girişin MATLAB yapı dizisinin alanı olup olmadğını belirler.
s = rmfield(s,field)
-Belirtilen b alanını yapı dizisinden kaldırır.
s = rmfield(s,field)
-Belirtilen b alanını yapı dizisinden kaldırır.
>>s.a = 1;
>>s.b = 2;
>>s.c = 3;
>>field = 'b';
>>s = rmfield(s,field)
s =
a: 1 c: 3
>>s.c = 3;
>>field = 'b';
>>s = rmfield(s,field)
s =
a: 1 c: 3
-Fieldnames yapı dizisinin alanını döndürür.
fields = fieldnames(S)
fields = fieldnames(obj,'-full')
fields = fieldnames(S)
fields = fieldnames(obj,'-full')
field = fieldnames
(S) S
hücre dizisindeki yapı dizisinin alan adlarını döndürür.
>>S(1,1).x = linspace(0,2*pi);
>>S(1,1).y = sin(S(1,1).x);
>>S(1,1).title = 'y = sin(x)';
>>S(2,1).x = linspace(0,2*pi);
>>S(2,1).y = cos(S(2,1).x);
>>S(2,1).title = 'y = cos(x)'
2x3 struct array with fields:
x
y
title
>>fields = fieldnames(S)
fields = 3x1 cell array
{'x' }
{'y' }
{'title'}
Görüntüler
>>S(1,1).y = sin(S(1,1).x);
>>S(1,1).title = 'y = sin(x)';
>>S(2,1).x = linspace(0,2*pi);
>>S(2,1).y = cos(S(2,1).x);
>>S(2,1).title = 'y = cos(x)'
2x3 struct array with fields:
x
y
title
>>fields = fieldnames(S)
fields = 3x1 cell array
{'x' }
{'y' }
{'title'}
Görüntüler
MATLAB; GIF, JPG, TIFF, PNG, HDF, FITS ve BMP gibi çeşitli formatları destekler. MATLAB’ da herhangi bir görüntü üzerinde işlem yapabilmek için öncelikle gerekli olan görüntünün bulunduğu dizinden alınarak bir değişkene atanması kolaylık sağlayacaktır. Bu işlemi yapabilmek için imread fonksiyonu kullanılır. Görüntünün ekranda görüntülenmesi imshow komutu ile sağlanır. İminfo komutu örnek görüntü hakkında bilgi verir.
>> imfinfo('IMG_4901.JPG')
ans = Filename: 'MATLAB/Cats/IMG_4901.JPG'
ans = Filename: 'MATLAB/Cats/IMG_4901.JPG'
FileModDate: '28-Sep-2016 12:48:15'
FileSize: 1963302
Format: 'jpg'
FormatVersion: ''
Width: 3264
Height: 2448
BitDepth: 24
ColorType: 'truecolor'
►İlginizi Çekebilir: Arduino Platformuna Makine Öğrenmesi Eklendi
►imread Görüntüyü çeşitli formatlarda okur
►imfinfo Bir görüntü dosyası hakkında bilgi toplar
►imformats Bir yapıda alan olup olmadığını belirler
►imwrite Görüntü dosyasına veri yazar
►image Diziden gelen resmi görüntüler
►imagesc Geçerli renk haritasına göre ölçeklendirilmiş görüntü verilerini görüntüler
►imshow Görüntüyü görüntüleme, şekil, eksenler ve görüntü nesnesi özelliklerini optimize eder
►rgb2gray Bir görüntü dosyasına veri yazar
►ind2rgb Dizin verilerini RGB'ye dönüştürür
►rgb2ind RGB verilerini dizinlenmiş görüntü verilerine dönüştürür
►fitsread Bir FITS dosyasını okur
►fitswrite FITS dosyasına veri yazar
►fitsinfo Veri yapısında döndürülen bir FITS dosyası hakkında bilgi verir
►fitsdisp Dosyadaki tüm Üstbilgi Veri Birimleri (HDU'lar) için FITS dosya meta verilerini görüntüler
Veri Deposu
Veri depoları, belleğe sığmayacak kadar büyük veri içeren dosyalarla etkileşim kurmanıza olanak tanır. Sekmeli veriler, görüntüler, e-tablolar, veritabanları ve özel dosyalar için farklı türlerde veri depoları vardır. Her veri deposu, analiz için belleğe uyan daha az miktarda veri ayıklama işlevleri sağlar. Örneğin, en parlak piksellere veya maksimum doygunluk değerlerine sahip olanlar ile bir resim koleksiyonunda arama yapabilirsiniz. Kedi resimleri dizinimizi örnek olarak kullanacağız.
>> location = pwd
location = /Users/Shared/svn/Manuals/MATLABMachineLearning/MATLAB/Cats
>> ds = datastore(location)
ds = ImageDatastore with properties:
Files: { ' .../Shared/svn/Manuals/MATLABMachineLearning/MATLAB/Cats/IMG_0191.png';
' .../Shared/svn/Manuals/MATLABMachineLearning/MATLAB/Cats/ IMG_1603.png';
' .../Shared/svn/Manuals/MATLABMachineLearning/MATLAB/Cats/ IMG_1625.png' ... and 19 more }
Labels: {}
►imfinfo Bir görüntü dosyası hakkında bilgi toplar
►imformats Bir yapıda alan olup olmadığını belirler
►imwrite Görüntü dosyasına veri yazar
►image Diziden gelen resmi görüntüler
►imagesc Geçerli renk haritasına göre ölçeklendirilmiş görüntü verilerini görüntüler
►imshow Görüntüyü görüntüleme, şekil, eksenler ve görüntü nesnesi özelliklerini optimize eder
►rgb2gray Bir görüntü dosyasına veri yazar
►ind2rgb Dizin verilerini RGB'ye dönüştürür
►rgb2ind RGB verilerini dizinlenmiş görüntü verilerine dönüştürür
►fitsread Bir FITS dosyasını okur
►fitswrite FITS dosyasına veri yazar
►fitsinfo Veri yapısında döndürülen bir FITS dosyası hakkında bilgi verir
►fitsdisp Dosyadaki tüm Üstbilgi Veri Birimleri (HDU'lar) için FITS dosya meta verilerini görüntüler
Veri Deposu
Veri depoları, belleğe sığmayacak kadar büyük veri içeren dosyalarla etkileşim kurmanıza olanak tanır. Sekmeli veriler, görüntüler, e-tablolar, veritabanları ve özel dosyalar için farklı türlerde veri depoları vardır. Her veri deposu, analiz için belleğe uyan daha az miktarda veri ayıklama işlevleri sağlar. Örneğin, en parlak piksellere veya maksimum doygunluk değerlerine sahip olanlar ile bir resim koleksiyonunda arama yapabilirsiniz. Kedi resimleri dizinimizi örnek olarak kullanacağız.
>> location = pwd
location = /Users/Shared/svn/Manuals/MATLABMachineLearning/MATLAB/Cats
>> ds = datastore(location)
ds = ImageDatastore with properties:
Files: { ' .../Shared/svn/Manuals/MATLABMachineLearning/MATLAB/Cats/IMG_0191.png';
' .../Shared/svn/Manuals/MATLABMachineLearning/MATLAB/Cats/ IMG_1603.png';
' .../Shared/svn/Manuals/MATLABMachineLearning/MATLAB/Cats/ IMG_1625.png' ... and 19 more }
Labels: {}
Veri deposu oluşturulduktan sonra, etkileşimde bulunmak için geçerli sınıf işlevlerini kullanırsınız. Veri depoları, okuma, bölümleme ve sıfırlama gibi standart kapsayıcı tarzı işlevlere sahiptir. Her veri deposu türünün farklı özellikleri vardır. DatabaseDatastore, Veritabanı Araç Kutusu gerektirir ve SQL sorgularını kullanmanıza izin verir.
Uzun Diziler
Uzun Diziler
Uzun dizileri kullanarak MATLAB’daki büyük verileri analiz edebilirsiniz. Milyonlarca satırı olabilecek veri depolarıyla çalışmak için kullanabilirsiniz. Uzun diziler, sayısal veriler, hücre dizileri, dizeler, tarihler ve kategoriler dahil olmak üzere neredeyse tüm MATLAB türlerini sütun değişkeni olarak kullanabilir. MATLAB belgeleri uzun dizileri destekleyen işlevlerin bir listesini sağlar. Histogram işlevi uzun dizilerle kullanılabilir ve hemen yürütülür. MATLAB İstatistik ve Makine Öğrenimi Araç Kutusu ™, Veritabanı Araç Kutusu, Paralel Hesaplama Araç Kutusu, Dağıtılmış Bilgi İşlem Sunucusu ve Derleyici, yüksek dizilerle çalışmak için ek uzantılar sağlar. İstatistikler ve Makine Öğrenimi Araç Kutusu ™ 'ndaki işlevleri kullanarak, tahmini analitiklerin hesaplanması ve makine öğrenimi yapılması da dahil olmak üzere uzun dizilerde daha karmaşık istatistiksel analizler yapabilirsiniz.
Uzun diziler ile ilgili anahtar kodlar:
► Tall Uzun bir dizi başlat
► Tall Uzun bir dizi başlat
►Gather İstenen işlemleri gerçekleştirin
►Summary Komut satırına özet bilgileri görüntüleme
►Head Uzun bir dizinin ilk satırlarına eriş
►Tail Uzun bir dizinin son satırlarına eriş
►İstall Uzun olup olmadığını belirlemek için dizinin türünü kontrol edin
►Write Uzun diziyi diske yazın
tt = tall(ds)
tt = Mx6 tall table
Year Month ArrDelay DepDelay Origin Dest
____ _____ ________ ________ ______ ____
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ?
: : : : : : : :
: : : : : : : :
Büyük MAT Dosyaları
MT-file işlevini kullanarak tüm dosyayı belleğe yüklemeden büyük bir MAT dosyasının parçalarına erişebilirsiniz. Veriler yalnızca belirli bir değişkeni veya değişkenin bir bölümünü talep ettiğinizde yüklenir. MAT dosyasına dinamik olarak yeni veriler de ekleyebilirsiniz. Üretilen sinir ağlarının ağılıklarını MAT dosyasını yükleyelim.
>> m = matfile('PitchNNWeights','Writable',true)
m = matlab.io.MatFile
Properties:
Properties.Source:
'/Users/Shared/svn/Manuals/MATLABMachineLearning/ MATLAB/PitchNNWeights.mat'
Properties.Writable: true w: [1x8 double]
Önceden yüklenen w değişkeninin bir bölümüne erişebilir veya m kullanarak yeni bir değişken adı ekleyebiliriz.
>> y = m.w(1:4)
y = 1 1 1 1
>> m.name = 'Pitch Weights'
m = matlab.io.MatFile
Properties:
Properties.Source:'/Users/Shared/svn/Manuals/MATLABMachineLearning/MATLAB/PitchNNWeights.mat'
Properties.Writable: true name: [1x13 char]
w: [1x8 double]
>> d = load('PitchNNWeights')
d = w: [1 1 1 1 1 1 1 1]
name: 'Pitch Weights'
Yüklenmemiş verilere endekslemenin yapı dizileri ve seyrek diziler gibi bazı sınırları vardır. Ayrıca, matfile, genel bir kaydetme işlemi için varsayılan olmayan 7.3 sürümünü kullanan MAT dosyaları gerektirir. Bu özelliklerden yararlanmak için mat dosyasını kullanarak MAT-file dosyasını oluşturmanız veya dosyayı kaydederken v7.3 bayrağını kullanmanız gerekir.
>> m = matfile('PitchNNWeights','Writable',true)
m = matlab.io.MatFile
Properties:
Properties.Source:
'/Users/Shared/svn/Manuals/MATLABMachineLearning/ MATLAB/PitchNNWeights.mat'
Properties.Writable: true w: [1x8 double]
Önceden yüklenen w değişkeninin bir bölümüne erişebilir veya m kullanarak yeni bir değişken adı ekleyebiliriz.
>> y = m.w(1:4)
y = 1 1 1 1
>> m.name = 'Pitch Weights'
m = matlab.io.MatFile
Properties:
Properties.Source:'/Users/Shared/svn/Manuals/MATLABMachineLearning/MATLAB/PitchNNWeights.mat'
Properties.Writable: true name: [1x13 char]
w: [1x8 double]
>> d = load('PitchNNWeights')
d = w: [1 1 1 1 1 1 1 1]
name: 'Pitch Weights'
Yüklenmemiş verilere endekslemenin yapı dizileri ve seyrek diziler gibi bazı sınırları vardır. Ayrıca, matfile, genel bir kaydetme işlemi için varsayılan olmayan 7.3 sürümünü kullanan MAT dosyaları gerektirir. Bu özelliklerden yararlanmak için mat dosyasını kullanarak MAT-file dosyasını oluşturmanız veya dosyayı kaydederken v7.3 bayrağını kullanmanız gerekir.
►mathworks.com
Yazar: Esma Erdem
YORUMLAR
Aktif etkinlik bulunmamaktadır.
- Dünyanın En Görkemli 10 Güneş Tarlası
- Dünyanın En Büyük 10 Makinesi
- 2020’nin En İyi 10 Kişisel Robotu
- Programlamaya Erken Yaşta Başlayan 7 Ünlü Bilgisayar Programcısı
- Üretimin Geleceğinde Etkili Olacak 10 Beceri
- Olağan Üstü Tasarıma Sahip 5 Köprü
- Dünyanın En İyi Bilim ve Teknoloji Müzeleri
- En İyi 5 Tıbbi Robot
- Dünyanın En Zengin 10 Mühendisi
- Üretim için 6 Fabrikasyon İşlemi
- DrivePro Yaşam Döngüsü Hizmetleri
- Batarya Testinin Temelleri
- Enerji Yönetiminde Ölçümün Rolü: Verimliliğe Giden Yol
- HVAC Sistemlerinde Kullanılan EC Fan, Sürücü ve EC+ Fan Teknolojisi
- Su İşleme, Dağıtım ve Atık Su Yönetim Tesislerinde Sürücü Kullanımı
- Röle ve Trafo Merkezi Testlerinin Temelleri | Webinar
- Chint Elektrik Temel DIN Ray Ürünleri Tanıtımı
- Sigma Termik Manyetik Şalterler ile Elektrik Devrelerinde Koruma
- Elektrik Panoları ve Üretim Teknikleri
- Teknik Servis | Megger Türkiye
ANKET