- 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
- Vue 3移動Web開發與性能調優實戰
- Learning RxJava
- Dependency Injection in .NET Core 2.0
- Learning Neo4j 3.x(Second Edition)
- Visual FoxPro程序設計
- HTML5從入門到精通 (第2版)
- Learning Probabilistic Graphical Models in R
- 動手學數據結構與算法
- Scratch3.0趣味編程動手玩:比賽訓練營
- Android Development Tools for Eclipse
- SwiftUI極簡開發
- Android移動應用開發項目教程
- 計算機應用基礎(Windows 7+Office 2010)
- 軟件開發中的決策:權衡與取舍
- 現代JavaScript編程:經典范例與實踐技巧