手机网站开发一个多少钱,wordpress 界面 阴影,购物网站开发的意义和目的,淘宝运营计划目录 一、算法思想
二、代码实现 一、算法思想
线性回归模型的训练和预测#xff0c;并包含了数据预处理、损失函数计算、梯度下降优化等步骤。以下是算法的主要步骤#xff1a; 1. 数据加载与预处理(load_data函数):
从sklearn.datasets中加载波士顿房价数据集。将数据集…目录 一、算法思想
二、代码实现 一、算法思想
线性回归模型的训练和预测并包含了数据预处理、损失函数计算、梯度下降优化等步骤。以下是算法的主要步骤 1. 数据加载与预处理(load_data函数):
从sklearn.datasets中加载波士顿房价数据集。将数据集的特征和目标变量分别保存为特征矩阵X和目标向量y。
2. 数据标准化 (normalize函数):
对特征矩阵X进行标准化处理即减去每个特征的均值并除以标准差以使数据适合梯度下降算法。
3. 添加偏置值 (addBais函数):
在特征矩阵X中添加一列偏置值全为1的列这是因为线性回归模型包含一个偏置项截距项。
4. 计算方差损失函数(calculate_MES函数):
定义均方误差Mean Squared Error, MSE作为损失函数用于评估模型预测值与真实值之间的差异。
5. 训练过程(train函数):
使用梯度下降算法训练模型通过多次迭代更新模型的权重和偏置以最小化损失函数。在每次迭代中计算预测值y_pred然后根据预测值和真实值y计算损失。计算权重和偏置的梯度并使用学习率lr来更新权重和偏置。将每次迭代的损失保存到列表losses中以便后续可视化。
6. 预测(predict函数):
使用训练得到的权重和偏置来计算给定特征矩阵X的预测值y_pred。
7. 可视化预测结果(plot_predictions函数):
将模型的预测结果与真实值进行比较并通过散点图展示。绘制最佳拟合线展示模型的预测趋势。
8. 可视化训练过程(plot_training_process函数):
将训练过程中的损失函数值绘制成折线图以观察模型在训练过程中的表现和收敛情况。 在代码的最后通过调用这些函数来执行整个流程加载数据、数据标准化、添加偏置值、训练模型、预测、以及可视化训练过程和预测结果。 二、代码实现
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns# 导入波士顿房价数据集
from sklearn.datasets import load_boston
import warningswarnings.filterwarnings(ignore, categoryFutureWarning, modulesklearn)
warnings.filterwarnings(ignore, categoryUserWarning)# 数据加载以及预处理
def load_data()::return: X 为特征矩阵y真实价格的向量boston load_boston()# 加载房子的特征df feature_names为特征名字df pd.DataFrame(databoston.data, columnsboston.feature_names)# 添加价格数据df[price] boston.target# 构建特征矩阵XX df.drop(price, axis1).values# 真实价格y 向量y df[price].valuesreturn X, y# 数据标准化
def normalize(X):# 计算每个特征的平均值mean np.mean(X, axis0)# 计算标准差std np.std(X, axis0)normalize_X (X - mean) / stdreturn normalize_X# 添加偏执值
def addBais(X):# 构建偏执值向量 X.shape[0]为样本数量b np.ones((X.shape[0], 1))X_with_bais np.concatenate((b, X), axis1) # 将偏置项添加到第一列return X_with_bais# 计算方差损失函数
def calculate_MES(y_pred, y):MSE np.mean(((y - y_pred) ** 2))return MSE# 训练过程
def train(X, y, lr0.01, num_iterations1000):# 样本数量 和 特征数量 1num_examples, num_features X.shape# 权重向量包括偏置项weights np.zeros(num_features)bias 0# 损失函数的列表losses []for i in range(num_iterations):# 预测值y_pred np.dot(X, weights) bias# 计算权重梯度dw 2 / num_examples * np.dot(X.T, y_pred - y)# 计算偏置梯度db 2 / num_examples * np.sum(y_pred - y)# 梯度下降weights - lr * dwbias - lr * db# 计算损失loss calculate_MES(y_pred, y)losses.append(loss)return weights, bias, lossesdef predict(X, weights, bias):y_pred np.dot(X, weights) biasreturn y_pred# 可视化预测结果
def plot_predictions(y_true, y_pred, weights, bias):df pd.DataFrame({True: y_true, Predicted: y_pred})sns.scatterplot(datadf, xTrue, yPredicted)# 绘制拟合直线x_line np.linspace(min(y_true), max(y_true), num100)y_line weights[1] * x_line biasplt.plot(x_line, y_line, colorr, labelFitted Line)plt.xlabel(真实价格)plt.ylabel(预测价格)plt.title(True vs Predicted Prices with Fitted Line)plt.legend()plt.show()# 可视化训练过程
def plot_training_process(losses):plt.plot(losses)plt.xlabel(Iteration)plt.ylabel(Mean Squared Error)plt.title(Training Process)plt.show()if __name__ __main__:# 加载数据X, y load_data()# 数据变准化normalize_X normalize(X)# 添加偏执值X_with_bias addBais(normalize_X)weights, bias, losses train(X_with_bias, y)# 可视化训练过程plot_training_process(losses)# 预测y_pred predict(X_with_bias, weights, bias)# 可视化结果plot_predictions(y, y_pred, weights[1:], bias)