预测数值型数据:回归

本文介绍了回归分析用于预测数值型数据,包括标准线性回归及其求解方法,以及局部加权线性回归(LWLR)以减轻欠拟合。LWLR通过权重矩阵赋予附近点更高权重,防止过拟合。此外,讨论了在特征数超过样本数时的缩减方法,如岭回归和前向逐步回归,它们能帮助理解数据并提高预测性能。
摘要由CSDN通过智能技术生成

分类的目标变量是标称型数据,而这里将会对连续型的数据作出预测。

1.1 用线性回归找到最佳拟合直线
回归的目的是预测数值型的目标值。最直接的办法是依据输入写出一个目标值的计算公式。这个公式就是所谓的回归方程,求公式里的回归系数就是回归。一旦有了这些回归系数,再给定输入,做预测就非常容易了。具体的做法是用回归系数乘以输入值,再将结果全部加在一起,就得到了预测值。
应当怎样从一堆数据里求出回归方程呢?假定输入数据存放在矩阵X中,而回归系数存放在向量w中。那么对于给定的数据x1,预测结果将会通过 Y1=xT1w 给出。现在的问题是,手里有一些X和对应的y,怎样才能找到w呢?一个常用的方法就是找出使误差最小的w。这里的误差是指预测y值和真实y值之间的差值,使用该误差的简单累加将使得正差值和负差值相互抵消,所以我们采用平方误差。平方误差可以写做: mi=1(yixTiw)2 。用矩阵表示还可以写做 (yXw)T(yXw) 。如果对w求导,得到x^T(Y-Xw),令其等于零,解出w如下:

在Python中,我们可以使用matplotlib库绘制图形,pandas处理数据,numpy进行数学运算,以及自定义线性回归来进行预测。这里是一个简单的例子,假设你有一个名为`abalone_data.csv`的数据集,其中包含鲍鱼年龄以及其他可能影响年龄的因素。 首先,你需要导入所需的库并加载数据: ```python import pandas as pd import matplotlib.pyplot as plt import numpy as np # 加载数据 data = pd.read_csv('abalone_data.csv') ``` 然后,你可以选择一些特征作为输入X,比如壳长、壳高和重量等,年龄作为输出Y: ```python X = data[['length', 'diameter', 'weight']] # 假设长度、直径和重量是特征 y = data['rings'] # 假设rings列是目标变量,即年龄 ``` 接着,创建一个简单的线性回归: ```python class LinearRegression: def __init__(self, learning_rate=0.01, n_iterations=1000): self.learning_rate = learning_rate self.n_iterations = n_iterations self.weights = np.zeros(X.shape[1]) self.bias = 0 def predict(self, X): return np.dot(X, self.weights) + self.bias def fit(self, X, y): for _ in range(self.n_iterations): y_pred = self.predict(X) dw = (1 / len(y)) * np.dot(X.T, (y - y_pred)) db = (1 / len(y)) * np.sum(y - y_pred) self.weights -= self.learning_rate * dw self.bias -= self.learning_rate * db ``` 训练模并进行预测: ```python model = LinearRegression() model.fit(X, y) predictions = model.predict(X) ``` 为了可视化结果,你可以画出实际年龄和预测年龄之间的散点图: ```python plt.scatter(y, predictions) plt.xlabel('Actual Rings') plt.ylabel('Predicted Rings') plt.title('Age Prediction using Simple Linear Regression') plt.show() ``` 分析部分,你可以通过观察散点图和回归线的倾斜程度判断模的效果。如果大部分点接近直线,说明模拟合较好;若偏离较大,可能存在过拟合或欠拟合问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值