1、获取数据并划分数据集 2、数据标准化/归一化处理 3、LinearRegression_numpy类实例化 #训练模型,调用类中的train_BGD方法 # 4、使用测试集进行测试,模型评价 # 将模型训练得到的系数w与测试数据test_data计算得到预测值。 # 计算测试集的MSE 5、画出损失函数的变化趋势,画出预测值与真实值曲线
时间: 2023-06-20 22:08:25 浏览: 74
这是一个线性回归模型的基本流程,下面我会逐一解释每个步骤的含义和操作。
1. 获取数据并划分数据集:
首先需要获取数据,可以从文件或数据库中读取。接着需要将数据集划分为训练集和测试集,一般情况下训练集占总数据集的70%~80%,测试集占20%~30%。
2. 数据标准化/归一化处理:
对数据进行标准化/归一化处理的目的是将数据转换为均值为0,方差为1或者数据范围在0到1之间的形式,这样可以提高模型的收敛速度和精度。
3. LinearRegression_numpy类实例化:
使用LinearRegression_numpy类实例化,然后调用类中的train_BGD方法进行模型训练。train_BGD方法采用批量梯度下降法进行参数更新,直到损失函数的值收敛或达到最大迭代次数为止。
4. 使用测试集进行测试,模型评价:
将模型训练得到的系数w与测试数据test_data计算得到预测值,然后计算测试集的MSE(均方误差)作为模型评价指标,以判断模型的拟合效果。
5. 画出损失函数的变化趋势,画出预测值与真实值曲线:
通过损失函数的变化趋势曲线可以判断模型的收敛情况,若损失函数逐渐下降并趋于平缓,则证明模型已经收敛。预测值与真实值曲线可以用来直观地观察模型的预测效果,若两条曲线重合,则证明模型预测效果较好。
相关问题
按以下方法编写梯度下降法预测波士顿房价1、获取数据并划分数据集 2、数据标准化/归一化处理 3、LinearRegression_numpy类实例化 #训练模型,调用类中的train_BGD方法 # 4、使用测试集进行测试,模型评价 # 将模型训练得到的系数w与测试数据test_data计算得到预测值。 # 计算测试集的MSE 5、画出损失函数的变化趋势,画出预测值与真实值曲线
以下是Python代码实现:
```
# 导入需要的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 1、获取数据并划分数据集
data = pd.read_csv('boston_housing.csv')
train_data = data.sample(frac=0.8, random_state=0)
test_data = data.drop(train_data.index)
train_X = train_data.iloc[:, :-1]
train_y = train_data.iloc[:, -1]
test_X = test_data.iloc[:, :-1]
test_y = test_data.iloc[:, -1]
# 2、数据标准化/归一化处理
mean = train_X.mean()
std = train_X.std()
train_X = (train_X - mean) / std
test_X = (test_X - mean) / std
# 3、LinearRegression_numpy类实例化
class LinearRegression_numpy:
def __init__(self, lr=0.01, epochs=1000):
self.lr = lr
self.epochs = epochs
def train_BGD(self, X, y):
m, n = X.shape
self.w = np.zeros(n)
self.b = 0
self.losses = []
for epoch in range(self.epochs):
y_pred = np.dot(X, self.w) + self.b
loss = np.sum((y_pred - y) ** 2) / (2 * m)
self.losses.append(loss)
dw = np.dot(X.T, (y_pred - y)) / m
db = np.sum(y_pred - y) / m
self.w -= self.lr * dw
self.b -= self.lr * db
def predict(self, X):
return np.dot(X, self.w) + self.b
# 训练模型
model = LinearRegression_numpy(lr=0.1, epochs=1000)
model.train_BGD(train_X.values, train_y.values)
# 4、使用测试集进行测试,模型评价
pred_y = model.predict(test_X.values)
mse = np.mean((pred_y - test_y.values) ** 2)
print('MSE: ', mse)
# 5、画出损失函数的变化趋势,画出预测值与真实值曲线
plt.plot(model.losses)
plt.xlabel('Epoch')
plt.ylabel('Loss')
plt.show()
plt.scatter(test_y.values, pred_y)
plt.xlabel('True Values')
plt.ylabel('Predictions')
plt.axis('equal')
plt.axis('square')
plt.xlim([0,plt.xlim()[1]])
plt.ylim([0,plt.ylim()[1]])
_ = plt.plot([0, 50], [0, 50])
plt.show()
```
这段代码将会将数据读入,划分为训练集和测试集,并进行标准化处理。
接着使用 LinearRegression_numpy 类实例化并使用批量梯度下降法训练模型,并计算测试集的均方误差。
最后,画出损失函数的变化趋势和预测值与真实值的曲线。
python 归一化_数据预处理——标准化/归一化(实例)
好的,下面是我对你的回答:
在机器学习中,数据预处理是非常重要的一步。其中,标准化和归一化是两种常见的数据预处理方法。接下来我会给你介绍一下归一化的实例。
归一化是将数据按比例缩放,使其落入一个小的特定区间内。归一化可以使得不同量纲的特征处于同一量级,避免了由于特征值过大而对模型产生的影响。
下面是一个简单的例子,假设有一个数据集,其中包含了两个特征,分别是身高和体重。我们希望对这两个特征进行归一化处理。
```python
import numpy as np
# 创建一个示例数据集
data = np.array([[170, 60], [180, 70], [160, 50], [155, 45]])
# 计算每个特征的最大值和最小值
maxs = np.max(data, axis=0)
mins = np.min(data, axis=0)
# 对数据进行归一化处理
normalized_data = (data - mins) / (maxs - mins)
print(normalized_data)
```
输出结果为:
```python
array([[0.66666667, 0.66666667],
[1. , 1. ],
[0. , 0. ],
[0. , 0. ]])
```
可以看到,经过归一化处理后,所有特征都被缩放到了0到1的范围内。
当然,这只是一个简单的例子。在实际应用中,我们可能需要对多个特征进行归一化处理,并且需要考虑特征的分布情况等因素。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)