带Python监督学习的AI:回归
本文介绍了回归分析在机器学习和统计中的应用,重点讲解了如何使用Python实现单变量和多变量线性回归。文章首先阐述了回归分析的基本概念和作用,然后详细演示了通过sklearn库构建回归模型的步骤:包括数据加载、训练集/测试集划分、模型训练和评估。文中提供了完整的代码示例,展示了如何计算均方误差、R2分数等评估指标,并介绍了多项式回归的实现方法。最后,文章指出可以通过sklearn.dataset导
回归是最重要的统计和机器学习工具之一。我们可以说机器学习的旅程始于回归,这并不错误。它可以被定义为一种参数化技术,使我们能够基于数据做出决策,换句话说,通过学习输入与输出变量之间的关系,让我们能够基于数据做出预测。这里,依赖输入变量的输出变量是连续值的实数。在回归中,输入和输出变量之间的关系很重要,这有助于我们理解输出变量值随输入变量变化的变化。回归常用于价格、经济学、变异等预测。
在 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
更多推荐




所有评论(0)