elektrik port üyelik servisleri elektrik port üyelik servisleri

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.



A- A+
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

 

>> 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) 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.

 
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
 

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 = 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
 
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.a = 1;
 
>>s.b = 2;

>>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')

 
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

 
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'

 
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: {}
 
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 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

 
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.

 
 

 
mathworks.com



Yazar: Esma Erdem


Aktif etkinlik bulunmamaktadır.
ANKET
Endüstri 4.0 için En Hazır Sektör Hangisidir

Sonuçlar