python機器學習庫scikit-learn:SVR的基本應用
scikit-learn是python的第三方機器學習庫,裡面整合了大量機器學習的常用方法。例如:貝葉斯,svm,knn等。
scikit-learn的官網 : http://scikit-learn.org/stable/index.html點選開啟連結
SVR是支援向量迴歸(support vector regression)的英文縮寫,是支援向量機(SVM)的重要的應用分支。
scikit-learn中提供了基於libsvm的SVR解決方案。
PS:libsvm是臺灣大學林智仁教授等開發設計的一個簡單、易於使用和快速有效的SVM模式識別與迴歸的軟體包。
我們自己隨機產生一些值,然後使用sin函式進行對映,使用SVR對資料進行擬合
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)
#############################################################################
# 生成隨機資料
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模型
#訓練規模
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下降圖,我彷彿又回到了學生時代。。
相關文章
- Scikit-learn 機器學習庫介紹!【Python入門】機器學習Python
- 人工智慧-機器學習-Python-第三方庫-scikit-learn(用於特徵工程)人工智慧機器學習Python特徵工程
- 基於 Python 和 Scikit-Learn 的機器學習介紹Python機器學習
- 使用scikit-learn機器學習庫裡面的xgboost機器學習
- 【Numpy應用】--對於圖片處理的機器學習庫的應用機器學習
- 實用!7個強大的Python機器學習庫!⛵Python機器學習
- Python常用的機器學習庫Python機器學習
- 最好的Python機器學習庫Python機器學習
- Scikit-Learn 與 TensorFlow 機器學習實用指南學習筆記2 — 機器學習的主要挑戰機器學習筆記
- 如何將 Scikit-learn Python 庫用於資料科學專案Python資料科學
- Python機器學習庫Python機器學習
- 常用的Python機器學習庫合集,你用過幾個?Python機器學習
- 【機器學習】--Python機器學習庫之Numpy機器學習Python
- 《scikit-learn機器學習實戰》簡介機器學習
- Python機器學習庫,看看你用過幾個?Python機器學習
- 利用Scikit-learn機器學習庫的特徵分類進行vnpy期貨量化交易機器學習特徵
- Promise的基本應用Promise
- Git的基本應用Git
- Python語言下的機器學習庫Python機器學習
- Python機器學習會應用到哪些庫?Python入門學習Python機器學習
- Python機器學習常用庫,你用過哪幾個?Python機器學習
- Python中的numba的基本應用!讓你的Python快一萬倍!Python
- python+資料庫(三)用python對資料庫基本操作Python資料庫
- ubuntu上的基本應用Ubuntu
- 五個常用的機器學習python庫!機器學習Python
- python中的scikit-learn庫來實現SVM分類器。Python
- 利用Scikit-learn機器學習庫的特徵分類進行vnpy期貨量化交易(程式碼)機器學習特徵
- 入門系列之Scikit-learn在Python中構建機器學習分類器Python機器學習
- Facebook 的應用機器學習平臺機器學習
- Cookie基本應用Cookie
- Session基本應用Session
- jqery基本應用
- VB6基本資料庫應用(二):建立資料庫資料庫
- Scikit-Learn 與 TensorFlow 機器學習實用指南學習筆記1 — 機器學習基礎知識簡介機器學習筆記
- 一、Spring的基本應用Spring
- 智慧應用的基本要素
- Scikit-Learn機器學習實踐——垃圾簡訊識別機器學習
- Apache Hudi在Hopworks機器學習的應用Apache機器學習