From 944be8c685c0bfdb4b4d08842e8a1b8f5cc132ff Mon Sep 17 00:00:00 2001 From: Rishikesh Date: Thu, 16 Feb 2017 03:46:46 +0530 Subject: [PATCH 1/9] Modify SVR example for better plot Change coef0 value for better plot of poly kernal. Also improve the support vectors marking in SVR plot. Fixes: #8365 --- examples/svm/plot_svm_regression.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/examples/svm/plot_svm_regression.py b/examples/svm/plot_svm_regression.py index 15a744e2aa8ca..44142df3afd3e 100644 --- a/examples/svm/plot_svm_regression.py +++ b/examples/svm/plot_svm_regression.py @@ -23,9 +23,9 @@ ############################################################################### # Fit regression model -svr_rbf = SVR(kernel='rbf', C=1e3, gamma=0.1) -svr_lin = SVR(kernel='linear', C=1e3) -svr_poly = SVR(kernel='poly', C=1e3, degree=2) +svr_rbf = SVR(kernel='rbf', C=100, gamma=0.1, epsilon=.1) +svr_lin = SVR(kernel='linear', C=100) +svr_poly = SVR(kernel='poly', C=100, degree=3, epsilon=.1, coef0=1) y_rbf = svr_rbf.fit(X, y).predict(X) y_lin = svr_lin.fit(X, y).predict(X) y_poly = svr_poly.fit(X, y).predict(X) @@ -33,7 +33,12 @@ ############################################################################### # look at the results lw = 2 -plt.scatter(X, y, color='darkorange', label='data') +plt.scatter(X[svr_rbf.support_], y[svr_rbf.support_], facecolor="none", edgecolor="k", marker='^', + label='rbf support vectors', s=40) +plt.scatter(X[svr_lin.support_], y[svr_lin.support_], facecolor="none", edgecolor="k", marker='o', + label='lin support vectors', s=40) +plt.scatter(X[svr_poly.support_], y[svr_poly.support_], facecolor="none", edgecolor="k", marker='s', + label='poly support vectors', s=40) plt.hold('on') plt.plot(X, y_rbf, color='navy', lw=lw, label='RBF model') plt.plot(X, y_lin, color='c', lw=lw, label='Linear model') From 73ba352ac2cdbf57833e5eff155999caa5523842 Mon Sep 17 00:00:00 2001 From: Rishikesh Date: Thu, 16 Feb 2017 20:06:19 +0530 Subject: [PATCH 2/9] Modify plot_svm_regression for removing flake8 error Format a code to remove flake8 error from travis build Issue: #8365 --- examples/svm/plot_svm_regression.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/examples/svm/plot_svm_regression.py b/examples/svm/plot_svm_regression.py index 44142df3afd3e..d18c4f4f36db7 100644 --- a/examples/svm/plot_svm_regression.py +++ b/examples/svm/plot_svm_regression.py @@ -33,12 +33,13 @@ ############################################################################### # look at the results lw = 2 -plt.scatter(X[svr_rbf.support_], y[svr_rbf.support_], facecolor="none", edgecolor="k", marker='^', - label='rbf support vectors', s=40) -plt.scatter(X[svr_lin.support_], y[svr_lin.support_], facecolor="none", edgecolor="k", marker='o', - label='lin support vectors', s=40) -plt.scatter(X[svr_poly.support_], y[svr_poly.support_], facecolor="none", edgecolor="k", marker='s', - label='poly support vectors', s=40) +plt.scatter(X[svr_rbf.support_], y[svr_rbf.support_], facecolor="none", + edgecolor="k", marker='8', label='rbf support vectors', s=100) +plt.scatter(X[svr_lin.support_], y[svr_lin.support_], facecolor="none", + edgecolor="k", marker='^', label='linear support vectors', s=100) +plt.scatter(X[svr_poly.support_], y[svr_poly.support_], facecolor="none", + edgecolor="k", marker='s', label='poly support vectors', s=100) + plt.hold('on') plt.plot(X, y_rbf, color='navy', lw=lw, label='RBF model') plt.plot(X, y_lin, color='c', lw=lw, label='Linear model') From 4eda965963041e348820996c29756920abd09311 Mon Sep 17 00:00:00 2001 From: Rita Li Date: Sat, 29 Sep 2018 12:01:53 -0400 Subject: [PATCH 3/9] change the marker sizea --- examples/svm/plot_svm_regression.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/svm/plot_svm_regression.py b/examples/svm/plot_svm_regression.py index d18c4f4f36db7..38a08de3f33bc 100644 --- a/examples/svm/plot_svm_regression.py +++ b/examples/svm/plot_svm_regression.py @@ -34,11 +34,11 @@ # look at the results lw = 2 plt.scatter(X[svr_rbf.support_], y[svr_rbf.support_], facecolor="none", - edgecolor="k", marker='8', label='rbf support vectors', s=100) + edgecolor="k", marker='8', label='rbf support vectors', s=40) plt.scatter(X[svr_lin.support_], y[svr_lin.support_], facecolor="none", - edgecolor="k", marker='^', label='linear support vectors', s=100) + edgecolor="k", marker='^', label='linear support vectors', s=40) plt.scatter(X[svr_poly.support_], y[svr_poly.support_], facecolor="none", - edgecolor="k", marker='s', label='poly support vectors', s=100) + edgecolor="k", marker='s', label='poly support vectors', s=40) plt.hold('on') plt.plot(X, y_rbf, color='navy', lw=lw, label='RBF model') From 4b2eb9a617b586f0a1d516ebfcdb882f418c23fc Mon Sep 17 00:00:00 2001 From: Vasudha Gupta Date: Sat, 29 Sep 2018 12:34:55 -0400 Subject: [PATCH 4/9] Updates colors of lines and markers to make them consistent --- examples/svm/plot_svm_regression.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/svm/plot_svm_regression.py b/examples/svm/plot_svm_regression.py index 38a08de3f33bc..4ee08456dd893 100644 --- a/examples/svm/plot_svm_regression.py +++ b/examples/svm/plot_svm_regression.py @@ -34,16 +34,16 @@ # look at the results lw = 2 plt.scatter(X[svr_rbf.support_], y[svr_rbf.support_], facecolor="none", - edgecolor="k", marker='8', label='rbf support vectors', s=40) + edgecolor="m", marker='8', label='rbf support vectors', s=40) plt.scatter(X[svr_lin.support_], y[svr_lin.support_], facecolor="none", - edgecolor="k", marker='^', label='linear support vectors', s=40) + edgecolor="c", marker='^', label='linear support vectors', s=40) plt.scatter(X[svr_poly.support_], y[svr_poly.support_], facecolor="none", - edgecolor="k", marker='s', label='poly support vectors', s=40) + edgecolor="g", marker='s', label='poly support vectors', s=40) plt.hold('on') -plt.plot(X, y_rbf, color='navy', lw=lw, label='RBF model') +plt.plot(X, y_rbf, color='m', lw=lw, label='RBF model') plt.plot(X, y_lin, color='c', lw=lw, label='Linear model') -plt.plot(X, y_poly, color='cornflowerblue', lw=lw, label='Polynomial model') +plt.plot(X, y_poly, color='g', lw=lw, label='Polynomial model') plt.xlabel('data') plt.ylabel('target') plt.title('Support Vector Regression') From cef9beaf16f96cebbb6c5ff05b40f81e747aeadd Mon Sep 17 00:00:00 2001 From: Rita Li Date: Sat, 29 Sep 2018 13:09:03 -0400 Subject: [PATCH 5/9] change marker size --- examples/svm/plot_svm_regression.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/svm/plot_svm_regression.py b/examples/svm/plot_svm_regression.py index c50dd188cb304..fb3c127beae32 100644 --- a/examples/svm/plot_svm_regression.py +++ b/examples/svm/plot_svm_regression.py @@ -35,11 +35,11 @@ lw = 2 plt.scatter(X[svr_rbf.support_], y[svr_rbf.support_], facecolor="none", - edgecolor="m", marker='8', label='rbf support vectors', s=40) + edgecolor="m", marker='8', label='rbf support vectors', s=50) plt.scatter(X[svr_lin.support_], y[svr_lin.support_], facecolor="none", - edgecolor="c", marker='^', label='linear support vectors', s=40) + edgecolor="c", marker='^', label='linear support vectors', s=50) plt.scatter(X[svr_poly.support_], y[svr_poly.support_], facecolor="none", - edgecolor="g", marker='s', label='poly support vectors', s=40) + edgecolor="g", marker='s', label='poly support vectors', s=50) plt.hold('on') plt.plot(X, y_rbf, color='m', lw=lw, label='RBF model') From 3505e4ca641d881bca0dff57d8f7d94d32de2d03 Mon Sep 17 00:00:00 2001 From: Rita Li Date: Sat, 29 Sep 2018 14:13:21 -0400 Subject: [PATCH 6/9] remove hold --- examples/svm/plot_svm_regression.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/svm/plot_svm_regression.py b/examples/svm/plot_svm_regression.py index fb3c127beae32..4308d4c638f3e 100644 --- a/examples/svm/plot_svm_regression.py +++ b/examples/svm/plot_svm_regression.py @@ -25,7 +25,7 @@ # Fit regression model svr_rbf = SVR(kernel='rbf', C=100, gamma=0.1, epsilon=.1) svr_lin = SVR(kernel='linear', C=100) -svr_poly = SVR(kernel='poly', C=100, degree=3, epsilon=.1, coef0=1) +svr_poly = SVR(kernel='poly', C=100, degree=3, epsilon=.1, coef0=0) y_rbf = svr_rbf.fit(X, y).predict(X) y_lin = svr_lin.fit(X, y).predict(X) y_poly = svr_poly.fit(X, y).predict(X) @@ -41,7 +41,6 @@ plt.scatter(X[svr_poly.support_], y[svr_poly.support_], facecolor="none", edgecolor="g", marker='s', label='poly support vectors', s=50) -plt.hold('on') plt.plot(X, y_rbf, color='m', lw=lw, label='RBF model') plt.plot(X, y_lin, color='c', lw=lw, label='Linear model') plt.plot(X, y_poly, color='g', lw=lw, label='Polynomial model') From dfe2f88a098142b36d8c982ce2b547f8a1dc10aa Mon Sep 17 00:00:00 2001 From: Rita Li Date: Sat, 29 Sep 2018 18:44:27 -0400 Subject: [PATCH 7/9] coef0 to 1 --- examples/svm/plot_svm_regression.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/svm/plot_svm_regression.py b/examples/svm/plot_svm_regression.py index 4308d4c638f3e..c783a00d5f9bc 100644 --- a/examples/svm/plot_svm_regression.py +++ b/examples/svm/plot_svm_regression.py @@ -25,7 +25,7 @@ # Fit regression model svr_rbf = SVR(kernel='rbf', C=100, gamma=0.1, epsilon=.1) svr_lin = SVR(kernel='linear', C=100) -svr_poly = SVR(kernel='poly', C=100, degree=3, epsilon=.1, coef0=0) +svr_poly = SVR(kernel='poly', C=100, degree=3, epsilon=.1, coef0=1) y_rbf = svr_rbf.fit(X, y).predict(X) y_lin = svr_lin.fit(X, y).predict(X) y_poly = svr_poly.fit(X, y).predict(X) From f93b7372eebf80a7e7d183714b6cc303f42d54f4 Mon Sep 17 00:00:00 2001 From: ml4713 Date: Fri, 23 Nov 2018 19:32:48 +0000 Subject: [PATCH 8/9] add other training data + fix fig size --- examples/svm/plot_svm_regression.py | 42 ++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/examples/svm/plot_svm_regression.py b/examples/svm/plot_svm_regression.py index c783a00d5f9bc..1ab6eb01dabae 100644 --- a/examples/svm/plot_svm_regression.py +++ b/examples/svm/plot_svm_regression.py @@ -33,19 +33,41 @@ # ############################################################################# # Look at the results lw = 2 +fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(15, 10), sharey=True) -plt.scatter(X[svr_rbf.support_], y[svr_rbf.support_], facecolor="none", +ax1.plot(X, y_rbf, color='m', lw=lw, label='RBF model') +ax1.scatter(X[svr_rbf.support_], y[svr_rbf.support_], facecolor="none", edgecolor="m", marker='8', label='rbf support vectors', s=50) -plt.scatter(X[svr_lin.support_], y[svr_lin.support_], facecolor="none", +ax1.scatter(X[np.setdiff1d(np.arange(len(X)), svr_rbf.support_)], + y[np.setdiff1d(np.arange(len(X)), svr_rbf.support_)], + facecolor="none", + edgecolor="k", marker='8', label='other training data', s=50) +ax1.legend(loc='upper center', bbox_to_anchor=(0.5, 1.1), + ncol=1, fancybox=True, shadow=True) + + +ax2.plot(X, y_lin, color='c', lw=lw, label='Linear model') +ax2.scatter(X[svr_lin.support_], y[svr_lin.support_], facecolor="none", edgecolor="c", marker='^', label='linear support vectors', s=50) -plt.scatter(X[svr_poly.support_], y[svr_poly.support_], facecolor="none", +ax2.scatter(X[np.setdiff1d(np.arange(len(X)), svr_lin.support_)], + y[np.setdiff1d(np.arange(len(X)), svr_lin.support_)], + facecolor="none", + edgecolor="k", marker='8', label='other training data', s=50) +ax2.legend(loc='upper center', bbox_to_anchor=(0.5, 1.1), + ncol=1, fancybox=True, shadow=True) + + +ax3.plot(X, y_poly, color='g', lw=lw, label='Polynomial model') +ax3.scatter(X[svr_poly.support_], y[svr_poly.support_], facecolor="none", edgecolor="g", marker='s', label='poly support vectors', s=50) +ax3.scatter(X[np.setdiff1d(np.arange(len(X)), svr_poly.support_)], + y[np.setdiff1d(np.arange(len(X)), svr_poly.support_)], + facecolor="none", + edgecolor="k", marker='8', label='other training data', s=50) +ax3.legend(loc='upper center', bbox_to_anchor=(0.5, 1.1), + ncol=1, fancybox=True, shadow=True) -plt.plot(X, y_rbf, color='m', lw=lw, label='RBF model') -plt.plot(X, y_lin, color='c', lw=lw, label='Linear model') -plt.plot(X, y_poly, color='g', lw=lw, label='Polynomial model') -plt.xlabel('data') -plt.ylabel('target') -plt.title('Support Vector Regression') -plt.legend() +fig.text(0.5, 0.04, 'data', ha='center', va='center') +fig.text(0.06, 0.5, 'target', ha='center', va='center', rotation='vertical') +fig.suptitle("Support Vector Regression", fontsize=14) plt.show() From a9759495353e7ecb1c918ce6b484c9b65e1abd8f Mon Sep 17 00:00:00 2001 From: ml4713 Date: Mon, 26 Nov 2018 21:35:56 -0500 Subject: [PATCH 9/9] remove marker setting --- examples/svm/plot_svm_regression.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/svm/plot_svm_regression.py b/examples/svm/plot_svm_regression.py index 1ab6eb01dabae..73654e1ded93c 100644 --- a/examples/svm/plot_svm_regression.py +++ b/examples/svm/plot_svm_regression.py @@ -37,33 +37,33 @@ ax1.plot(X, y_rbf, color='m', lw=lw, label='RBF model') ax1.scatter(X[svr_rbf.support_], y[svr_rbf.support_], facecolor="none", - edgecolor="m", marker='8', label='rbf support vectors', s=50) + edgecolor="m", label='rbf support vectors', s=50) ax1.scatter(X[np.setdiff1d(np.arange(len(X)), svr_rbf.support_)], y[np.setdiff1d(np.arange(len(X)), svr_rbf.support_)], facecolor="none", - edgecolor="k", marker='8', label='other training data', s=50) + edgecolor="k", label='other training data', s=50) ax1.legend(loc='upper center', bbox_to_anchor=(0.5, 1.1), ncol=1, fancybox=True, shadow=True) ax2.plot(X, y_lin, color='c', lw=lw, label='Linear model') ax2.scatter(X[svr_lin.support_], y[svr_lin.support_], facecolor="none", - edgecolor="c", marker='^', label='linear support vectors', s=50) + edgecolor="c", label='linear support vectors', s=50) ax2.scatter(X[np.setdiff1d(np.arange(len(X)), svr_lin.support_)], y[np.setdiff1d(np.arange(len(X)), svr_lin.support_)], facecolor="none", - edgecolor="k", marker='8', label='other training data', s=50) + edgecolor="k", label='other training data', s=50) ax2.legend(loc='upper center', bbox_to_anchor=(0.5, 1.1), ncol=1, fancybox=True, shadow=True) ax3.plot(X, y_poly, color='g', lw=lw, label='Polynomial model') ax3.scatter(X[svr_poly.support_], y[svr_poly.support_], facecolor="none", - edgecolor="g", marker='s', label='poly support vectors', s=50) + edgecolor="g", label='poly support vectors', s=50) ax3.scatter(X[np.setdiff1d(np.arange(len(X)), svr_poly.support_)], y[np.setdiff1d(np.arange(len(X)), svr_poly.support_)], facecolor="none", - edgecolor="k", marker='8', label='other training data', s=50) + edgecolor="k", label='other training data', s=50) ax3.legend(loc='upper center', bbox_to_anchor=(0.5, 1.1), ncol=1, fancybox=True, shadow=True)