From 3adc66912f4b053c06ab91e948d05e315d2d514d Mon Sep 17 00:00:00 2001
From: Michel Vincent <vm.michel@gmail.com>
Date: Thu, 4 Mar 2010 08:06:10 +0000
Subject: [PATCH] Add nonlinear samples generator

git-svn-id: https://scikit-learn.svn.sourceforge.net/svnroot/scikit-learn/trunk@491 22fbfee3-77ab-4535-9bad-27d1bd3bc7d8
---
 .../datasets/samples_generator/nonlinear.py   | 30 +++++++++++++++++++
 1 file changed, 30 insertions(+)
 create mode 100755 scikits/learn/datasets/samples_generator/nonlinear.py

diff --git a/scikits/learn/datasets/samples_generator/nonlinear.py b/scikits/learn/datasets/samples_generator/nonlinear.py
new file mode 100755
index 0000000000..db44141562
--- /dev/null
+++ b/scikits/learn/datasets/samples_generator/nonlinear.py
@@ -0,0 +1,30 @@
+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
+    
-- 
GitLab