《人工智能导论》实验1 基于线性回归的房价预测_第1页
《人工智能导论》实验1 基于线性回归的房价预测_第2页
《人工智能导论》实验1 基于线性回归的房价预测_第3页
《人工智能导论》实验1 基于线性回归的房价预测_第4页
《人工智能导论》实验1 基于线性回归的房价预测_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验1基于线性回归的房价预测一、实验目的及要求理解监督学习中回归任务的基本思想,掌握“数据准备→选择模型→定义损失函数→训练模型→评估与应用”的机器学习基本流程。掌握使用scikit-learn构建线性回归模型的方法,理解模型参数(权重、偏置)的含义及其对预测结果的影响。掌握训练集/测试集的划分方法,理解划分的目的在于客观评估模型在未见过数据上的泛化能力。掌握均方误差(MSE)、平均绝对误差(MAE)、决定系数(R²)等回归评估指标的计算方法与业务含义。能够对预测结果进行可视化分析,并能够结合线性回归的假设条件(线性关系、异常值敏感性等)判断模型的适用性与局限性。二、实验学时2学时(建议时间分配:讲解10分钟,任务实践80分钟,总结报告10分钟)三、实验前准备软件环境:Python3.8及以上,建议使用JupyterNotebook或VSCode。依赖库:NumPy、Pandas、Matplotlib、scikit-learn。安装命令如下:pipinstallnumpypandasmatplotlibscikit-learn知识储备:已学习教材第4.1、4.2、4.3.1、4.4.1节内容,了解回归与分类的区别。四、实验任务任务1环境准备与数据集加载(10分钟)实验采用模拟生成的房价数据集,不依赖网络下载。数据集包含面积、卧室数、距市中心距离、楼层、房龄5个数值型特征,以及房价(万元)1个连续型目标变量。任务2数据探索与划分(15分钟)使用Pandas观察样本量、特征名称与统计分布;按8:2划分为训练集与测试集。注意:划分必须在任何预处理之前完成,避免测试集信息泄漏。任务3特征标准化(10分钟)由于面积、房龄、楼层等特征量纲不同,使用StandardScaler对训练集进行标准化,并用训练集的均值和标准差转换测试集。任务4模型训练与预测(15分钟)使用LinearRegression训练模型;训练完成后,对测试集进行预测。记录模型学习到的特征权重与截距,并解释其业务含义。任务5模型评估(15分钟)计算MSE、MAE、R²三个指标,理解它们各自的侧重点:MSE惩罚大误差;MAE更鲁棒;R²越接近1表示模型拟合越好。任务6结果可视化(15分钟)绘制真实房价vs预测房价散点图,以及残差图,直观判断模型效果。参考代码以下为完整可运行代码。若图表中文显示为方框,请根据本地环境修改plt.rcParams中的字体名称:#实验二:基于线性回归的房价预测

importnumpyasnp

importpandasaspd

importmatplotlib.pyplotasplt

fromsklearn.model_selectionimporttrain_test_split

fromsklearn.preprocessingimportStandardScaler

fromsklearn.linear_modelimportLinearRegression

fromsklearn.metricsimportmean_squared_error,mean_absolute_error,r2_score

#设置中文字体(根据本地环境选择合适字体)

plt.rcParams['font.sans-serif']=['SimHei','MicrosoftYaHei','ArialUnicodeMS']

plt.rcParams['axes.unicode_minus']=False

#1.构造模拟房价数据集

np.random.seed(42)

n=500

data=pd.DataFrame({

"面积":np.random.uniform(50,200,n),

"卧室数":np.random.randint(1,6,n),

"距市中心距离":np.random.uniform(1,20,n),

"楼层":np.random.randint(1,30,n),

"房龄":np.random.uniform(0,40,n),

})

#真实房价(万元)=面积*3-距市中心距离*2-房龄*0.5+楼层*0.3+卧室数*5+噪声

noise=np.random.normal(0,15,n)

price=(

data["面积"]*3

-data["距市中心距离"]*2

-data["房龄"]*0.5

+data["楼层"]*0.3

+data["卧室数"]*5

+noise

)

X=data

y=price

feature_names=list(X.columns)

print("特征名称:",feature_names)

print("样本数:",X.shape[0])

print(X.describe().round(2))

#2.划分训练集与测试集

X_train,X_test,y_train,y_test=train_test_split(

X,y,test_size=0.2,random_state=42

)

#3.特征标准化(仅使用训练集参数)

scaler=StandardScaler()

X_train_scaled=scaler.fit_transform(X_train)

X_test_scaled=scaler.transform(X_test)

#4.训练线性回归模型

model=LinearRegression()

model.fit(X_train_scaled,y_train)

#5.预测

y_pred=model.predict(X_test_scaled)

#6.评估

mse=mean_squared_error(y_test,y_pred)

mae=mean_absolute_error(y_test,y_pred)

r2=r2_score(y_test,y_pred)

print(f"\nMSE={mse:.4f}")

print(f"MAE={mae:.4f}")

print(f"R²={r2:.4f}")

#输出模型参数

print("\n特征权重:")

forname,coefinzip(feature_names,model.coef_):

print(f"{name}:{coef:.4f}")

print(f"截距(偏置):{ercept_:.4f}")

#7.可视化

plt.figure(figsize=(12,5))

plt.subplot(1,2,1)

plt.scatter(y_test,y_pred,alpha=0.5,edgecolors="none")

plt.plot([y_test.min(),y_test.max()],[y_test.min(),y_test.max()],"r--",lw=2)

plt.xlabel("真实房价(万元)")

plt.ylabel("预测房价(万元)")

plt.title("真实值vs预测值")

plt.subplot(1,2,2)

residuals=y_test-y_pred

plt.scatter(y_pred,residuals,alpha=0.5,edgecolors="none")

plt.axhline(0,color="r",linestyle="--")

plt.xlabel("预测房价(万元)")

plt.ylabel("残差")

plt.title("残差图")

plt.tight_layout()

plt.show()

预期结果(参考)运行代码后,你应看到类似以下的结果(具体数值因随机种子固定而一致):MSE=203.3851

MAE=11.4276

R²=0.9885

特征权重:

面积:135.6966

卧室数:7.5606

距市中心距离:-9.8135

楼层:1.5095

房龄:-5.1109

截距(偏置):365.6645结果解读:R²接近0.99,说明线性模型能很好地解释房价变异;面积系数为正且最大,说明面积是房价最重要的正向影响因素;距市中心距离和房龄系数为负,说明距离市中心越远、房龄越老,房价越低。结果记录表请将你的实验结果填入下表,用于撰写实验报告:项目数值含义解读MSE预测误差的平方均值MAE预测误差的绝对值均值R²模型解释数据变异的比例面积系数面积每增加1单位,房价平均变化多少距市中心距离系数距离每增加1单位,房价平均变化多少房龄系数房龄每增加1单位,房价平均变化多少五、实验重点、难点重点:线性回归的建模流程、训练集/测试集划分原则、回归评估指标(MSE/MAE/R²)的含义与计算。难点:理解特征标准化的必要性;理解模型系数的业务含义;识别线性假设的局限。六、操作要点建议在JupyterNotebook中按代码块逐步执行,每执行一步观察输出,确认无误后再进行下一步。训练集与测试集的划分应在使用StandardScaler之前完成,严禁先对整个数据集标准化再划分。特征标准化仅对数值特征进行,本实验所有特征均为数值型,因此可直接对整个特征矩阵标准化。若运行环境缺少中文字体,图表标签可能显示为方框,可尝试将plt.rcParams['font.sans-serif']中的字体改为本地可用字体。七、注意事项线性回归对异常值较为敏感,若加入极端样本,可能对模型参数产生较大影响。线性回归假设特征与目标

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论