- Python AI 教程
- 首頁
- Python AI – 基礎概念
- Python AI – 入門
- Python AI – 機器學習
- Python AI – 資料準備
- 監督學習:分類
- 監督學習:迴歸
- Python AI – 邏輯程式設計
- 無監督學習:聚類
- 自然語言處理
- Python AI – NLTK 包
- 分析時間序列資料
- Python AI – 語音識別
- Python AI – 啟發式搜尋
- Python AI – 遊戲
- Python AI – 神經網路
- 強化學習
- Python AI – 遺傳演算法
- Python AI – 計算機視覺
- Python AI – 深度學習
- Python AI 資源
- Python AI – 快速指南
- Python AI – 有用資源
- Python AI – 討論
Python AI – 監督學習:迴歸
迴歸是統計學和機器學習中最重要的工具之一。毫不誇張地說,機器學習的旅程是從迴歸開始的。它可以定義為一種引數化技術,允許我們根據資料做出決策,或者換句話說,透過學習輸入和輸出變數之間的關係來根據資料進行預測。在這裡,輸出變數(依賴於輸入變數)是連續值的實數。在迴歸中,輸入和輸出變數之間的關係很重要,它有助於我們理解輸出變數的值如何隨著輸入變數的變化而變化。迴歸經常用於預測價格、經濟、變化等。
在 Python 中構建迴歸模型
在本節中,我們將學習如何構建單變數和多變量回歸模型。
線性迴歸/單變量回歸
讓我們匯入一些必要的包:
import numpy as np from sklearn import linear_model import sklearn.metrics as sm import matplotlib.pyplot as plt
現在,我們需要提供輸入資料,並將資料儲存在名為 linear.txt 的檔案中。
input = 'D:/ProgramData/linear.txt'
我們需要使用 **np.loadtxt** 函式載入這些資料。
input_data = np.loadtxt(input, delimiter=',') X, y = input_data[:, :-1], input_data[:, -1]
下一步是訓練模型。讓我們給出訓練和測試樣本。
training_samples = int(0.6 * len(X)) testing_samples = len(X) - num_training X_train, y_train = X[:training_samples], y[:training_samples] X_test, y_test = X[training_samples:], y[training_samples:]
現在,我們需要建立一個線性迴歸物件。
reg_linear = linear_model.LinearRegression()
使用訓練樣本訓練該物件。
reg_linear.fit(X_train, y_train)
我們需要使用測試資料進行預測。
y_test_pred = reg_linear.predict(X_test)
現在繪製並可視化資料。
plt.scatter(X_test, y_test, color = 'red') plt.plot(X_test, y_test_pred, color = 'black', linewidth = 2) plt.xticks(()) plt.yticks(()) plt.show()
輸出
現在,我們可以計算線性迴歸的效能如下:
print("Performance of Linear regressor:")
print("Mean absolute error =", round(sm.mean_absolute_error(y_test, y_test_pred), 2))
print("Mean squared error =", round(sm.mean_squared_error(y_test, y_test_pred), 2))
print("Median absolute error =", round(sm.median_absolute_error(y_test, y_test_pred), 2))
print("Explain variance score =", round(sm.explained_variance_score(y_test, y_test_pred),
2))
print("R2 score =", round(sm.r2_score(y_test, y_test_pred), 2))
輸出
線性迴歸的效能:
Mean absolute error = 1.78 Mean squared error = 3.89 Median absolute error = 2.01 Explain variance score = -0.09 R2 score = -0.09
在上面的程式碼中,我們使用了這個小資料集。如果你想要一些更大的資料集,那麼你可以使用 sklearn.dataset 匯入更大的資料集。
2,4.82.9,4.72.5,53.2,5.56,57.6,43.2,0.92.9,1.92.4, 3.50.5,3.41,40.9,5.91.2,2.583.2,5.65.1,1.54.5, 1.22.3,6.32.1,2.8
多變量回歸
首先,讓我們匯入一些必要的包:
import numpy as np from sklearn import linear_model import sklearn.metrics as sm import matplotlib.pyplot as plt from sklearn.preprocessing import PolynomialFeatures
現在,我們需要提供輸入資料,並將資料儲存在名為 linear.txt 的檔案中。
input = 'D:/ProgramData/Mul_linear.txt'
我們將使用 **np.loadtxt** 函式載入這些資料。
input_data = np.loadtxt(input, delimiter=',') X, y = input_data[:, :-1], input_data[:, -1]
下一步是訓練模型;我們將給出訓練和測試樣本。
training_samples = int(0.6 * len(X)) testing_samples = len(X) - num_training X_train, y_train = X[:training_samples], y[:training_samples] X_test, y_test = X[training_samples:], y[training_samples:]
現在,我們需要建立一個線性迴歸物件。
reg_linear_mul = linear_model.LinearRegression()
使用訓練樣本訓練該物件。
reg_linear_mul.fit(X_train, y_train)
現在,最後我們需要使用測試資料進行預測。
y_test_pred = reg_linear_mul.predict(X_test)
print("Performance of Linear regressor:")
print("Mean absolute error =", round(sm.mean_absolute_error(y_test, y_test_pred), 2))
print("Mean squared error =", round(sm.mean_squared_error(y_test, y_test_pred), 2))
print("Median absolute error =", round(sm.median_absolute_error(y_test, y_test_pred), 2))
print("Explain variance score =", round(sm.explained_variance_score(y_test, y_test_pred), 2))
print("R2 score =", round(sm.r2_score(y_test, y_test_pred), 2))
輸出
線性迴歸的效能:
Mean absolute error = 0.6 Mean squared error = 0.65 Median absolute error = 0.41 Explain variance score = 0.34 R2 score = 0.33
現在,我們將建立一個 10 次多項式並訓練迴歸模型。我們將提供樣本資料點。
polynomial = PolynomialFeatures(degree = 10)
X_train_transformed = polynomial.fit_transform(X_train)
datapoint = [[2.23, 1.35, 1.12]]
poly_datapoint = polynomial.fit_transform(datapoint)
poly_linear_model = linear_model.LinearRegression()
poly_linear_model.fit(X_train_transformed, y_train)
print("\nLinear regression:\n", reg_linear_mul.predict(datapoint))
print("\nPolynomial regression:\n", poly_linear_model.predict(poly_datapoint))
輸出
線性迴歸:
[2.40170462]
多項式迴歸:
[1.8697225]
在上面的程式碼中,我們使用了這個小資料集。如果你想要更大的資料集,那麼你可以使用 sklearn.dataset 匯入更大的資料集。
2,4.8,1.2,3.22.9,4.7,1.5,3.62.5,5,2.8,23.2,5.5,3.5,2.16,5, 2,3.27.6,4,1.2,3.23.2,0.9,2.3,1.42.9,1.9,2.3,1.22.4,3.5, 2.8,3.60.5,3.4,1.8,2.91,4,3,2.50.9,5.9,5.6,0.81.2,2.58, 3.45,1.233.2,5.6,2,3.25.1,1.5,1.2,1.34.5,1.2,4.1,2.32.3, 6.3,2.5,3.22.1,2.8,1.2,3.6