AI人工智能 在Python中構(gòu)建回歸器

2020-09-24 14:01 更新

回歸是最重要的統(tǒng)計(jì)和機(jī)器學(xué)習(xí)工具之一。 我們認(rèn)為機(jī)器學(xué)習(xí)的旅程從回歸開始并不是錯(cuò)的。 它可以被定義為使我們能夠根據(jù)數(shù)據(jù)做出決定的參數(shù)化技術(shù),或者換言之,允許通過學(xué)習(xí)輸入和輸出變量之間的關(guān)系來基于數(shù)據(jù)做出預(yù)測(cè)。 這里,依賴于輸入變量的輸出變量是連續(xù)值的實(shí)數(shù)。 在回歸中,輸入和輸出變量之間的關(guān)系很重要,它有助于我們理解輸出變量的值隨輸入變量的變化而變化。 回歸常用于預(yù)測(cè)價(jià)格,經(jīng)濟(jì),變化等。

在本節(jié)中,我們將學(xué)習(xí)如何構(gòu)建單一以及多變量回歸器。

線性回歸器/單變量回歸器

讓我們重點(diǎn)介紹一些必需的軟件包 -

  1. import numpy as np
  2. from sklearn import linear_model
  3. import sklearn.metrics as sm
  4. import matplotlib.pyplot as plt

現(xiàn)在,我們需要提供輸入數(shù)據(jù),并將數(shù)據(jù)保存在名為linear.txt的文件中。

  1. input = 'D:/ProgramData/linear.txt'

使用np.loadtxt函數(shù)加載這些數(shù)據(jù)。

  1. input_data = np.loadtxt(input, delimiter=',')
  2. X, y = input_data[:, :-1], input_data[:, -1]

下一步將是培訓(xùn)模型。下面給出培訓(xùn)和測(cè)試樣本。

  1. training_samples = int(0.6 * len(X))
  2. testing_samples = len(X) - num_training
  3. X_train, y_train = X[:training_samples], y[:training_samples]
  4. X_test, y_test = X[training_samples:], y[training_samples:]

現(xiàn)在,我們需要?jiǎng)?chuàng)建一個(gè)線性回歸器對(duì)象。

  1. reg_linear = linear_model.LinearRegression()

用訓(xùn)練樣本訓(xùn)練對(duì)象。

  1. reg_linear.fit(X_train, y_train)

下面使用測(cè)試數(shù)據(jù)做預(yù)測(cè)。

  1. y_test_pred = reg_linear.predict(X_test)

現(xiàn)在繪制并可視化數(shù)據(jù)。

  1. plt.scatter(X_test, y_test, color = 'red')
  2. plt.plot(X_test, y_test_pred, color = 'black', linewidth = 2)
  3. plt.xticks(())
  4. plt.yticks(())
  5. plt.show()

執(zhí)行上面示例代碼,輸出以下結(jié)果 -

img

現(xiàn)在,我們可以計(jì)算線性回歸的性能如下 -

  1. print("Performance of Linear regressor:")
  2. print("Mean absolute error =", round(sm.mean_absolute_error(y_test, y_test_pred), 2))
  3. print("Mean squared error =", round(sm.mean_squared_error(y_test, y_test_pred), 2))
  4. print("Median absolute error =", round(sm.median_absolute_error(y_test, y_test_pred), 2))
  5. print("Explain variance score =", round(sm.explained_variance_score(y_test, y_test_pred),
  6. 2))
  7. print("R2 score =", round(sm.r2_score(y_test, y_test_pred), 2))

線性回歸器的性能輸出結(jié)果如下 -

  1. Mean absolute error = 1.78
  2. Mean squared error = 3.89
  3. Median absolute error = 2.01
  4. Explain variance score = -0.09
  5. R2 score = -0.09

在上面的代碼中,我們使用了這些小數(shù)據(jù)源。 如果想要處理一些大的數(shù)據(jù)集,那么可以使用sklearn.dataset來導(dǎo)入更大的數(shù)據(jù)集。

  1. 2,4.82.9,4.72.5,53.2,5.56,57.6,43.2,0.92.9,1.92.4,
  2. 3.50.5,3.41,40.9,5.91.2,2.583.2,5.65.1,1.54.5,
  3. 1.22.3,6.32.1,2.8

多變量回歸 首先,讓我們導(dǎo)入一些必需的軟件包 -

  1. import numpy as np
  2. from sklearn import linear_model
  3. import sklearn.metrics as sm
  4. import matplotlib.pyplot as plt
  5. from sklearn.preprocessing import PolynomialFeatures

現(xiàn)在,需要提供輸入數(shù)據(jù),并將數(shù)據(jù)保存在名為linear.txt的文件中。

  1. input = 'D:/ProgramData/Mul_linear.txt'

我們將通過使用np.loadtxt函數(shù)加載這些數(shù)據(jù)。

  1. input_data = np.loadtxt(input, delimiter=',')
  2. X, y = input_data[:, :-1], input_data[:, -1]

下一步將是訓(xùn)練模型; 會(huì)提供訓(xùn)練和測(cè)試樣品數(shù)據(jù)。

  1. training_samples = int(0.6 * len(X))
  2. testing_samples = len(X) - num_training
  3. X_train, y_train = X[:training_samples], y[:training_samples]
  4. X_test, y_test = X[training_samples:], y[training_samples:]

現(xiàn)在,我們需要?jiǎng)?chuàng)建一個(gè)線性回歸器對(duì)象。

  1. reg_linear_mul = linear_model.LinearRegression()

用訓(xùn)練樣本訓(xùn)練對(duì)象。

  1. reg_linear_mul.fit(X_train, y_train)

現(xiàn)在,最后需要用測(cè)試數(shù)據(jù)做預(yù)測(cè)。

  1. y_test_pred = reg_linear_mul.predict(X_test)
  2. print("Performance of Linear regressor:")
  3. print("Mean absolute error =", round(sm.mean_absolute_error(y_test, y_test_pred), 2))
  4. print("Mean squared error =", round(sm.mean_squared_error(y_test, y_test_pred), 2))
  5. print("Median absolute error =", round(sm.median_absolute_error(y_test, y_test_pred), 2))
  6. print("Explain variance score =", round(sm.explained_variance_score(y_test, y_test_pred), 2))
  7. print("R2 score =", round(sm.r2_score(y_test, y_test_pred), 2))

線性回歸器的性能輸出結(jié)果如下 -

  1. Mean absolute error = 0.6
  2. Mean squared error = 0.65
  3. Median absolute error = 0.41
  4. Explain variance score = 0.34
  5. R2 score = 0.33

現(xiàn)在,我們將創(chuàng)建一個(gè)10階多項(xiàng)式并訓(xùn)練回歸器。并提供樣本數(shù)據(jù)點(diǎn)。

  1. polynomial = PolynomialFeatures(degree = 10)
  2. X_train_transformed = polynomial.fit_transform(X_train)
  3. datapoint = [[2.23, 1.35, 1.12]]
  4. poly_datapoint = polynomial.fit_transform(datapoint)
  5. poly_linear_model = linear_model.LinearRegression()
  6. poly_linear_model.fit(X_train_transformed, y_train)
  7. print("\nLinear regression:\n", reg_linear_mul.predict(datapoint))
  8. print("\nPolynomial regression:\n", poly_linear_model.predict(poly_datapoint))

線性回歸 -

  1. [2.40170462]

多項(xiàng)式回歸 -

  1. [1.8697225]

在上面的代碼中,我們使用了這些小數(shù)據(jù)。 如果想要一個(gè)大的數(shù)據(jù)集,那么可以使用sklearn.dataset來導(dǎo)入一個(gè)更大的數(shù)據(jù)集。

  1. 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. 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,
  3. 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,
  4. 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,
  5. 6.3,2.5,3.22.1,2.8,1.2,3.6
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)