# To create new data from rows of existing data by multiplying random numbers

Wondering if they could be two ways to create data, when more data is required for machine learning (conventional algorithm for binary classification).

The goal is to create new rows of data, by having varied values from the originals.

Taking South African Hearth Disease Data as an example.

Idea #1: Based on the existing data - each row of the original data, is used to create a new row of data. That is, each cell value of the row, is multiplied by a random number between a range, for example, +/-20%, i.e. 0.8 ~ 1.2.

Trying to illustrate the idea as:

Idea #2: First, to find out the minimum and maximum of each input variable, of each target variable.

Each cell value of the new row is a random number in the correspondent (min, max). By doing this, new rows of the target "1" and "0" will be created.

Trying to illustrate the idea as:

Except to use the created data to build models and apply to validation data, to examine the effect of the created data, what would be the theory and practice to verify if above ideas are valid? Thank you.

• Have you checked SMOTE? arxiv.org/abs/1106.1813 Dec 8, 2020 at 15:23
• @jonnor, thank you for the comment. The question and purpose is to create new rows for a bigger dataset, from the original one. SMOTE doesn't create new rows of data, I am afraid. :) Dec 8, 2020 at 15:26
• Sure it does? It creates synthetic examples for the minority class. At leas the Python implementaton imbalanced-learn.readthedocs.io/en/stable/generated/… machinelearningmastery.com/… Dec 8, 2020 at 17:10
• @jonnor, thank you for pointing out SMOTE as an option. Would you consider to post your comments as an answer so that we can close this question? Dec 31, 2020 at 0:52
• I added an answer now with the above comments, and a bit more. Jan 1, 2021 at 22:12