31 lines
981 B
Python
Executable File
31 lines
981 B
Python
Executable File
import numpy as np
|
|
import numpy.random as nr
|
|
|
|
def friedman(nb_samples=100, nb_features=10,noise_std=1):
|
|
"""
|
|
Function creating simulated data with non linearities
|
|
(cf.Friedman 1993)
|
|
X = NR.normal(0,1)
|
|
Y = 10*sin(X[:,0]*X[:,1]) + 20*(X[:,2]-0.5)**2 + 10*X[:,3] + 5*X[:,4]
|
|
The number of features is at least 5.
|
|
|
|
Parameters
|
|
----------
|
|
nb_samples : int
|
|
number of samples (defaut is 100).
|
|
nb_features : int
|
|
number of features (defaut is 10).
|
|
noise_std : float
|
|
std of the noise, which is added as noise_std*NR.normal(0,1)
|
|
Returns
|
|
-------
|
|
X : numpy array of shape (nb_samples, nb_features) for input samples
|
|
Y : numpy array of shape (nb_samples) for labels
|
|
|
|
"""
|
|
X = nr.normal(loc=0, scale=1, size=(nb_samples, nb_features))
|
|
Y = 10*np.sin(X[:,0]*X[:,1]) + 20*(X[:,2]-0.5)**2 + 10*X[:,3] + 5*X[:,4]
|
|
Y += noise_std*nr.normal(loc=0,scale=1,size=(nb_samples))
|
|
return X,Y
|
|
|