Week1 Python学习之线性回归

#本文中所使用的数据集参考吴恩达的course课程题目,数据集下载地址:链接:百度网盘 请输入提取码 密码:mwcl

1 加载数据集并可视化

使用numpy科学计算库加载数据集中数据,并通过matplotlib库下plot函数进行绘制散点图。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

data = np.loadtxt('D:\ZacLing\mat\Study\ex1data1.txt',delimiter = ',')
x = data[:,0]
y = data[:,1]
plt.figure()
plt.plot(x,y,'k.')
plt.show()

2 sklearn版本

线性式(假设函数):

### 使用Python进行销售额预测的线性回归实现 #### 数据准备与预处理 为了构建有效的线性回归模型,首先需要准备好用于训练的数据集。这包括读取数据、探索数据分析以及必要的预处理工作。 对于给定的任务,假设已经拥有了一个包含每周销售数量在内的CSV文件作为数据源。在实际操作前,应当先加载并查看部分数据以了解其结构: ```python import pandas as pd df = pd.read_csv('sales_data.csv') print(df.head()) ``` 接着按照如下方式完成数据可视化和标准化等前期准备工作[^2]: ```python import seaborn as sns import matplotlib.pyplot as plt from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split fig = plt.figure(figsize=(10, 4)) for w in [0, 1, 2, 3]: w_data = df[df['week'] == w]['num_sold'] sns.kdeplot(w_data, label=w) plt.legend() plt.show() def split_data(df): X = df.iloc[:, :-1].values y = df.iloc[:, -1].values.reshape(-1, 1) scaler = StandardScaler().fit(X) X = scaler.transform(X) X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, random_state=0) return X_train, X_test, y_train, y_test X_train, X_test, y_train, y_test = split_data(df) ``` 上述代码片段实现了对原始数据按周次展示销量密度图,并完成了特征缩放及划分测试集与训练集的工作。 #### 构建线性回归模型 基于已有的`X_train`, `y_train` 训练样本集合,现在可以创建简单的线性回归器来进行拟合: ```python from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit(X_train, y_train) # 输出模型参数 print(f'Intercept: {model.intercept_}') print(f'Slope coefficients: {model.coef_}') ``` 这里定义了一个标准的线性回归对象并通过调用`.fit()`方法让算法自动寻找最佳权重向量使得均方误差最小化。 #### 预测新数据的结果 一旦模型被成功训练出来之后就可以利用它来做未来一段时间内的销售趋势预测了。具体做法是对未知的新输入执行变换后再传入之前建立好的估计函数得到相应的输出值。 ```python predictions = model.predict(X_test) # 将预测结果反标准化以便直观理解数值意义 scaler_y = StandardScaler().fit(y_train) predicted_sales = scaler_y.inverse_transform(predictions).flatten() actual_sales = scaler_y.inverse_transform(y_test).flatten() comparison_df = pd.DataFrame({ 'Actual Sales': actual_sales, 'Predicted Sales': predicted_sales}) print(comparison_df.head()) # 可视化比较真实值 vs 预测量 plt.scatter(actual_sales, predicted_sales) plt.xlabel('True Values ') plt.ylabel('Predictions ') plt.title('Sales Prediction Performance') plt.plot([min(actual_sales), max(actual_sales)], [ min(predicted_sales), max(predicted_sales)], color='red') plt.show() ``` 这段脚本不仅展示了如何应用训练后的模型去推测未来的销售情况,还提供了将这些预测转化为更易于解释的形式的方法;同时通过散点图形式对比了理论上的理想直线同实际情况之间的差距程度。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值