当前位置: 首页 > news >正文

襄阳门做网站芜湖网站制作公司

襄阳门做网站,芜湖网站制作公司,学校网站建设方案模板下载,广州市招标公告机器学习升维 升维使用sklearn库实现特征升维实现天猫年度销量预测实现中国人寿保险预测 升维 定义#xff1a;将原始的数据表示从低维空间映射到高维空间。在线性回归中#xff0c;升维通常是通过引入额外的特征来实现的#xff0c;目的是为了更好地捕捉数据的复杂性#… 机器学习升维 升维使用sklearn库实现特征升维实现天猫年度销量预测实现中国人寿保险预测 升维 定义将原始的数据表示从低维空间映射到高维空间。在线性回归中升维通常是通过引入额外的特征来实现的目的是为了更好地捕捉数据的复杂性特别是当数据之间的关系是非线性的时候。 目的解决欠拟合问题提高模型的准确率。为解决因对预测结果考虑因素比较少而无法准确计算出模型参数问题。 常用方法将已知维度进行自乘或相乘来构建新的维度。 本文主要记录的是线性回归中遇到数据呈现非线性特征时该如何处理 切记对训练集特征升维后也要对测试集、验证集特征数据进行升维操作 数据准备如下 如果对其直接进行线性回归则拟合后的模型如下 从上述两图可知对于具有非线性特征的图像不对其使用特使的处理则无法对其产生比较好的模型拟合。 上述图像生成代码 # 导包 import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression # 创建数据 X np.linspace(-1,11,100) y (X - 5)**2 3*X 12 np.random.randn(100) X X.reshape(-1,1) # display(X.shape,y.shape) plt.scatter(X,y)# 不升维直接用线性回归解决 model LinearRegression() model.fit(X,y) X_test np.linspace(-2,12,300).reshape(-1,1) y_test model.predict(X_test) plt.scatter(X,y) plt.plot(X_test,y_test,color red)为了使得可以对具有非线性特征的数据进行处理生成一个较好的模型可是实现预测的任务于是便有了升维操作下举例升维和不升维的区别 不升维二维数据x1, x2若不对其进行升维操作则其拟合的多元线性回归公式为: y w 1 ∗ x 1 w 2 ∗ x 2 w 0 y w_1*x_1 w_2*x_2 w_0 yw1​∗x1​w2​∗x2​w0​ 升维若对二维数据x1x2进行升维操作则其可有5个维度以自乘为例x1、x2、x12x22、x1*x2在加上一个偏置项w0一共有六个参数则其拟合后的多元线性回归公式为 y w 0 w 1 ∗ x 1 w 2 ∗ x 2 w 3 ∗ x 1 2 w 4 ∗ x 2 2 w 5 ∗ x 1 ∗ x 2 y w_0w_1*x_1w_2*x_2w_3*x_1^2w_4*x_2^2w_5*x_1*x_2 yw0​w1​∗x1​w2​∗x2​w3​∗x12​w4​∗x22​w5​∗x1​∗x2​ 若这样则由原本的一维线性方程转换成了二维函数最直观的表现则原本的数据集则可以拟合成下图所示的模型 上图生成代码如下 # 导包 import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression X np.linspace(-1,11,100) y (X - 5)**2 3*X 12 np.random.randn(100) X X.reshape(-1,1)# 升维可以解决多项式的问题直观表现为可以让直线进行拐弯 np.set_printoptions(suppressTrue) X2 np.concatenate([X,X**2], axis 1) # 注只需要对特征进行升维不需要对目标值进行升维# 生成测试数据 X_test np.linspace(-2,12,300).reshape(-1,1) model2 LinearRegression() model2.fit(X2,y) X_test2 np.concatenate([X_test,X_test**2],axis1) y_test2 model2.predict(X_test2) print(所求的w是\n,model2.coef_) print(所求的截距b是\n,model2.intercept_)# 绘制图像的时候要用没升维的数据进行绘制 plt.scatter(X,y,colorgreen) plt.plot(X_test,y_test2,color red)使用sklearn库实现特征升维 在sklearn中具有很多封装好的工具可以直接调用。 from sklearn.preprocessing import PolynomialFeatures # 多项式升维的python库 使用方法: # 特征和特征之间相乘 poly PolynomialFeatures(interaction_onlyTrue) A [[3,2]] poly.fit_transform(A) # 生成结果array([[1., 3., 2., 6.]])#特征之间乘法自己和自己自乘在上述情况下加上自己的乘法 poly PolynomialFeatures(interaction_onlyFalse) A [[3,2,5]] poly.fit_transform(A) # 生成结果array([[ 1., 3., 2., 5., 9., 6., 15., 4., 10., 25.]])# 可以通过degree来提高升维的大小 poly PolynomialFeatures(degree4,interaction_onlyFalse)# 特征和特征之间相乘 A [[3,2,5]] poly.fit_transform(A) # 生成结果: # array([[ 1., 3., 2., 5., 9., 6., 15., 4., 10., 25., 27., # 18., 45., 12., 30., 75., 8., 20., 50., 125., 81., 54., # 135., 36., 90., 225., 24., 60., 150., 375., 16., 40., 100., # 250., 625.]])实现天猫年度销量预测 实现代码 import numpy as np import matplotlib.pyplot as plt from sklearn.preprocessing import PolynomialFeatures,StandardScaler from sklearn.linear_model import LinearRegression,SGDRegressor# 创建数据 X np.arange(2009,2020).reshape(-1,1) - 2008 y np.array([0.5,9.36,52,191,350,571,912,1207,1682,2135,2684]) plt.scatter(X,y) # 创建测试数据 X_test np.linspace(2009,2020,100).reshape(-1,1) - 2008# 数据升维 ploy PolynomialFeatures(degree2, interaction_onlyFalse) X2 ploy.fit_transform(X) X_test2 ploy.fit_transform(X_test)# 模型创建LinearRegression model LinearRegression(fit_interceptFalse) model.fit(X2,y) y_pred model.predict(X_test2) print(参数w为,model.coef_) print(参数b为,model.intercept_)plt.scatter(X,y,colorgreen) plt.plot(X_test,y_pred,colorred)# 使用SGD进行梯度下降,必须要归一化,否则效果会非常不好 # 创建测试数据 X_test np.linspace(2009,2019,100).reshape(-1,1) - 2008# 数据升维 ploy PolynomialFeatures(degree2, interaction_onlyFalse) X2 ploy.fit_transform(X) X_test2 ploy.fit_transform(X_test)#对数据进行归一化操作 standard StandardScaler() X2_norm standard.fit_transform(X2) X_test2_norm standard.fit_transform(X_test2)# 模型创建SGDRegression model SGDRegressor(eta00.3, max_iter5000) model.fit(X2_norm,y) y_pred model.predict(X_test2_norm) print(参数w为,model.coef_) print(参数b为,model.intercept_)plt.scatter(X,y,colorgreen) plt.plot(X_test,y_pred,colorred)这里需要说明一下情况如果第二段代码不进行归一化则呈现的是下图 如果进行了归一化则产生的和法一LinearRegession是一样的图形基本相同 这是什么原因 线性回归Linear Regression和随机梯度下降SGD在处理特征尺度不同的问题上有一些不同之处导致线性回归相对于特征尺度的敏感性较低。SGD的更新规则涉及学习率η和梯度。如果不同特征的尺度相差很大梯度的大小也会受到这种尺度差异的影响。因此在引入高次项或其他非线性特征需要注意特征的尺度避免数值上的不稳定性。SGD中的正则化项通常依赖于权重的大小。通过归一化可以使得正则化项对所有特征的影响更加平衡。 实现中国人寿保险预测 import pandas as pd import seaborn as sns import numpy as np from sklearn.linear_model import LinearRegression,ElasticNet from sklearn.metrics import mean_squared_error,mean_squared_log_error from sklearn.model_selection import train_test_split from sklearn.preprocessing import PolynomialFeatures# 读取数据 data_renshou pd.read_excel(your_path/中国人寿.xlsx) # 可以通过下式生成图像查看那些数据是好数据那些是不好的数据——好特征差别大容易区分 #sns.kdeplot(datadata_renshou, xcharges,huesex,shadeTrue) #sns.kdeplot(datadata_renshou, xcharges,huesmoker,shadeTrue) #sns.kdeplot(datadata_renshou, xcharges,hueregion,shadeTrue) #sns.kdeplot(datadata_renshou, xcharges,huechildren,shadeTrue)# 特征工程对数据进行处理 data_renshou data_renshou.drop([region,sex],axis 1) # 删除不好的特征# 体重指数离散化转换体重两种情况标准fat def conver(df,bmi):df[bmi] fat if df[bmi] bmi else standardreturn df data_renshou data_renshou.apply(conver, axis1,args(30,))# 特征提取离散转数值型数据 data_renshou pd.get_dummies(data_renshou) data_renshou.head()#特征和目标值提取 # 训练数据 x data_renshou.drop(charges, axis1) # 目标值 y data_renshou[charges]# 划分数据 X_train,X_test,y_train,y_test train_test_split(x,y,test_size0.2)# 特征升维(导致了他下面的参数biandu) poly PolynomialFeatures(degree2, include_biasFalse) X_train_poly poly.fit_transform(X_train) X_test_poly poly.fit_transform(X_test) # 模型训练与评估 np.set_printoptions(suppressTrue) model LinearRegression() model.fit(X_train_poly,y_train) print(测试数据得分,model.score(X_train_poly,y_train)) print(预测数据得分,model.score(X_test_poly,y_test)) print(测试数据均方误差,np.sqrt(mean_squared_error(y_test,model.predict(X_test_poly)))) print(训练数据均方误差,np.sqrt(mean_squared_error(y_train,model.predict(X_train_poly)))) print(测试数据对数误差,np.sqrt(mean_squared_log_error(y_test,model.predict(X_test_poly)))) print(训练数据对数误差,np.sqrt(mean_squared_log_error(y_train,model.predict(X_train_poly)))) print(获得的参数为,model.coef_.round(2),model.intercept_.round(2))
http://www.hkea.cn/news/14432253/

相关文章:

  • 可视化网页制作工具seo需要培训才能找到工作吗
  • 服务器什么建网站wordpress 4.5.3
  • 不用开源程序怎么做网站温岭高端网站设计哪家好
  • 小说网站防盗做的好wordpress禁止缩略图
  • wordpress移除快速发布海南seo关键词
  • 大气家具营销型网站源码建筑设计服务平台
  • 做网站大约需要多少钱微信开店
  • 做图片素材的网站wordpress没有安装主题
  • wordpress注册登录修改seo搜索引擎优化关键词
  • 无锡营销型网站商丘seo优化
  • wordpress 上传主题网站建设优化两千字
  • 域名解析网站广州必去的景点排名
  • 网站后台管理系统框架有用模板网在线制作免费网站
  • 网站建设属于营业范围里的哪一项网络营销产品策略分析
  • 台州网站建设选浙江华企建设了湛江市志愿服务网站
  • 如何做网站的教程二维码关于单位建设网站的申请
  • 重庆网站租赁空间怎么做企业网站
  • 电商网站首页开发中国交通建设集团有限公司董事长
  • 建设中医知识学习网站wordpress首页显示友链
  • 网站建设征收文化事业建设费吗wordpress好用的富文本编辑器
  • 自己做的网站怎么设置信息必填建立网站目录结构时应该注意哪几个方面
  • 无锡工厂网站建设平面设计培训网
  • 做网站还需要兼容ie8吗做优惠卷网站倒闭了多少钱
  • 建站公司网站源码惠州网站公司
  • 网站有哪些区别是什么wordpress 微信采集插件
  • 二维码网站制作小游戏中心
  • 用wordpress做音乐网站设计制作建筑模型教案
  • 福建省建设监理网官方网站数字媒体艺术就业方向
  • 创建一个网站的技术营销网络建设四个阶段
  • 怎么给网站添加音乐平面设计案例网站