Search icon
Arrow left icon
All Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletters
Free Learning
Arrow right icon
Machine Learning with Swift

You're reading from  Machine Learning with Swift

Product type Book
Published in Feb 2018
Publisher Packt
ISBN-13 9781787121515
Pages 378 pages
Edition 1st Edition
Languages
Authors (3):
Jojo Moolayil Jojo Moolayil
Profile icon Jojo Moolayil
Alexander Sosnovshchenko Alexander Sosnovshchenko
Profile icon Alexander Sosnovshchenko
Oleksandr Baiev Oleksandr Baiev
View More author details

Table of Contents (18) Chapters

Title Page
Packt Upsell
Contributors
Preface
Getting Started with Machine Learning Classification – Decision Tree Learning K-Nearest Neighbors Classifier K-Means Clustering Association Rule Learning Linear Regression and Gradient Descent Linear Classifier and Logistic Regression Neural Networks Convolutional Neural Networks Natural Language Processing Machine Learning Libraries Optimizing Neural Networks for Mobile Devices Best Practices Index

Implementing k-means in Swift


Similar to the KNN from the previous chapter, we'll have a structure to represent an algorithm and keep all its hyperparameters:

struct KMeans { 
  public let k: Int 

The standard k-means algorithm was designed to be used only with Euclidean distance:

internal let distanceMetric = Euclidean.distance 

We need several arrays to store different kinds of data during the clustering.

Storage for samples:

internal var data: [[Double]] = [] 

Coordinates of centroids:

public var centroids: [[Double]] = [] 

An array that matches each sample to its cluster. It should be of the same length as the data, and for every sample, it stores an index of centroid in the centroids array:

private(set) var clusters: [Int] = [] 

Within-cluster sum of squares is a measure that we'll use later to assess the quality of the result:

internal var WCSS: Double = 0.0 

For now, the only parameter that we pass on the initialization is the number of clusters:

public init (k: Int) { 
  self.k = k 
}
} 

Unlike...

lock icon The rest of the chapter is locked
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $15.99/month. Cancel anytime}