回歸是一種統計學習方法,用於預測數值型的數據,如房價、銷量等。回歸算法首先通過數據分析建立一個擬合函數,然後將未知樣本帶入該函數計算得到預測結果。
一、線性回歸
線性回歸是回歸分析中最簡單和最流行的方法,基本思想是通過一條直線來擬合數據點的趨勢。例如,我們需要預測房價,我們可以通過分析房屋的面積、位置、年代等因素來建立一個擬合函數,用於預測未知的房價。
1、最小二乘法
import numpy as np
from sklearn.linear_model import LinearRegression
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
y = np.dot(X, np.array([3, 4])) + 5
reg = LinearRegression().fit(X, y)
reg.score(X, y)
reg.coef_
reg.intercept_
2、嶺回歸
from sklearn import linear_model
reg = linear_model.Ridge(alpha=.5)
reg.fit([[0, 0], [0, 0], [1, 1], [1, 1]], [0, .1, 1, 1])
reg.coef_
reg.intercept_
3、Lasso回歸
from sklearn import linear_model
reg = linear_model.Lasso(alpha=0.1)
reg.fit([[0, 0], [1, 1]], [0, 1])
reg.predict([[1, 1]])
二、多項式回歸
多項式回歸是在線性回歸的基礎上,通過加入高次項來擬合非線性數據。例如,我們需要預測某家餐館的人流量,我們可以通過分析餐館的位置、周邊環境、天氣等因素來建立一個擬合函數,用於預測未來的人流量。
1、多項式特徵處理
from sklearn.preprocessing import PolynomialFeatures
X = np.arange(6).reshape(3, 2)
X_poly = PolynomialFeatures(degree=2, include_bias=False).fit_transform(X)
X
X_poly
2、多項式回歸
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
# 生成樣本數據
x = np.linspace(0, 2, 100)
y = 1 + 2*x + np.random.randn(100)*0.5
# 多項式回歸
poly_features = PolynomialFeatures(degree=2, include_bias=False)
X_poly = poly_features.fit_transform(x.reshape(-1, 1))
poly_reg = LinearRegression().fit(X_poly, y)
# 可視化結果
plt.scatter(x, y)
plt.plot(x, poly_reg.predict(X_poly), color='r')
plt.show()
三、決策樹回歸
決策樹回歸是一種通過樹狀結構來預測數值型數據的方法。例如,我們需要預測電影票房,我們可以通過分析電影的導演、演員、類型、上映時間等因素來建立一個決策樹,用於預測未來電影的票房。
1、構建決策樹
from sklearn.tree import DecisionTreeRegressor
X = [[0, 0], [2, 2]]
y = [0.5, 2.5]
regressor = DecisionTreeRegressor(max_depth=2)
regressor.fit(X, y)
2、可視化決策樹
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, export_graphviz
from sklearn import tree
import graphviz
iris = load_iris()
clf = tree.DecisionTreeClassifier()
clf = clf.fit(iris.data, iris.target)
dot_data = tree.export_graphviz(clf, out_file=None)
graph = graphviz.Source(dot_data)
graph
四、支持向量機回歸
支持向量機回歸是一種通過構建超平面來預測數值型數據的方法。例如,我們需要預測某公司的利潤,我們可以通過分析公司的歷史數據、行業數據等因素來建立一個超平面,用於預測未來的利潤。
1、線性支持向量機回歸
from sklearn.svm import SVR
X = [[0, 0], [2, 2]]
y = [0.5, 2.5]
regressor = SVR(kernel='linear', C=1.0, epsilon=0.2)
regressor.fit(X, y)
2、非線性支持向量機回歸
from sklearn.svm import SVR
import numpy as np
import matplotlib.pyplot as plt
# 創建樣本數據
X = np.sort(5 * np.random.rand(80, 1), axis=0)
y = np.sin(X).ravel()
# 添加噪聲
y[::5] += 3 * (0.5 - np.random.rand(16))
# 訓練非線性SVR
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)
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)
# 可視化結果
plt.scatter(X, y, color='black', label='data')
plt.plot(X, y_rbf, color='red', label='RBF model')
plt.plot(X, y_lin, color='green', label='Linear model')
plt.plot(X, y_poly, color='blue', label='Polynomial model')
plt.xlabel('data')
plt.ylabel('target')
plt.title('Support Vector Regression')
plt.legend()
plt.show()
原創文章,作者:UXSZL,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/332360.html