当前位置:   article > 正文

【Python机器学习系列】一文教你建立SVR模型预测房价(案例+源码)_房价预测建模

房价预测建模

这是我的第270篇原创文章。

一、引言

对于表格数据,一套完整的机器学习建模流程如下:

图片

      针对不同的数据集,有些步骤不适用,其中橘红色框为必要步骤,欢迎大家关注翻看我之前的一些相关文章。前面我介绍了机器学习模型的二分类任务,接下来做一个机器学习模型的回归任务系列,由于本系列案例数据质量较高,有些步骤跳过了,跳过的步骤将单独出文章总结!在Python中,可以使用Scikit-learn库来构建SVR回归模型进行预测,本文以预测房价为例,对这个过程做一个简要解读。

二、实现过程

2.1 读取数据

  1. filename = 'data.csv'
  2. dataset = pd.read_csv(filename, names=names, delim_whitespace=True)
  3. df = pd.DataFrame(dataset)

df:

图片

2.2 数据集划分

  1. features = names[:-1]
  2. target = ['MEDV']
  3. # 划分数据集
  4. X_train, X_test, y_train, y_test = train_test_split(df[features], df[target], test_size=0.2, random_state=0)

2.3 数据归一化

  1. mm1 = MinMaxScaler() # 特征进行归一化
  2. X_train_m = mm1.fit_transform(X_train)
  3. mm2 = MinMaxScaler() # 标签进行归一化
  4. y_train_m = mm2.fit_transform(y_train)

2.4 建模预测

  1. model = SVR()
  2. X_test_m = mm1.transform(X_test) # 注意fit_transform() 和 transform()的区别
  3. y_test_pred_m = model.predict(X_test_m)

2.5 结果可视化

  1. # 训练集预测值与真实值的对比
  2. plt.plot(list(range(0,len(X_train))),y_train,marker='o')
  3. plt.plot(list(range(0,len(X_train))),y_train_pred,marker='*')
  4. plt.legend(['真实值','预测值'])
  5. plt.xlabel('序列')
  6. plt.ylabel('房价')
  7. plt.title('训练集预测值与真实值的对比')
  8. plt.show()

结果:

图片

  1. # 验证集预测值与真实值的对比
  2. plt.plot(list(range(0,len(X_test))),y_test,marker='o')
  3. plt.plot(list(range(0,len(X_test))),y_test_pred,marker='*')
  4. plt.legend(['真实值','预测值'])
  5. plt.xlabel('序列')
  6. plt.ylabel('房价')
  7. plt.title('验证集预测值与真实值的对比')
  8. plt.show()

结果:

图片

2.6 评价指标

  1. # 评价指标
  2. trainScore1 = math.sqrt(mean_squared_error(y_train, y_train_pred))
  3. print('Train Score: %.2f RMSE' % (trainScore1))
  4. testScore1 = math.sqrt(mean_squared_error(y_test, y_test_pred))
  5. print('Test Score: %.2f RMSE' % (testScore1))
  6. trainScore2 = mean_absolute_error(y_train, y_train_pred)
  7. print('Train Score: %.2f MAE' % (trainScore2))
  8. testScore2 = mean_absolute_error(y_test, y_test_pred)
  9. print('Test Score: %.2f MAE' % (testScore2))
  10. trainScore3 = r2_score(y_train, y_train_pred)
  11. print('Train Score: %.2f R2' % (trainScore3))
  12. testScore3 = r2_score(y_test, y_test_pred)
  13. print('Test Score: %.2f R2' % (testScore3))
  14. trainScore4 = mean_absolute_percentage_error(y_train, y_train_pred)
  15. print('Train Score: %.2f MAPE' % (trainScore4))
  16. testScore4 = mean_absolute_percentage_error(y_test, y_test_pred)
  17. print('Test Score: %.2f MAPE' % (testScore4))

结果打印:

图片

作者简介:

读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。需要数据集和源码的小伙伴可以关注底部公众号添加作者微信。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/587575
推荐阅读
相关标签
  

闽ICP备14008679号