python機器學習庫scikit-learn:SVR的基本應用
scikit-learn是python的第三方機器學習庫,里面集成了大量機器學習的常用方法。例如:貝葉斯,svm,knn等。
scikit-learn的官網(wǎng) : http://scikit-learn.org/stable/index.html點擊打開鏈接
SVR是支持向量回歸(support vector regression)的英文縮寫,是支持向量機(SVM)的重要的應用分支。
scikit-learn中提供了基于libsvm的SVR解決方案。
PS:libsvm是臺灣大學林智仁教授等開發(fā)設計的一個簡單、易于使用和快速有效的SVM模式識別與回歸的軟件包。
我們自己隨機產(chǎn)生一些值,然后使用sin函數(shù)進行映射,使用SVR對數(shù)據(jù)進行擬合
from __future__ import division import time import numpy as np from sklearn.svm import SVR from sklearn.model_selection import GridSearchCV from sklearn.model_selection import learning_curve import matplotlib.pyplot as plt rng = np.random.RandomState(0) ############################################################################# # 生成隨機數(shù)據(jù) X = 5 * rng.rand(10000, 1) y = np.sin(X).ravel() # 在標簽中對每50個結果標簽添加噪聲 y[::50] += 2 * (0.5 - rng.rand(int(X.shape[0]/50))) X_plot = np.linspace(0, 5, 100000)[:, None] ############################################################################# # 訓練SVR模型 #訓練規(guī)模 train_size = 100 #初始化SVR svr = GridSearchCV(SVR(kernel='rbf', gamma=0.1), cv=5, param_grid={"C": [1e0, 1e1, 1e2, 1e3], "gamma": np.logspace(-2, 2, 5)}) #記錄訓練時間 t0 = time.time() #訓練 svr.fit(X[:train_size], y[:train_size]) svr_fit = time.time() - t0 t0 = time.time() #測試 y_svr = svr.predict(X_plot) svr_predict = time.time() - t0
然后我們對結果進行可視化處理
############################################################################# # 對結果進行顯示 plt.scatter(X[:100], y[:100], c='k', label='data', zorder=1) plt.hold('on') plt.plot(X_plot, y_svr, c='r', label='SVR (fit: %.3fs, predict: %.3fs)' % (svr_fit, svr_predict)) plt.xlabel('data') plt.ylabel('target') plt.title('SVR versus Kernel Ridge') plt.legend() plt.figure()
############################################################################## # 對訓練和測試的過程耗時進行可視化 X = 5 * rng.rand(1000000, 1) y = np.sin(X).ravel() y[::50] += 2 * (0.5 - rng.rand(int(X.shape[0]/50))) sizes = np.logspace(1, 4, 7) for name, estimator in { "SVR": SVR(kernel='rbf', C=1e1, gamma=10)}.items(): train_time = [] test_time = [] for train_test_size in sizes: t0 = time.time() estimator.fit(X[:int(train_test_size)], y[:int(train_test_size)]) train_time.append(time.time() - t0) t0 = time.time() estimator.predict(X_plot[:1000]) test_time.append(time.time() - t0) plt.plot(sizes, train_time, 'o-', color="b" if name == "SVR" else "g", label="%s (train)" % name) plt.plot(sizes, test_time, 'o--', color="r" if name == "SVR" else "g", label="%s (test)" % name) plt.xscale("log") plt.yscale("log") plt.xlabel("Train size") plt.ylabel("Time (seconds)") plt.title('Execution Time') plt.legend(loc="best")
################################################################################ # 對學習過程進行可視化 plt.figure() svr = SVR(kernel='rbf', C=1e1, gamma=0.1) train_sizes, train_scores_svr, test_scores_svr = \ learning_curve(svr, X[:100], y[:100], train_sizes=np.linspace(0.1, 1, 10), scoring="neg_mean_squared_error", cv=10) plt.plot(train_sizes, -test_scores_svr.mean(1), 'o-', color="r", label="SVR") plt.xlabel("Train size") plt.ylabel("Mean Squared Error") plt.title('Learning curves') plt.legend(loc="best") plt.show()
看見了熟悉的LOSS下降圖,我仿佛又回到了學生時代。。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
詳解在Python中使用Torchmoji將文本轉(zhuǎn)換為表情符號
這篇文章主要介紹了詳解在Python中使用Torchmoji將文本轉(zhuǎn)換為表情符號,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07使用卷積神經(jīng)網(wǎng)絡(CNN)做人臉識別的示例代碼
這篇文章主要介紹了使用卷積神經(jīng)網(wǎng)絡(CNN)做人臉識別的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03使用apidoc管理RESTful風格Flask項目接口文檔方法
下面小編就為大家分享一篇使用apidoc管理RESTful風格Flask項目接口文檔方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02