python機(jī)器學(xué)習(xí)庫(kù)scikit-learn:SVR的基本應(yīng)用
scikit-learn是python的第三方機(jī)器學(xué)習(xí)庫(kù),里面集成了大量機(jī)器學(xué)習(xí)的常用方法。例如:貝葉斯,svm,knn等。
scikit-learn的官網(wǎng) : http://scikit-learn.org/stable/index.html點(diǎn)擊打開(kāi)鏈接
SVR是支持向量回歸(support vector regression)的英文縮寫(xiě),是支持向量機(jī)(SVM)的重要的應(yīng)用分支。
scikit-learn中提供了基于libsvm的SVR解決方案。
PS:libsvm是臺(tái)灣大學(xué)林智仁教授等開(kāi)發(fā)設(shè)計(jì)的一個(gè)簡(jiǎn)單、易于使用和快速有效的SVM模式識(shí)別與回歸的軟件包。
我們自己隨機(jī)產(chǎn)生一些值,然后使用sin函數(shù)進(jìn)行映射,使用SVR對(duì)數(shù)據(jù)進(jìn)行擬合
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) ############################################################################# # 生成隨機(jī)數(shù)據(jù) X = 5 * rng.rand(10000, 1) y = np.sin(X).ravel() # 在標(biāo)簽中對(duì)每50個(gè)結(jié)果標(biāo)簽添加噪聲 y[::50] += 2 * (0.5 - rng.rand(int(X.shape[0]/50))) X_plot = np.linspace(0, 5, 100000)[:, None] ############################################################################# # 訓(xùn)練SVR模型 #訓(xùn)練規(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)}) #記錄訓(xùn)練時(shí)間 t0 = time.time() #訓(xùn)練 svr.fit(X[:train_size], y[:train_size]) svr_fit = time.time() - t0 t0 = time.time() #測(cè)試 y_svr = svr.predict(X_plot) svr_predict = time.time() - t0
然后我們對(duì)結(jié)果進(jìn)行可視化處理
############################################################################# # 對(duì)結(jié)果進(jìn)行顯示 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()
############################################################################## # 對(duì)訓(xùn)練和測(cè)試的過(guò)程耗時(shí)進(jìn)行可視化 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")
################################################################################ # 對(duì)學(xué)習(xí)過(guò)程進(jìn)行可視化 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()
看見(jiàn)了熟悉的LOSS下降圖,我仿佛又回到了學(xué)生時(shí)代。。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
PyQt5實(shí)現(xiàn)暗黑風(fēng)格的計(jì)時(shí)器
這篇文章主要為大家詳細(xì)介紹了PyQt5實(shí)現(xiàn)暗黑風(fēng)格的計(jì)時(shí)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07詳解在Python中使用Torchmoji將文本轉(zhuǎn)換為表情符號(hào)
這篇文章主要介紹了詳解在Python中使用Torchmoji將文本轉(zhuǎn)換為表情符號(hào),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)做人臉識(shí)別的示例代碼
這篇文章主要介紹了使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)做人臉識(shí)別的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03使用apidoc管理RESTful風(fēng)格Flask項(xiàng)目接口文檔方法
下面小編就為大家分享一篇使用apidoc管理RESTful風(fēng)格Flask項(xiàng)目接口文檔方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02