回歸是最重要的統計和機器學習工具之一。如果說機器學習的旅程是從回歸開始的,那就沒有錯。它可以定義爲參數技術,允許我們根據數據做出決策,或者換句話說,允許我們通過學習輸入和輸出變量之間的關係,根據數據做出預測。這裡,依賴於輸入變量的輸出變量是連續值實數。在回歸中,輸入和輸出變量之間的關係很重要,它有助於我們理解輸出變量的值是如何隨著輸入變量的變化而變化的。回歸通常用於預測價格、經濟、變化等。
Building Regressors in Python
在本節中,我們將學習如何構建單變量和多變量回歸器。
Linear Regressor/Single Variable Regressor
讓我們重點介紹幾個必需的包&負;
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()
Output
現在,我們可以計算線性回歸的性能如下所示;
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))
Output
線性回歸器的性能&負;
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
Multivariable Regressor
首先,讓我們進口一些必需的包裝;
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))
Output
線性回歸器的性能&負;
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))
Output
線性回歸&負;
[2.40170462]
多項式回歸&負;
[1.8697225]
在上面的代碼中,我們使用了這個小數據。如果需要大數據集,可以使用sklearn.dataset導入更大的數據集。