An Introduction to Machine Learning Theory and Its Applications: A Visual Tutorial with Examples

What actually does Machine Learning mean and what types of problems does it solve? This Machine Learning tutorial introduces the basics of ML theory, laying down the common themes and concepts. The practical examples substituted with the mathematical functions of univariate linear regression, linear least squares and others make it easy to follow the logic and get comfortable with machine learning basics.

By KrYpToNiAnS

List of required packages

“`{r}
library(data.table) #for fread function
library(dplyr) #for pipeline function
library(plyr) #for join function
library(tseries) #for ts function
library(forecast) #for forecast function
library(caret) #for neuralnetwork prediction
library(ggplot2) #for plots
library(mice) #for imputating NA/missing values
library(zoo) #for imputing

“`

###Working with Dataset[price_data.csv]

“`{r}

url <- "matrix_one_file/price_data.csv"

crypto <- fread(url, header = TRUE)

crypto_main <- crypto[,c(1:17,20,25,34,37)]
View(crypto_main)
crypto_loop <- crypto_main[,2:21]
name <- names(crypto_loop)

#Automation for Prediction
for( i in name){

crypto_work % select(time,i)
names(crypto_work) <- c("Time", "Price")
crypto_work$Time <- as.POSIXct(crypto_work$Time, format = "%Y-%m-%d %H:%M:%S")
d<- colnames(crypto_work)[2]

# to get the data for time series
crypto_work1 % filter(Time = “2018-01-18 00:00:00”)
Time <- seq(ISOdatetime(2018,1,18,00,0,0), ISOdatetime(2018, 1, 24,11,55,0), by= (60*5))
df <- data.frame(Time)
crypto_temp <- join(df, crypto_work1, by = "Time")
crypto_temp$Price <- na.approx(crypto_temp$Price)

#to get the original value from 25th Jan to 29th Jan
crypto_orignal_value % filter(Time = “2018-01-25 00:00:00”)
Time <- seq(ISOdatetime(2018,1,25,00,0,0), ISOdatetime(2018, 1, 29,11,55,0), by= (60*5))
df1 <- data.frame(Time)
crypto_temp1 <- join(df1, crypto_orignal_value ,by = "Time")
crypto_temp1$Price <- na.approx(crypto_temp1$Price)

#initializing variables
df_new <- data.frame()
new_df <- data.frame()
value <- c()
start <- 1

for(j in 1:5){

for(k in 1:288){

crypto_price <- ts(crypto_temp$Price, start = c(1,1), frequency = 288)
fit1 <- nnetar(crypto_price)
a <- forecast(fit1, h=1)
value <- append(value,a$mean)
df_new<- data.frame(crypto_temp1$Time[start], a$mean)
names(df_new) <- c("Time","Price")
crypto_temp <- rbind(crypto_temp, df_new)
start <- start+1

}
output_file <- crypto_temp[(1873+(start-k)):nrow(crypto_temp),]
rownames(output_file) <- c()
name <- paste(i,d,"(",j,")",".csv",sep = "")
write.csv(output_file,name)

}

}

“`

Prediction Model for Crypto Currency in R

Bitcoins are cryptocurrency systems, that enable its users to exchange payments without passing through a central authority (Eg. Reserve Bank of India, Federal Bank etc). They were developed in 2008, using the Blockchain Technology. In the present article, methods to create prediction models have been implemented. The model considers a sample data of 3 months spaced over 5 minutes for each day. The Training data and Testing data are developed on that dataset for twenty bitcoins; viz: Bitcoin, Bitcoin Cash, Bitcoin Gold, Cardeno, Dash, Dogecoin, Eos, Ethereum, Ethereum Class, Iota, Lisk, Litrcoin, Monero, NEMcoin, Neo, Ripple, Stellar, Tether, Tron, Zcash.
The prediction models used are ARIMA, Exponential Smoothing and Neural Networks on R. The models calculate the values for the next time instant, i.e. next five minutes and the code developed goes on continuing it (predicting next 5-minute price) for all 288 time-points in a day.