- Statistics for Machine Learning
- Pratap Dangeti
- 366字
- 2021-07-02 19:05:56
Train, validation, and test data
Cross-validation is not popular in the statistical modeling world for many reasons; statistical models are linear in nature and robust, and do not have a high variance/overfitting problem. Hence, the model fit will remain the same either on train or test data, which does not hold true in the machine learning world. Also, in statistical modeling, lots of tests are performed at the individual parameter level apart from aggregated metrics, whereas in machine learning we do not have visibility at the individual parameter level:

In the following code, both the R and Python implementation has been provided. If none of the percentages are provided, the default parameters are 50 percent for train data, 25 percent for validation data, and 25 percent for the remaining test data.
Python implementation has only one train and test split functionality, hence we have used it twice and also used the number of observations to split rather than the percentage (as shown in the previous train and test split example). Hence, a customized function is needed to split into three datasets:
>>> import pandas as pd >>> from sklearn.model_selection import train_test_split >>> original_data = pd.read_csv("mtcars.csv") >>> def data_split(dat,trf = 0.5,vlf=0.25,tsf = 0.25): ... nrows = dat.shape[0] ... trnr = int(nrows*trf) ... vlnr = int(nrows*vlf)
The following Python code splits the data into training and the remaining data. The remaining data will be further split into validation and test datasets:
... tr_data,rmng = train_test_split(dat,train_size = trnr,random_state=42) ... vl_data, ts_data = train_test_split(rmng,train_size = vlnr,random_state=45) ... return (tr_data,vl_data,ts_data)
Implementation of the split function on the original data to create three datasets (by 50 percent, 25 percent, and 25 percent splits) is as follows:
>>> train_data, validation_data, test_data = data_split (original_data ,trf=0.5, vlf=0.25,tsf=0.25)
The R code for the train, validation, and test split is as follows:
# Train Validation & Test samples trvaltest <- function(dat,prop = c(0.5,0.25,0.25)){ nrw = nrow(dat) trnr = as.integer(nrw *prop[1]) vlnr = as.integer(nrw*prop[2]) set.seed(123) trni = sample(1:nrow(dat),trnr) trndata = dat[trni,] rmng = dat[-trni,] vlni = sample(1:nrow(rmng),vlnr) valdata = rmng[vlni,] tstdata = rmng[-vlni,] mylist = list("trn" = trndata,"val"= valdata,"tst" = tstdata) return(mylist) } outdata = trvaltest(mtcars,prop = c(0.5,0.25,0.25)) train_data = outdata$trn; valid_data = outdata$val; test_data = outdata$tst
- scikit-learn Cookbook
- Docker技術(shù)入門與實戰(zhàn)(第3版)
- 64位匯編語言的編程藝術(shù)
- Java EE 7 Development with NetBeans 8
- 精通網(wǎng)絡(luò)視頻核心開發(fā)技術(shù)
- 微信小程序入門指南
- Java系統(tǒng)化項目開發(fā)教程
- 從零開始學C語言
- R語言與網(wǎng)絡(luò)輿情處理
- Mastering Xamarin.Forms(Second Edition)
- Visual Basic 6.0程序設(shè)計實驗教程
- 開源項目成功之道
- Java Web從入門到精通(第3版)
- Emotional Intelligence for IT Professionals
- 會當凌絕頂:Java開發(fā)修行實錄