酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

A. 实验内容:用 NumPy 生成一组线性数据加点噪声训练线性回归模型画图观察模型的拟合效果。 任务: (1) 模拟线性数据(带噪声):y = 5x + 噪声(均值20, 标准差10),构成比较真实的线性关系数据。 (2) 数据划分:使用 train_test_split 划分训练集和测试集。 (3) 模型训练与预测:通过 LinearRegression() 拟合模型并进行预测。 (4) 模型评估:使用均方误差(MSE)、均方根误差(RMSE)、R²决定系数来评价模型。 (5)结果可视化:使用散点图和预测回归线展示模型效果。 B. 实验步骤: (1)导入scikit-learn库,并使用 NumPy 生成x自变量数据 from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error,r2_score import numpy as np

以下是完整的代码及填空部分的解答: ```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 值按顺序排列,以便回归线平滑显示。 [2025-06-12 13:18:59 | AI写代码神器 | 651点数解答]

相关提问