ML involves building programs with tunable parameters that are adjusted automatically so as to improve their behaviour by adapting to previously seen data.
The ML algorithms in the scikit-learn library take a numpy array as an input $x$, with shape (n_samples, n_features).
First let's load the data:
In [2]:
    
from sklearn.datasets import load_iris
iris = load_iris()
n_samples, n_features = iris.data.shape
    
The features of each flower are stored row-wise in the data attribute of the dataset
In [3]:
    
iris.data[0]
    
    Out[3]:
The information about the class of each sample is stored in the target attribute, whilst the names are stored in the attribute target_names
In [6]:
    
iris.target
    
    Out[6]:
In [7]:
    
iris.target_names
    
    Out[7]:
In [ ]:
    
### Supervised and Unsupervised Learning