文章目录

  • ElasticNet模型介绍
  • 代码
  • 实验结果

ElasticNet模型介绍

ElasticNet又叫弹性网络回归,也就是L1-norm与L2-norm的组合。
详细介绍见
https://blog.csdn.net/qq_21904665/article/details/52315642

代码

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas as pd
##数据分割为训练数据和测试数据
from sklearn.model_selection import train_test_split
#使用ElasticNet模型
from sklearn.linear_model import ElasticNetCV
import sklearn.datasets
from pprint import pprint
#数据预处理
from sklearn.preprocessing import PolynomialFeatures, StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.metrics import mean_squared_error
import warningsif __name__ == "__main__":'''加载数据'''# 消除警告warnings.filterwarnings(action='ignore')# 设置浮点精度np.set_printoptions(suppress=True)# 读取数据file_data = pd.read_csv('housing.data', header=None)# print(file_data)# a = np.array([float(s) for s in str if s != ''])#将数据分为两部分,并赋值#将data设为维度为(len(file_data), 14)的值data = np.empty((len(file_data), 14))data = sklearn.datasets.load_boston()#print(data)# 特征值x = np.array(data.data)# 目标值y = np.array(data.target)print(u'样本个数:%d, 特征个数:%d' % x.shape)print(y.shape)y = y.ravel()#'''训练集,测试集,训练模型'''# 数据分为训练集和测试集# random_state:是随机数的种子,随机数种子为0时,产生不同的随机数,x_train, x_test, y_train, y_test = train_test_split(x, y, train_size=0.7, random_state=0)# 线性分类model = Pipeline([('ss', StandardScaler()),# ElasticNet回归('poly', PolynomialFeatures(degree=3, include_bias=True)),('linear', ElasticNetCV(l1_ratio=[0.1, 0.3, 0.5, 0.7, 0.99, 1], alphas=np.logspace(-3, 2, 5),fit_intercept=False, max_iter=1e3, cv=3))])print (u'开始建模...')# 拟合模型model.fit(x_train, y_train)# 获得模型的参数linear = model.get_params('linear')['linear']print (u'超参数:', linear.alpha_)print (u'L1 ratio:', linear.l1_ratio_)# argsort的:对数据进行排序,然后提取其原来的索引# 测试数据做递增排序order = y_test.argsort(axis=0)y_test = y_test[order]x_test = x_test[order, :]# 使用测试数据测试模型y_pred = model.predict(x_test)'''计算R2,MSE'''# 为模型进行打分 r2越大,拟合效果越好,最优值为1。r2 = model.score(x_test, y_test)# 计算MSEmse = mean_squared_error(y_test, y_pred)print ('R2:', r2)print( u'均方误差:', mse)# t:样本标号t = np.arange(len(y_pred))'''绘图'''mpl.rcParams['font.sans-serif'] = [u'simHei']mpl.rcParams['axes.unicode_minus'] = Falseplt.figure(facecolor='w')plt.plot(t, y_test, 'r-', lw=2, label=u'真实值')plt.plot(t, y_pred, 'g-', lw=2, label=u'估计值')plt.legend(loc='best')plt.title(u'波士顿房价预测', fontsize=18)plt.xlabel(u'样本编号', fontsize=15)plt.ylabel(u'房屋价格', fontsize=15)plt.grid()plt.show()

实验结果

样本个数:506, 特征个数:13
(506,)
开始建模...
超参数: 0.01778279410038923
L1 ratio: 0.99
R2: 0.8063335206113289
均方误差: 16.125736558067782

机器学习基础算法14-波士顿房价预测-ElasticNet模型相关推荐

  1. Python机器学习/数据挖掘项目实战 波士顿房价预测 回归分析

    Python机器学习/数据挖掘项目实战 波士顿房价预测 回归分析 此数据源于美国某经济学杂志上,分析研究波士顿房价( Boston HousePrice)的数据集. 在这个项目中,你将利用马萨诸塞州波 ...

  2. 机器学习实战二:波士顿房价预测 Boston Housing

    波士顿房价预测 Boston housing 这是一个波士顿房价预测的一个实战,上一次的Titantic是生存预测,其实本质上是一个分类问题,就是根据数据分为1或为0,这次的波士顿房价预测更像是预测一 ...

  3. 机器学习梯度下降法应用波士顿房价预测

    目录 1 线性回归api介绍 小结 2 波士顿房价预测 2.1 案例背景介绍 2.2 案例分析 2.3 回归性能评估 2.4 代码实现 2.4.1 正规方程 2.4.2 梯度下降法 2.5 小结 1 ...

  4. 机器学习线性回归实践,波士顿房价预测,手写梯度下降

    波士顿房价预测,手写梯度下降,python实现 数据集介绍 每条数据包含房屋以及房屋周围的详细信息.其中包含城镇犯罪率,一氧化氮浓度,住宅平均房间数,到中心区域的加权距离以及自住房平均房价等等. CR ...

  5. 【机器学习】P25 随机森林算法(2) 实现 “波士顿房价” 预测

    随机森林算法 Random Forest Algorithm 随机森林算法 随机森林算法实现波士顿房价预测 随机森林算法 随机森林(Random Forest)算法 是一种 集成学习(Ensemble ...

  6. 波士顿房价预测python决策树_波士顿房价预测 - 最简单入门机器学习 - Jupyter

    机器学习入门项目分享 - 波士顿房价预测 该分享源于Udacity机器学习进阶中的一个mini作业项目,用于入门非常合适,刨除了繁琐的部分,保留了最关键.基本的步骤,能够对机器学习基本流程有一个最清晰 ...

  7. 波士顿房价预测——机器学习入门级案例

    一.数据处理 1.1 数据集介绍 本实验使用波士顿房价预测数据集,共506条样本数据,每条样本包含了13种可能影响房价的因素和该类房屋价格的中位数,各字段含义如下表所示: 字段名 类型 含义 CRIM ...

  8. 线性回归算法 从认知到实战内含波士顿房价预测案例

    文章目录 2.1 线性回归简介 学习目标 1 线性回归应用场景 2 什么是线性回归 2.1 定义与公式 2.2 线性回归的特征与目标的关系分析 3 小结 2.2 线性回归api初步使用 学习目标 1 ...

  9. 统计学习基础:数据挖掘、推理和预测_百度零基础深度学习笔记(三) 波士顿房价预测...

    波士顿房价预测 波士顿房价预测是一个经典的机器学习任务,期待构建一个房价预测模型,其数据中包含13个影响房价的因素和该类型房屋均价. 波士顿房价影响因素 数据预处理 数据预处理包括: 数据导入 数据形 ...

  10. 波士顿房价预测python代码_Python之机器学习-波斯顿房价预测

    AI 人工智能 Python之机器学习-波斯顿房价预测 波士顿房价预测 导入模块 import pandas as pd import numpy as np import matplotlib.py ...

最新文章

  1. HDU.3177Crixalis's Equipment(贪心)
  2. 金山词霸2012不能在PDF中取词 解决办法
  3. 【Windows工具】QuickLook-3.6.11 安装并设置开机自启动(含较难下载的 QuickLook-3.6.11 安装包百度云盘资源)
  4. 分布式服务框架dubbo原理解析 转
  5. 猛然发现,已经第100篇随笔了
  6. js打开本地文件夹_vue + ArcGIS 地图应用系列一:arcgis api本地部署(开发环境)
  7. java boolean是什么_java中的boolean与Boolean有什么不同
  8. 在将varchar值id转换为int时失败_MySQL令人咋舌的隐式转换
  9. 吴恩达机器学习3-无监督学习
  10. MySql Workbench常用快捷键修改MySqlWorkBench快捷键
  11. netcore之托管程序
  12. fisco bcos transaction交易结构 源代码位置
  13. 企业数据总线(ESB)和注册服务管理(dubbo)的区别{{1033}}
  14. 动作频频,BAT欲瓜分10万亿互联网医疗市场蛋糕?
  15. html 项目实战摄影开课吧,最新《开课吧Web全栈架构师正式课》(Vue.JS及实战项目)...
  16. android回传数据实验报告,传热综合实验实验报告.doc
  17. 云速建站配置https证书
  18. PHP - AES 加密解密
  19. Windows10 电源选项中没有 唤醒时需要密码
  20. 【如何成为SQL高手】第二关:表记录的插入、更新、删除

热门文章

  1. java day05【数组】
  2. HAOI2018 简要题解
  3. 这些文章可以使知识融会贯通
  4. Java 数组类型转字符串类型
  5. docker 监控之 cadvisor
  6. BZOJ4570: [Scoi2016]妖怪
  7. Asp.net MVC 自定义路由
  8. yaf零基础学习总结7-学习使用Yaf中的插件
  9. stat---文件状态信息结构体
  10. JAVA基础--JAVA中的反射机制详解(转)