當前位置: 首頁>>技術教程>>正文


sklearn例程:保序回歸

保序回歸簡介

本示例是對保序回歸處理生成數據的說明。保序回歸發現函數的非遞減近似,同時使訓練數據的均方誤差最小。這種模型的好處是它不會為目標函數采用任何形式的假設,例如線性。為了比較,示例中還給出了線性回歸。

代碼實現[Python]


# -*- coding: utf-8 -*- 
print(__doc__)

# 碼農: Nelle Varoquaux 
#         Alexandre Gramfort 
# 協議: BSD

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection

from sklearn.linear_model import LinearRegression
from sklearn.isotonic import IsotonicRegression
from sklearn.utils import check_random_state

n = 100
x = np.arange(n)
rs = check_random_state(0)
y = rs.randint(-50, 50, size=(n,)) + 50. * np.log1p(np.arange(n))

# #############################################################################
# 擬合IsotonicRegression和LinearRegression models模型

ir = IsotonicRegression()

y_ = ir.fit_transform(x, y)

lr = LinearRegression()
lr.fit(x[:, np.newaxis], y)  # x needs to be 2d for LinearRegression

# #############################################################################
# 繪圖展示結果

segments = [[[i, y[i]], [i, y_[i]]] for i in range(n)]
lc = LineCollection(segments, zorder=0)
lc.set_array(np.ones(len(y)))
lc.set_linewidths(np.full(n, 0.5))

fig = plt.figure()
plt.plot(x, y, 'r.', markersize=12)
plt.plot(x, y_, 'b.-', markersize=12)
plt.plot(x, lr.predict(x[:, np.newaxis]), 'b-')
plt.gca().add_collection(lc)
plt.legend(('Data', 'Isotonic Fit', 'Linear Fit'), loc='lower right')
plt.title('Isotonic regression')
plt.show()

代碼執行

代碼運行時間大約:0分0.056秒。
運行代碼輸出的圖片內容如下:

Isotonic Regression

源碼下載

參考資料

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/4442.html,未經允許,請勿轉載。