diff --git a/Readme.md b/Readme.md index cea22f2..e7c1dc4 100644 --- a/Readme.md +++ b/Readme.md @@ -2,9 +2,10 @@ - [ ] Multiclass classifier using sepal data - [ ] Multiclass classifier using pedal and sepal data: - - sl vs pl - - sl vs pw - - sw vs pl - - sw vs pw + - sl vs pl + - sl vs pw + - sw vs pl + - sw vs pw - [ ] Compute score and select de best classifier + diff --git a/Session.md b/Session.md deleted file mode 100644 index 7a8f7ea..0000000 --- a/Session.md +++ /dev/null @@ -1,677 +0,0 @@ -```python -from sklearn import datasets -iris = datasets.load_iris() -list(iris.keys()) -``` - - - - - ['data', - 'target', - 'frame', - 'target_names', - 'DESCR', - 'feature_names', - 'filename', - 'data_module'] - - - - -```python -iris -``` - - - - - {'data': array([[5.1, 3.5, 1.4, 0.2], - [4.9, 3. , 1.4, 0.2], - [4.7, 3.2, 1.3, 0.2], - [4.6, 3.1, 1.5, 0.2], - [5. , 3.6, 1.4, 0.2], - [5.4, 3.9, 1.7, 0.4], - [4.6, 3.4, 1.4, 0.3], - [5. , 3.4, 1.5, 0.2], - [4.4, 2.9, 1.4, 0.2], - [4.9, 3.1, 1.5, 0.1], - [5.4, 3.7, 1.5, 0.2], - [4.8, 3.4, 1.6, 0.2], - [4.8, 3. , 1.4, 0.1], - [4.3, 3. , 1.1, 0.1], - [5.8, 4. , 1.2, 0.2], - [5.7, 4.4, 1.5, 0.4], - [5.4, 3.9, 1.3, 0.4], - [5.1, 3.5, 1.4, 0.3], - [5.7, 3.8, 1.7, 0.3], - [5.1, 3.8, 1.5, 0.3], - [5.4, 3.4, 1.7, 0.2], - [5.1, 3.7, 1.5, 0.4], - [4.6, 3.6, 1. , 0.2], - [5.1, 3.3, 1.7, 0.5], - [4.8, 3.4, 1.9, 0.2], - [5. , 3. , 1.6, 0.2], - [5. , 3.4, 1.6, 0.4], - [5.2, 3.5, 1.5, 0.2], - [5.2, 3.4, 1.4, 0.2], - [4.7, 3.2, 1.6, 0.2], - [4.8, 3.1, 1.6, 0.2], - [5.4, 3.4, 1.5, 0.4], - [5.2, 4.1, 1.5, 0.1], - [5.5, 4.2, 1.4, 0.2], - [4.9, 3.1, 1.5, 0.2], - [5. , 3.2, 1.2, 0.2], - [5.5, 3.5, 1.3, 0.2], - [4.9, 3.6, 1.4, 0.1], - [4.4, 3. , 1.3, 0.2], - [5.1, 3.4, 1.5, 0.2], - [5. , 3.5, 1.3, 0.3], - [4.5, 2.3, 1.3, 0.3], - [4.4, 3.2, 1.3, 0.2], - [5. , 3.5, 1.6, 0.6], - [5.1, 3.8, 1.9, 0.4], - [4.8, 3. , 1.4, 0.3], - [5.1, 3.8, 1.6, 0.2], - [4.6, 3.2, 1.4, 0.2], - [5.3, 3.7, 1.5, 0.2], - [5. , 3.3, 1.4, 0.2], - [7. , 3.2, 4.7, 1.4], - [6.4, 3.2, 4.5, 1.5], - [6.9, 3.1, 4.9, 1.5], - [5.5, 2.3, 4. , 1.3], - [6.5, 2.8, 4.6, 1.5], - [5.7, 2.8, 4.5, 1.3], - [6.3, 3.3, 4.7, 1.6], - [4.9, 2.4, 3.3, 1. ], - [6.6, 2.9, 4.6, 1.3], - [5.2, 2.7, 3.9, 1.4], - [5. , 2. , 3.5, 1. ], - [5.9, 3. , 4.2, 1.5], - [6. , 2.2, 4. , 1. ], - [6.1, 2.9, 4.7, 1.4], - [5.6, 2.9, 3.6, 1.3], - [6.7, 3.1, 4.4, 1.4], - [5.6, 3. , 4.5, 1.5], - [5.8, 2.7, 4.1, 1. ], - [6.2, 2.2, 4.5, 1.5], - [5.6, 2.5, 3.9, 1.1], - [5.9, 3.2, 4.8, 1.8], - [6.1, 2.8, 4. , 1.3], - [6.3, 2.5, 4.9, 1.5], - [6.1, 2.8, 4.7, 1.2], - [6.4, 2.9, 4.3, 1.3], - [6.6, 3. , 4.4, 1.4], - [6.8, 2.8, 4.8, 1.4], - [6.7, 3. , 5. , 1.7], - [6. , 2.9, 4.5, 1.5], - [5.7, 2.6, 3.5, 1. ], - [5.5, 2.4, 3.8, 1.1], - [5.5, 2.4, 3.7, 1. ], - [5.8, 2.7, 3.9, 1.2], - [6. , 2.7, 5.1, 1.6], - [5.4, 3. , 4.5, 1.5], - [6. , 3.4, 4.5, 1.6], - [6.7, 3.1, 4.7, 1.5], - [6.3, 2.3, 4.4, 1.3], - [5.6, 3. , 4.1, 1.3], - [5.5, 2.5, 4. , 1.3], - [5.5, 2.6, 4.4, 1.2], - [6.1, 3. , 4.6, 1.4], - [5.8, 2.6, 4. , 1.2], - [5. , 2.3, 3.3, 1. ], - [5.6, 2.7, 4.2, 1.3], - [5.7, 3. , 4.2, 1.2], - [5.7, 2.9, 4.2, 1.3], - [6.2, 2.9, 4.3, 1.3], - [5.1, 2.5, 3. , 1.1], - [5.7, 2.8, 4.1, 1.3], - [6.3, 3.3, 6. , 2.5], - [5.8, 2.7, 5.1, 1.9], - [7.1, 3. , 5.9, 2.1], - [6.3, 2.9, 5.6, 1.8], - [6.5, 3. , 5.8, 2.2], - [7.6, 3. , 6.6, 2.1], - [4.9, 2.5, 4.5, 1.7], - [7.3, 2.9, 6.3, 1.8], - [6.7, 2.5, 5.8, 1.8], - [7.2, 3.6, 6.1, 2.5], - [6.5, 3.2, 5.1, 2. ], - [6.4, 2.7, 5.3, 1.9], - [6.8, 3. , 5.5, 2.1], - [5.7, 2.5, 5. , 2. ], - [5.8, 2.8, 5.1, 2.4], - [6.4, 3.2, 5.3, 2.3], - [6.5, 3. , 5.5, 1.8], - [7.7, 3.8, 6.7, 2.2], - [7.7, 2.6, 6.9, 2.3], - [6. , 2.2, 5. , 1.5], - [6.9, 3.2, 5.7, 2.3], - [5.6, 2.8, 4.9, 2. ], - [7.7, 2.8, 6.7, 2. ], - [6.3, 2.7, 4.9, 1.8], - [6.7, 3.3, 5.7, 2.1], - [7.2, 3.2, 6. , 1.8], - [6.2, 2.8, 4.8, 1.8], - [6.1, 3. , 4.9, 1.8], - [6.4, 2.8, 5.6, 2.1], - [7.2, 3. , 5.8, 1.6], - [7.4, 2.8, 6.1, 1.9], - [7.9, 3.8, 6.4, 2. ], - [6.4, 2.8, 5.6, 2.2], - [6.3, 2.8, 5.1, 1.5], - [6.1, 2.6, 5.6, 1.4], - [7.7, 3. , 6.1, 2.3], - [6.3, 3.4, 5.6, 2.4], - [6.4, 3.1, 5.5, 1.8], - [6. , 3. , 4.8, 1.8], - [6.9, 3.1, 5.4, 2.1], - [6.7, 3.1, 5.6, 2.4], - [6.9, 3.1, 5.1, 2.3], - [5.8, 2.7, 5.1, 1.9], - [6.8, 3.2, 5.9, 2.3], - [6.7, 3.3, 5.7, 2.5], - [6.7, 3. , 5.2, 2.3], - [6.3, 2.5, 5. , 1.9], - [6.5, 3. , 5.2, 2. ], - [6.2, 3.4, 5.4, 2.3], - [5.9, 3. , 5.1, 1.8]]), - 'target': array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]), - 'frame': None, - 'target_names': array(['setosa', 'versicolor', 'virginica'], dtype='] - - - - - -![png](output_4_1.png) - - - - -```python -plt.plot(lp,'.k') -``` - - - - - [] - - - - - -![png](output_5_1.png) - - - - -```python -iris.target -``` - - - - - array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]) - - - -# Logistic regressor -## Decision boudaries - - -```python -import numpy as np -import matplotlib.pyplot as plt -t=np.linspace(-100, 100, 1000) -sig=1/(1+np.exp(-t+3)) -plt.plot(t,sig, '.b', label=r"$\sigma=\frac{1}{1+e^{-t}}$") -plt.legend(loc='upper left', fontsize=20) -plt.axis([-5, 5, -0.1, 1]) -plt.plot([0,0], [0,1], 'r--') -``` - - - - - [] - - - - - -![png](output_8_1.png) - - - -# Iris-Setosa Classifier based on petal width - - -```python -X=iris.data[:,1:2] -y=(iris.target==0).astype(int) -``` - - -```python -from sklearn.linear_model import LogisticRegression -mylr=LogisticRegression(solver='lbfgs', random_state=42) -mylr.fit(X,y) -``` - - - - -
LogisticRegression(random_state=42)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
- - - - -```python -Xnew=np.linspace(2,5,70).reshape(-1,1) -yPred=mylr.predict_proba(Xnew) -plt.plot(Xnew,yPred[:,0],'.r', label='No Iris-Set') -plt.plot(Xnew,yPred[:,1],'.b', label='Iris-Set') -plt.legend() -plt.plot(X,y,'*g') -``` - - - - - [] - - - - - -![png](output_12_1.png) - - - - -```python - -``` - - -```python -# Iris-Setosa Classifier based on petal width - -X=iris.data[:,0:1] -y=(iris.target==0).astype(int) - -from sklearn.linear_model import LogisticRegression -mylr=LogisticRegression(solver='lbfgs', random_state=42) -mylr.fit(X,y) - -Xnew=np.linspace(2,8,70).reshape(-1,1) -yPred=mylr.predict_proba(Xnew) -#plt.plot(Xnew,yPred[:,0],'.r', label='No Iris-Set') -plt.plot(Xnew,yPred[:,1],'.b', label='Iris-Set') -plt.legend() -plt.plot(X,y,'*g') -``` - - - - - [] - - - - - -![png](output_14_1.png) - - - -# Session 2: Softmax regression - -## Multiple features binary classifier (Virginica) - - -```python -import matplotlib.pyplot as plt -pl=iris.data[:,2:3] -pw=iris.data[:,3:] -tg = iris.target -plt.plot(pl[tg==0,0],pw[tg==0,0],'.r',label='Set') -plt.plot(pl[tg==1,0],pw[tg==1,0],'.b',label='Ver') -plt.plot(pl[tg==2,0],pw[tg==2,0],'.g',label='Vir') -plt.legend() -plt.show() -``` - - - -![png](output_16_0.png) - - - - -```python -from sklearn.linear_model import LogisticRegression -X=iris.data[:,2:] -y=(iris.target==2).astype(int) - -lrvir=LogisticRegression(random_state=42, tol=1e-5, C=10, max_iter=100, solver='newton-cg') -lrvir.fit(X,y) -``` - - - - -
LogisticRegression(C=10, random_state=42, solver='newton-cg', tol=1e-05)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
- - - - -```python -import numpy as np -x0, x1=np.meshgrid( - np.linspace(1,6.9,500).reshape(-1,1), - np.linspace(0.1,2.5,200).reshape(-1,1)) -Xnew=np.c_[x0.ravel(), x1.ravel()] -yProb=lrvir.predict_proba(Xnew) -``` - - -```python -plt.figure(figsize=(10,4)) -plt.plot(X[y==0,0], X[y==0,1],'bs',label='No Virg') -plt.plot(X[y==1,0], X[y==1,1],'g^',label='Virginica') -zz=yProb[:,1].reshape(x0.shape) -contour=plt.contour(x0,x1,zz) -plt.clabel(contour, inline=1,fontsize=15) -plt.xlabel("Petal Length") -plt.ylabel("Petal Width") -plt.legend() -plt.show() -``` - - - -![png](output_19_0.png) - - - - -```python -fig, ax =plt.subplots(subplot_kw={"projection": "3d"}) -surf = ax.plot_surface(x0,x1,zz) -``` - - - -![png](output_20_0.png) - - - -## Multiple features and multiclass classifier (Virginica) - - -```python -X=iris.data[:,2:] -y=iris.target -``` - - -```python -lrmfmc=LogisticRegression(multi_class='multinomial', - solver='lbfgs', - C=100, - random_state=42) -lrmfmc.fit(X,y) -x0,x1=np.meshgrid( - np.linspace(0,8,500).reshape(-1,1), - np.linspace(0,3.5,200).reshape(-1,1)) - -Xnew=np.c_[x0.ravel(), x1.ravel()] -yProba=lrmfmc.predict_proba(Xnew) -#yPred=lrmfmc.predict(Xnew) - -from matplotlib.colors import ListedColormap -#customc=ListedColormap(['#fafab0', '#9898ff', '#a0faa0']) -zz=yProba[:,1].reshape(x0.shape) -#zz=yPred.reshape(x0.shape) -plt.figure(figsize=(10,4)) -plt.plot(X[y==2,0], X[y==2,1],'g^',label='Virg') -plt.plot(X[y==1,0], X[y==1,1],'bs',label='Versic') -plt.plot(X[y==0,0], X[y==0,1],'yo',label='Setos') -contour=plt.contour(x0,x1,zz,cmap=plt.cm.brg) -plt.clabel(contour,inline=1,fontsize=12) -#plt.contourf(x0,x1,zz,cmap=customc) -``` - - - - - - - - - - -![png](output_23_1.png) - - - - -```python -yPred=lrmfmc.predict(Xnew) -zPred=yPred.reshape(x0.shape) -plt.contourf(x0,x1,zPred,alpha=0.4) -plt.plot(X[y==2,0], X[y==2,1],'g^',label='Virg') -plt.plot(X[y==1,0], X[y==1,1],'bs',label='Versic') -plt.plot(X[y==0,0], X[y==0,1],'yo',label='Setos') -plt.show() -``` - - - -![png](output_24_0.png) - - - - -```python -fig, ax =plt.subplots(subplot_kw={"projection": "3d"}) -surf = ax.plot_surface(x0,x1,zz,cmap='jet') -``` - - - -![png](output_25_0.png) - - - -## Homework: Sepal multi-features and multi-class - - -```python -X=iris.data[:,0:2] -y=iris.target -mlr3=LogisticRegression( - multi_class='multinomial', - solver='lbfgs', - C=10, - random_state=42) -mlr3.fit(X,y) -``` - - - - -
LogisticRegression(C=10, multi_class='multinomial', random_state=42)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
- - - - -```python -import numpy as np -x0,x1=np.meshgrid( - np.linspace(0,7,500).reshape(-1,1), - np.linspace(0,3,200).reshape(-1,1)) -``` - - -```python -Xnew=np.c_[x0.ravel(), x1.ravel()] -yPred=mlr3.predict_proba(Xnew) -yProba=mlr3.predict(Xnew) -zz=yProba.reshape(x0.shape) -zz1=yPred[:,1].reshape(x0.shape) -``` - - -```python -from matplotlib.colors import ListedColormap -plt.plot(X[y==2,0], X[y==2,1],'y*', label='Virg') -plt.plot(X[y==1,0], X[y==1,1],'g^', label='Vers') -plt.plot(X[y==0,0], X[y==0,1],'bs', label='Set') -contour=plt.contour(x0,x1,zz1, cmap=plt.cm.brg) -ccmap=ListedColormap(['#fafab0', '#9898ff', '#a0faa0']) -plt.contourf(x0,x1,zz,cmap=ccmap) -plt.clabel(contour, inline=1,fontsize=12) -plt.xlabel('Sepal Width', fontsize=12) -plt.ylabel('Sepal Length', fontsize=12) -plt.axis([4,8.5,1,5]) -plt.legend() -``` - - - - - - - - - - -![png](output_30_1.png) - - - - -```python -fig, ax =plt.subplots(subplot_kw={"projection": "3d"}) -surf = ax.plot_surface(x0,x1,zz1,cmap='jet') -``` - - - -![png](output_31_0.png) - - diff --git a/output_12_1.png b/output_12_1.png deleted file mode 100644 index 6c60f7a..0000000 Binary files a/output_12_1.png and /dev/null differ diff --git a/output_14_1.png b/output_14_1.png deleted file mode 100644 index f61451d..0000000 Binary files a/output_14_1.png and /dev/null differ diff --git a/output_16_0.png b/output_16_0.png deleted file mode 100644 index 86d2dfa..0000000 Binary files a/output_16_0.png and /dev/null differ diff --git a/output_19_0.png b/output_19_0.png deleted file mode 100644 index 2ae51d1..0000000 Binary files a/output_19_0.png and /dev/null differ diff --git a/output_20_0.png b/output_20_0.png deleted file mode 100644 index 2c28027..0000000 Binary files a/output_20_0.png and /dev/null differ diff --git a/output_23_1.png b/output_23_1.png deleted file mode 100644 index 230bb43..0000000 Binary files a/output_23_1.png and /dev/null differ diff --git a/output_24_0.png b/output_24_0.png deleted file mode 100644 index af01b7b..0000000 Binary files a/output_24_0.png and /dev/null differ diff --git a/output_25_0.png b/output_25_0.png deleted file mode 100644 index 811ba51..0000000 Binary files a/output_25_0.png and /dev/null differ diff --git a/output_30_1.png b/output_30_1.png deleted file mode 100644 index 5ec87bd..0000000 Binary files a/output_30_1.png and /dev/null differ diff --git a/output_31_0.png b/output_31_0.png deleted file mode 100644 index 2bf5443..0000000 Binary files a/output_31_0.png and /dev/null differ diff --git a/output_4_1.png b/output_4_1.png deleted file mode 100644 index 35c9d09..0000000 Binary files a/output_4_1.png and /dev/null differ diff --git a/output_5_1.png b/output_5_1.png deleted file mode 100644 index e5e7117..0000000 Binary files a/output_5_1.png and /dev/null differ diff --git a/output_8_1.png b/output_8_1.png deleted file mode 100644 index f236da8..0000000 Binary files a/output_8_1.png and /dev/null differ