用 NumPy 与 Scikit-learn 实现线性回归:模拟数据、训练模型、评估与可视化全流程
以下是完整的代码及填空部分的解答: ```python # 数据生成 x = np.linspace(10, 100, 100) # 生成等距 x 值(100 个点) # 加点噪声,并转化为 DataFrame 数据类型 np.random.seed(30) # 如果希望产生的实验数据不变,可设置随机种子 r = np.random.normal(20, 10, 100) # 生成扰动项(均值 20,标准差 10) y_data = 5 * x + r # 填空1 构造带噪声的线性数据 df = pd.DataFrame({'x': x, 'y': y_data}) # 组装成 DataFrame # 数据划分 X_train, X_test, y_train, y_test = train_test_split( df['x'].values.reshape(-1, 1), df['y'], test_size=0.2, random_state=125 ) # 填空2: 0.2, 填空3: 125 # 使用训练数据拟合线性回归模型并进行预测 clf = LinearRegression() clf.fit(X_train, y_train) # 填空4: X_train, 填空5: y_train print("回归系数:", clf.coef_[0]) # 填空6: clf.coef_[0] print("截距:", clf.intercept_) # 填空7: clf.intercept_ y_pred = clf.predict(X_test) # 填空8: X_test # 评估模型效果 mse = mean_squared_error(y_test, y_pred) # 填空9: mean_squared_error print('评价线性回归:均方误差等于', mse) print("均方根误差", np.sqrt(mse)) print('R2值:', r2_score(y_test, y_pred)) # 填空10: r2_score # 画图观察模型的拟合效果 import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['fangsong'] plt.figure(figsize=(8, 6)) plt.scatter(df['x'], df['y'], label='真实数据', alpha=0.5) plt.plot(X_test, y_pred, color='red', label='预测回归线', linewidth=2) plt.xlabel('x') plt.ylabel('y') plt.title('线性回归拟合效果图') plt.legend() plt.grid(True) plt.show() ``` 额外需要注意的逻辑点: 1. 在生成噪声时,确保随机种子固定以保证实验结果的可重复性。 2. 模型评估时,MSE 和 RMSE 的值越小越好,而 R² 越接近 1 表示模型拟合效果越好。 3. 在绘制回归线时,确保测试集的 x 值按顺序排列,以便回归线平滑显示。 ######[AI写代码神器 | 651点数解答 | 2025-06-12 13:18:59]
- 轻松搞定!Numpy 1.26.4 版本成功安装(讯飞星火 | 25点数解答 | 2024-06-07 15:27:06)282
- 用 NumPy 与 Scikit-learn 实现线性回归:模拟数据、训练模型、评估与可视化全流程(阿里通义 | 651点数解答 | 2025-06-12 13:18:59)122
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)342
- Java代码实现从JSON数据中提取ID,涉及“数据”与“项目 - 知识库”结构(字节豆包 | 603点数解答 | 2025-04-15 22:48:51)234
- C++ 实现:计算一排鹅与最高、最矮鹅的身高差及代码详解(字节豆包 | 549点数解答 | 2025-11-16 20:19:06)79
- 编程揭秘:计算 𝑛! 在 𝑃 进制下末尾零个数的方法与代码实现(DeepSeek | 549点数解答 | 2026-01-11 17:49:54)46
- 工程师语境中的“回归”:分析、测试与退步含义全解析(百度文心 | 213点数解答 | 2023-11-09 18:23:11)228
- Matlab编程:血管机器人订购与生物学习,实现104周运营成本最低方案(字节豆包 | 3384点数解答 | 2025-06-22 13:25:13)181
- Python 处理 SWE 与降水数据:融雪量数据部分月份为空原因探究(字节豆包 | 78点数解答 | 2025-05-07 12:37:09)164
- 深度剖析:Linux 内核的六大 I/O 模型全解析(阿里通义 | 385点数解答 | 2023-11-09 14:49:22)252
- 工程师深度解析:评估的定义、范围及工程领域的重要性(百度文心 | 251点数解答 | 2023-11-09 18:24:16)217
- 工程师必知!Monkey 流程助力软件稳定性与可靠性提升(百度文心 | 388点数解答 | 2023-11-09 18:28:07)282