使用决策树算法预测房屋价格_第1页
使用决策树算法预测房屋价格_第2页
使用决策树算法预测房屋价格_第3页
使用决策树算法预测房屋价格_第4页
使用决策树算法预测房屋价格_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

目录TOC\o"1-3"\h\u摘要 1关键词 1Abstract 1Keywords 21引言 31.1背景和意义 31.2国内外研究现状 31.3主要工作和结构安排 42决策树算法简介 42.1决策树算法的基本原理 42.2决策树算法的优缺点 92.3手算案例 103房屋价格相关数据的收集和预处理 133.1数据来源 133.2数据预处理 144决策树算法在房屋价格预测中的应用 164.1决策树模型的构建 164.2决策树模型的性能评估 175结果分析 196结论 20参考文献 22致谢 23附录APython程序代码 24附录B决策树树状图 27第第[1]。首先,该方法在训练样本集上选取最佳特征,并将其视为一种新的属性,这一特性一般由信息增益、基尼系数等测量准则决定。然后根据选定的特征把数据集会被划分为不同的子集,对于每个子集,算法会选择一个最优的特征来划分该子集,并递归地重复这个过程,直到满足停止条件为止。在构建决策树时需要确定一些参数,如树的最大深度、叶子节点的最小样本数等。这些参数的设置会影响决策树的性能评估能力。当决策树完全构建好后,就可以使用它来进行预测了。对于一个新的输入样本,以根结点为起点,根据样本的特征值选择对应的分支,最终到达叶子节点,并将其输出的数值作为预测的结果。决策树算法具有简单直观、易于理解和解释的优点,适用于处理具有离散特征的数据集。根据书本可知,构建决策树的算法如下:图2.1决策树算法原理图由此可见决策树的构建是一个递归问题,核心在于:如何选择最优的特征,使得对数据集的划分效果最好以及决定何时停止分裂节点。决策树作为一种强大的机器学习算法,它不仅能够解决分类问题,还能处理回归问题。决策树在回归问题和分类问题中的应用存在明显的差别,主要体现在目标变量类型、划分准则以及输出值处理等方面。从目标变量类型的角度来看,回归决策树主要用于解决回归问题,其中目标变量是连续数值型的,即回归决策树预测的是输入特征对应的数值输出。与之相反,分类决策树应用于以离散类为对象的分类问题。在划分准则上,回归决策树和分类决策树也存在不同之处。回归决策树在划分过程中使用回归相关的准则,比如用平方误差(MeanSquaredError,MSE)或平均绝对误差(MeanAbsoluteError,MAE)缩小预测值与实际值之间的误差。而分类决策树则使用分类相关的准则,如基尼指数(Giniindex)或信息增益(InformationGain)来最大化类别的纯度或最小化不确定性。最后,在输出处理环节,回归决策树把特征空间分割为几个独立的部分,而每个部分都拥有自己独特的数值产出。对于测试数据,只要按照特征将其归到某个单元,便可得到对应的数值输出。而分类决策树则是将特征空间划分成不同的类别区域,对于测试数据,根据其特征将其分类到某个类别区域,从而得到对应的类别标签。综上所述,决策树在回归问题和分类问题中的应用存在明显的差异,主要体现在目标变量类型、划分准则以及输出值处理等方面。这些差异使得回归决策树和分类决策树能够分别适用于不同类型的预测问题,并在各自的应用领域中发挥重要作用。在预测房价这一具体场景中,因为房价是一个连续的数值,所以应该使用决策树来解决回归问题。(二)介绍下面是使用数学语言详细描述回归决策树算法的核心步骤:1、特征选择:对于每一个特征X(其中i是特征的索引),计算该特征与目标变量Y(即房价)之间的某种不纯度度量(如如信息增益、基尼系数等),选择能最大程度降低划分后数据纯度的特征作为当前节点的分类特征。“信息熵”被广泛认为是衡量样本集合纯度的一个关键指标。这个数值越高,意味着这个集合的纯净度就越低(混乱程度也越高);数值越低,意味着这个集合的纯净度越高,其混乱度也就越低。信息熵定义为: H=−i=1n其中,P(xi)表示集合中第i类样本所占比例,当P(xi)=1时(类别唯一,纯度最高),此时log2P(xi)=0,整个系统的信息熵为0;当类别越多时,P(xi)的值越接近于0,log2P(xi)越接近于无穷大,整个系统的信息熵就越大。可以通过代码展示类别数量逐渐变大时集合的信息熵变化。如下图图2.2信息熵变化图信息增益(InformationGain):衡量了在利用特定特征对数据集进行划分后,目标变量不确定性的降低程度。它的计算公式基于熵(Entropy)的概念。信息增益的意义在于,它反映了特征A对于减少目标变量不确定性的贡献。信息增益越大,说明特征A对于预测目标变量的能力越强,因此更有可能被选为划分特征。信息增益的公式如下: GainD,a=Ent其中,D表示样本集合,a表示属性,v表示属性a可能的取值种类(假设属性a具有3中不同的取值或者范围,则样本经过属性a划分之后最多是3分类),|Dv||D图2.3划分示例图基尼系数(GiniImpurity):基尼系数是一种用于评估数据集纯净度的度量标准,用于量化一个随机选取样本被错误分类的可能性。它的数值越低,意味着数据集的纯净度越高,样本被准确分类的机会也随之增加。基尼系数的公式如下: Ginip=基尼系数揭示了从数据集中随机选取两个不同类别样本的可能性。因此,当基尼系数降低时,数据集的纯度也随之提高。在决策树的计算方法里,基尼系数经常被应用于回归分析中。通过计算每个特征的基尼系数的减少量,该算法能够选择具有最大减少量的特征作为分类特征。经过划分的子集会展现出更高的纯净度,进而增强模型的预测能力。总体而言,在决策树算法中,信息增益和基尼系数都是用于特征筛选和数据集划分的关键工具。它们通过衡量特征对目标变量预测能力的贡献,帮助算法构建出准确、高效的决策树模型。数学上,这通常涉及计算每个特征的划分标准,如: Impurity(Xj)=k∈partitionsnk其中,nk是第k个划分中的样本数,N是总样本数,Var(Yk)是第k个划分中目标变量Y的方差。2、划分数据集基于所选择的特征Xj的数值可以将数据集分为两个或更多的子集。每个子集对应特征Xj的一个取值范围或类别。3、递归构建子树:对每一个划分后的子集,重复步骤1和2,直到满足停止条件(如达到最大深度、子集内样本数过少、不纯度降低量小于某个阈值等)。4、叶子节点赋值:对于每个叶子节点,计算该节点内所有样本目标变量Y的平均值(或其他统计量),作为该叶子节点的预测值。数学上,这可以表示为: Predictionleaf=1nlⅇafⅈ∈lⅇaf其中,nlⅇaf是叶子节点中的样本数,Yi是这些样本的目标变量值。5、预测新样本:针对一个全新的样本,我们根据其独特的特征值,在决策树上从根节点遍历至叶子节点,最后得到的叶子节点预测值将作为该样本房价的预测依据。6、小结:决策树是一个由根到叶的递归过程,在每一个中间结点寻找划分属性,递归重要的是设置停止条件:(1)当前的节点所包含的样本都属于相同的类别,因此没有必要进行分类;(2)如果当前的属性集是空的,或者所有样本在所有属性上的取值都是相同的,无法进行划分,那么简单来说,就是当分到这个节点时,所有的属性特征都会耗尽,没有可用的特征了,就选择label数量多这一节点打标签使其变成叶节点(其实是在用样本出现的后验概率做先验概率);(3)目前结点包含的样本集合是空的,不用划分。这种情况出现是因为该样本数据缺少这个属性取值,根据结点的label情况为该父结点打标记(使用父节点出现的后验概率作为该节点的先验概率)。下面是决策树算法流程图:训练集D训练集D遍历特征j,扫描切分点,选择最小的误差平方和对于选定的划分(j,s)计算相应最佳c_m误差阈值切分的最少样本数回归树f(x)noyes2.2决策树算法的优缺点决策树算法优点和缺点如下:优点:(1)易于理解和解释:决策树生成的决策规则直观易懂,能清晰地展示出各个特征在决策过程中的作用,不需要进行复杂的数学建模。(2)分类效果好:决策树算法在许多分类任务中表现出色,能有效地处理各种类型的数据,包括连续数据和离散数据。(3)决策树在处理非线性关系时展现出了出色的能力:它通过整合非线性特性,能够更有效地处理这些关系,从而实现更优的分类效果。(4)对缺失值不敏感:在处理缺失值的问题上,决策树算法表现出不敏感的特性,能够有效地应对数据的不完整性。(5)可进行特征选择:决策树算法可以自动选择最重要的特征,有助于降低数据的维度和简化模型。缺点:(1)容易过拟合:决策树算法易产生复杂模型对数据进行拟合,会造成过拟合现象的产生,即当模型对训练数据具有良好性能时,而对测试数据却没有良好性能。(2)对连续性字段难以预测:对于连续性的字段,决策树算法的预测效果可能会较差,因为连续性字段的取值范围较大,难以通过简单的规则进行预测。(3)对特征的关联性敏感:当属性间的相关性较高时,会使决策树产生的模型过于复杂,从而增大了过拟合风险。(4)在大数据集上其计算能力受到限制:在大数据集上,建立和优化决策树算法是一件非常困难的事情。(5)对数据的预处理要求较高:对于离群点和噪声点,决策树算法可能受到影响,需要进行适当的预处理来提高模型的稳定性和分类效果。2.3手算案例为了演示决策树算法预测房屋价格的手算案例,从Kaggle数据集(波士顿房价数据集)中随机选择10条数据,并手动计算决策树的构建过程。由于手算可能较为繁琐,我简化了计算过程并聚焦于关键步骤。下面的10个数据是从波士顿住房价格资料集中挑选出来的:图2.4数据示例图为了简化,在这里仅考虑两个特征:bedrooms(房子里的卧室数量)和stories(房子的层数),并假设它们对于预测price(价格)是重要的。并以此来构建一个回归决策树来预测波士顿房价。具体如下:选择划分特征:假设我们根据某种准则(如最高相关性)选择bedrooms作为第一个划分特征。确定划分阈值:观察数据,我们可以尝试选择一个阈值来划分数据集,假设选择bedrooms的阈值为4。划分数据集:根据bedrooms的值小于或大于4,将数据集划分为两个子集。对每个子集选择下一个划分特征:对于每个子集计算剩余特征(如stories)的方差,并选择方差最小的特征作为下一个划分特征。确定stories的划分阈值(对于选择了stories作为划分特征的子集):在选择了stories作为划分特征的子集中,我们同样需要选择一个阈值来进一步划分数据。递归构建子树:对于每个新划分出的子集,重复步骤4和5,直到满足停止条件(如子集中样本数过少或树的深度达到预设值)。计算叶子节点的预测值:对于每个叶子节点(即不再划分的子集),计算该子集中目标变量(房价)的平均值或众数作为预测值。构建完整的决策树:将所有划分和预测值组合起来,形成完整的决策树。下面开始根据bedrooms和stories为特征构建决策树:1):选择初始划分特征,计算每个特征的不纯度度量,这里使用方差作为不纯度的度量。我们可以计算bedrooms和stories的方差,以及它们与price(房价)之间的相关性来确定哪个特征更适合作为划分依据。为简化计算,我们仅计算方差。方差计算公式为: Var(X)=1Ni=1其中X是特征值集合,N是样本数,xi是每个样本的特征值,μ假设我们计算得到bedrooms的方差小于stories的方差,我们选择bedrooms作为第一个划分特征。2):确定bedrooms的划分阈值,接下来,我们需要找到一个阈值来划分bedrooms特征。假设我们选择bedrooms的中位数作为划分阈值。将数据集根据bedrooms是否大于或等于这个阈值划分为两个子集。(假设为4);3):根据bedrooms划分数据集,bedrooms<4的子集和bedrooms>=4的子集;4):对每个子集选择下一个划分特征,对于bedrooms<4的子集,我们计算stories的方差,并假设它足够大以至于我们选择stories作为下一个划分特征。对于bedrooms>=4的子集,我们可能继续使用bedrooms或其他特征进行划分,但为简化,我们假设不再划分这个子集。5):确定stories的划分阈值(对于bedrooms<4的子集):假设我们选择的stories的划分阈值为3。6):递归构建子树:对于bedrooms>=4的子集,计算房价平均值作为预测值。(9870000+10150000+10150000+11410000+12215000+12250000+13300000)/7=11335000对于bedrooms<4且stories<3的子集,计算房价平均值作为预测值。(12250000+10850000)/2=11550000对于bedrooms<4且stories>=3的子集,同样计算房价平均值作为预测值。9800000/1=98000007):计算叶子节点的预测值对于bedrooms<4且stories<3的子集,预测值为11550000;对于bedrooms<4且stories>=3的子集,预测值为9800000。8):构建完整的决策树(部分),如下图:图2.5决策树构建结果图3房屋价格相关数据的收集和预处理3.1数据来源本研究所使用的房价数据集来自知名机器学习比赛网站kaggle,每条数据包含房屋面积大小、户型等特征,目标特征为房屋的售价。数据来源网站:/datasets/harishkumardatalab/housing-price-prediction.如下表(仅展示部分数据):图3.1数据图该数据集提供了房价预测的全面信息,有13个列名:价格(Price):房子的价格。面积(Area):房屋的总面积(平方英尺)。卧室(Bedrooms):房子里卧室的数量。浴室(Bathrooms):房屋内浴室的数量。楼层(Stories):房子的楼层数。主路(Mainroad):房屋是否与主路相连(是/否)。客房(Guestroom):房屋是否有客房(是/否)。地下室(Basement):房子是否有地下室(是/否)。热水供暖(Hotwaterheating):房屋是否有热水供暖系统(是/否)。空调(Airconditioning):房屋是否有空调系统(是/否)。停车位(Parking):房屋内可用停车位的数量。Prefarea:房屋是否位于首选区域(是/否)。13)装修状况:(Furnishingstatus)房屋的装修状况(全装修、半装修、不装修)。数据预处理1、数据加载与查看:使用适当的库(pandas)加载房屋价格数据集,查看数据的前几行,了解数据的结构和内容。数据如下(只展示了部分特征和价格):表3.1数据显示表priceareabedroomsbathroomsstoriesmainroadguestroombasement133000007420423yesnono122500008960444yesnono122500009960322yesnoyes122150007500422yesnoyes114100007420412yesyesyes108500007500331yesnoyes101500008580434yesnono1015000016200532yesnono98700008100412yesyesyes98000005750324yesyesno2、处理缺失值:首先,通过select_dtypes方法,筛选出features数据框中所有数值类型的列(即整数和浮点数),并将这些列的列名存储在numeric_features列表中。然后,使用fillna方法,将numeric_features中所有缺失值用该列的平均值填充。3、特征编码:通过select_dtypes方法筛选出features数据框中所有对象类型的列(通常是字符串或分类变量),并将这些列的列名存储在categorical_features列表中。然后,创建一个LabelEncoder对象。LabelEncoder可以将分类变量(通常是字符串)转换为整数。接着,通过一个循环,对categorical_features中的每一个分类特征,使用fit_transform方法将其转换为整数。4、数据标准化或归一化:通过select_dtypes方法,筛选出features数据框中所有对象类型的列(通常是字符串或分类变量),并将这些列的列名存储在categorical_features列表中。然后,创建一个LabelEncoder对象。LabelEncoder可以将分类变量(通常是字符串)转换为整数。最后,通过一个循环,对categorical_features中的每一个分类特征,再次使用fit_transform方法将其转换为整数。具体代码如下:图3.2数据预处理代码图在数据预处理后,为了降低特征维度和保留有用信息,需要进行特征选择和提取。特征重要性分析:通过决策树模型训练后,计算各特征的重要性得分,进一步筛选出对房价预测贡献较大的特征,并排除噪声或无用特征。通过Python使用代码创建一个条形图,其中每个条形的长度代表对应特征的重要性分数,条形的位置对应特征名。通过查看这个条形图,可以快速识别出哪些特征对模型预测结果的影响最大。代码如下:图3.3特征分析代码图运行结果如下:图3.4特征重要性分析结果图通过以上数据预处理和特征工程,本研究在保证数据集完整性和连续性的同时,提高了决策树模型的精度和预测能力。4决策树的创建与性能评估4.1决策树模型的构建利用scikit-learn库中的DecisionTreeClassifier类构造了一个决策树模型。使用train_test_split功能,将数据集划分为训练集和测试集。代码test_size=0.2表示测试集将包含原始数据集的20%,剩下的80%将被用作训练集。设置随机种子,确保每次划分得到相同的结果,这有助于结果的可重复性。设置决策树的最大深度为5,以控制模型的复杂度并防止过拟合。使用fit方法用于训练模型。将训练特征X_train和对应的训练目标y_train作为输入。在调用fit方法后,模型将学习训练数据中的模式和关系,并准备用于后续的预测任务。具体代码如下:图4.1决策树构建代码图构建结果如下(仅展示靠近根节点部分):图4.2决策树构建结果图4.2决策树模型的性能评估通过使用一些常见的回归性能指标来评估决策树模型在预测房价任务上的性能,比如均方误差(MeanSquaredError,MSE)和决定系数(CoefficientofDetermination,R2)。我使用了波士顿房价数据集,并将其拆分为训练集和测试集,然后创建一个DecisionTreeRegressor对象,并使用训练集对其进行训练。接下来使用训练好的模型对测试集进行预测,计算了均方误差(MSE)和决定系数(R²)来评估模型性能,打印出了结果,代码如下:图4.3决策树性能评估代码图运行结果如下:图4.4决策树性能评估结果图从运行结果可以看出决策树模型的均方误差为27371.30万元^2,表示模型预测房价与实际房价之间平均每个样本的差异是27371.30万元的平方。R2分数(决定系数)为0.4584840370487663,表示模型解释了房价中约45.8%的变化,它提供了模型性能的一个量化指标。我们应该提升模型的性能,以减小均方误差并提高R2分数,需要进一步改进模型的性。使用matplotlib库绘制预测结果(y_pred)与实际结果(y_test)之间的对比图,并在图上添加了一条y=x的直线。其中每个点代表一个样本,其x坐标是实际价格,y坐标是预测价格,y=x直线作为参考线能够直观地判断模型的预测性能。实现代码如下:图4.5决策树预测对比代码运行结果如下:图4.6决策树预测对比结果图这条直线直观地展示了预测值与实际值之间的吻合程度。从图上可以看出仍然有部分数点与直线偏离,说明预测还存在较大的误差,应该适当的调整参数使预测结果与实际结果更加吻合。5结果分析通过对决策树模型的训练和预测,我得到了一系列准确的房价预测结果。在本次利用决策树回归模型进行的回归任务中,设定了决策树的最大深度为5,以避免模型过于复杂而引发的过拟合问题。通过对训练样本集的学习,可以用测试集来评价模型的性能。评估的主要指标包括均方误差(MSE)和决定系数(R²),这两个指标为我们提供了模型预测能力和拟合程度的量化描述。首先,均方误差值为27371.30万元^2,这是一个比较大的数值,意味着模型在预测时产生的误差略大。可能的原因有多个方面:1)模型复杂度不足:尽管限制了决策树的最大深度以预防过拟合问题,然而,当前的深度可能仍然不足以充分揭示数据中潜藏的复杂关系和模式。考虑到这一点,适当提升树的深度可能会增强模型的预测能力,但我们必须细心地进行操作,以免产生过拟合。2)数据质量问题:测试集中可能存在噪声或异常值,这些值会对模型的预测产生干扰,导致误差增大。3)特征选择问题:当前使用的特征可能不是影响目标变量的最关键因素,或者某些重要特征没有被包括在模型中。进行特征选择和特征工程,如添加新的特征、删除无关特征或进行特征转换来提升模型的预测精度。接下来,进行深入分析决定系数(R²)的结果。R²值为0.4584840370487663,表明模型只能解释约45.8%的目标变量变化。这一研究结果说明模型在数据拟合方面的表现不理想,表明其性能有待提高,模型的预测能力和泛化能力均未达到预期水平,模型需要进行相应的调整或改进才能更好地适应复杂多变的数据环境。为了改善R²值,应该考虑以下几个方面:1)增加模型复杂度:在深入研究模型性能提升的途径时,不能忽视增加模型复杂度这一策略,这一举措必须在避免过拟合的前提下进行。通过增加决策树的深度或放宽分裂节点的限制,使模型具备更强的数据拟合能力。这样的调整有助于模型更好地捕捉数据的内在规律,进而提高模型预测的准确性,在增加复杂度的同时要注意不会引入过多的噪声或导致模型失去泛化能力。因此,在实际操作中,需要精细调整模型的复杂度,以期在保持良好泛化性能的同时,实现更高的预测精度。2)集成方法:在提升模型预测性能和稳定性的探索中,集成学习方法提供了一种强有力的工具。与单个决策树相比,随机森林、梯度提升树等集成学习方法往往具有更好的性能。这些方法通过综合多个模型的预测结果,能够减少单一模型可能带来的偏差,在一定程度上提高整体的预测精度。集成学习能够和其它模型优化技术有机地结合起来,提高模型的整体性能。在集成学习的基础上,进一步引入特征选择、数据预处理等步骤,来进一步提高模型的预测准确性和稳定性。3)调整其他模型参数:对除了最大深度之外的其它决策树参数进行调整,如min_samples_split、min_samples_leaf等,以找到最优的参数组合。综上所述,虽然决策树回归模型在一定程度上能够处理回归问题,但当前的性能评估结果并不理想。为进一步提高预报的准确性、拟合效果,应从以下几个方面考虑,包括调整模型参数、优化数据质量、进行特征工程以及尝试使用更强大的模型或集成方法。在未来的工作中我将继续深入探索和改进模型,期待获得更好的性能表现。6结论在本文中,我致力于运用决策树回归模型去解决一个回归问题。使用一个训练集合来精心训练模型,然后用这个测试集中来进行详细的地评估。评估的两大核心指标——均方误差(MSE)与决定系数(R²),但没有达到预期。均方误差值偏高,决定系数偏低,这说明模型在预测时存在较大的误差以至于对目标变量变化的解释能力有限。面对这样的结果,我进行了深入的剖析与反思。模型复杂度不足、数据质量参差不齐以及特征选择不当,都会导致这一结果。为解决这些问题,我设想了一系列改进措施,包括调整模型参数、提升数据质量、实施特征工程,以及尝试更为强大的模型或集成方法。当前模型的表现不尽如人意,但这并不意味着决策树回归模型不适用于此问题。它恰好提醒了我,在应用任何模型之前,数据预处理和特征选择都至关重要,同时,也需要通过精细调整模型参数来找到最佳配置。因此应该通过其他的途径提升性能,探索其他类型的回归模型或者结合更多的模型进行集成学习。展望未来,我将继续进行模型的优化与改进,希望在回归问题上取得更好的性能。我将继续关注数据预处理、特征选择、模型参数调整以及模型选择等方面,来找到最适合当前问题的解决方案。综上所述,尽管本次决策树回归模型的性能评估结果不理想,但这正是我进一步改进和提升模型性能的重要契机。我将以此为契机,继续深入探索与研究,期待在未来的工作中取得更为卓越的成果。

参考文献丁明彬.基于小波变换和决策树的电机滚动轴承故障诊断[J].内燃机与配件,2023,(23):54-57.周志华.机器学习[M].清华大学出版社,2016,(01):74-75.肖艳艳.基于决策树模型的大学生体质健康影响因素研究[D].华东交通大学,2023.施泽阳,王禹毅,孙源,等.中医临床预测模型研究现状及方法进展[J/OL].现代中医临床,1-8[2024-04-01].马佳羽,蒋青嬗.住宅价格指数编制研究进展与方法适用性分析[J].价格理论与实践,2023,(12):78-81.鞠默欣,周雨馨,唐伟宁,等.基于数据不均衡的CART决策树用电异常检测方法[J].吉林电力,2024,52(01):53-56.周亮锦,赵明扬.基于几类机器学习模型的房价预测分析[J].全国流通经济,2022,(06):111-116.伍娴.基于决策树集成的深圳市二手房价格研究[D].河南大学,2021.宋尧.基于机器学习回归模型的房价预测研究[J].电子制作,2021,(02):41-43.HongyuX,HeX,YuH.EvaluationModelofModernNetworkTeachingQualityBasedonArtificialIntelligenceE-Learning[J].InternationalJournalofWeb-BasedLearningandTeachingTechnologies(IJWLTT),2023,19(1):1-14.

附录APython程序代码fromsklearn.treeimportplot_treefromsklearn.treeimportDecisionTreeRegressorimportmatplotlib.pyplotaspltimportpandasaspdfromsklearn.model_selectionimporttrain_test_splitfromsklearn.treeimportDecisionTreeRegressorfromsklearn.metricsimportmean_squared_error,r2_scorefromsklearn.preprocessingimportLabelEncoder,StandardScalerimportnumpyasnp#加载数据data=pd.read_csv('boston_housing.csv.csv')#第一列是目标变量(房价)target=data.iloc[:,0]features=data.iloc[:,1:]#数据预处理和特征工程#处理缺失值#用均值填充数值特征的缺失值numeric_features=features.select_dtypes(include=[np.number]).columnsfeatures[numeric_features]=features[numeric_features].fillna(features[numeric_features].mean())#编码分类变量#使用标签编码将分类变量转换为数值categorical_features=features.select_dtypes(include=['object']).columnslabel_encoder=LabelEncoder()forfeatureincategorical_features:features[feature]=label_encoder.fit_transform(features[feature])#标准化数值特征#标准化所有数值特征scaler=StandardScaler()features[numeric_features]=scaler.fit_transform(features[numeric_features])#划分训练集和测试集X_train,X_test,y_train,y_test=train_test_split

温馨提示

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

评论

0/150

提交评论