波士顿房价预测实践(照搬学习)

    技术2024-10-31  53

    波士顿房价预测实践(照搬学习)

    第一步:相关库资源知识

    下面展示一些 内联代码片。

    from sklearn.tree import DecisionTreeRegressor from sklearn.ensemble import AdaBoostRegressor from sklearn import datasets from sklearn.metrics import mean_squared_error,explained_variance_score from sklearn.utils import shuffle

    scikit-learn简称sklearn,自2007年发布以来,sklearn已经成为Python重要的机器学习库了,支持包括分类,回归,降维和聚类四大机器学习算法。还包括了特征提取,数据处理和模型评估者三大模块。在这里主要用到四个模块tree:一个分类树模块,这里用到决策树 ensemble:这是一个组合几个模型结果用来增强泛化能力和鲁棒性的模块,主要一个目的是对几个独立模型的结果取均值,起到降低方差的作用。另一个目的是相继建立模型,后者降低前者偏差的作用。在这里,是选用第二个目的,利用AdaBoostRegressor函数。 datasets:sklearn自带的数据集,有这里用到的波士顿房价数据、鸢尾花、手写数字数据 自带数据用法:

    sklearn.datasets.load_<name>#自带数据用法,将name改为目标名称 sklearn.datasets.fetch_<name>#在线下载数据集,将name改为目标名称

    metrics:sklearn的一个评价指标模块 具体的用法:

    from sklearn import metrics#直接导入整个模块 from sklearn.metrics import #导入具体的评价指标函数名称

     下面是一些评价指标函数: 平均绝对误差(mean absolute error):这是给定数据集的所有数据点的绝对误差平均 值。  均方误差(mean squared error):这是给定数据集的所有数据点的误差的平方的平均值。 这是最流行的指标之一。  中位数绝对误差(median absolute error):这是给定数据集的所有数据点的误差的中位 数。这个指标的主要优点是可以消除异常值(outlier)的干扰。测试数据集中的单个坏点 不会影响整个误差指标,均值误差指标会受到异常点的影响。  解释方差分(explained variance score):这个分数用于衡量我们的模型对数据集波动 的解释能力。如果得分1.0分,那么表明我们的模型是完美的。 R方得分(R2 score):这个指标读作“R方”,是指确定性相关系数,用于衡量模型对未 知样本预测的效果。最好的得分是1.0,值也可以是负数。  下面展示一些 内联代码片。

    housing_data = datasets.load_boston()#读取波士顿房价数据

    下面展示一些 `housing_data.data#获取输入数据

    X,Y = shuffle(housing_data.data,housing_data.target,random_state = 7)#打乱顺序 ##//80%的数据用于训练,20%的数据用于测试 num_training = int(0.8*len(X)) X_train,Y_train = X[:num_training],Y[:num_training] X_test,Y_test = X[num_training:],Y[num_training:] #拟合一个决策树回归模型,这里设置为4 dt_regressor = DecisionTreeRegressor(max_depth = 4) dt_regressor.fit(X_train,Y_train) #带AdaBoost算法的决策树回归模型拟合 ab_regressor = AdaBoostRegressor(DecisionTreeRegressor(max_depth = 4),n_estimators=400,random_state = 7) ab_regressor.fit(X_train,Y_train) #这里是对决策树的评价输出 Y_pred_dt = dt_regressor.predict(X_test) mse = mean_squared_error(Y_test,Y_pred_dt) evs = explained_variance_score(Y_test,Y_pred_dt) print("\n### Decision Tree performance ### ") #均方误差越小越好,所有数据点的误差的平方的平均值 print("Mean squared error = ",round(mse,2)) #解释方差分,越大越好,数据波动的解释能力 print("Explained variance score = ",round(evs,2)) ##这里是对带有AdaBoost算法的决策树的评价输出 Y_pred_ab = ab_regressor.predict(X_test) mse = mean_squared_error(Y_test,Y_pred_ab) evs = explained_variance_score(Y_test,Y_pred_ab) print("\n### Decision Tree performance ###") print("Mean aquared error = ",round(mse,2)) print("Explained variance ecore = ",round(evs,2))
    Processed: 0.013, SQL: 9