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

网站建设 乐达云创企业网络营销企业网站建设章节习题

网站建设 乐达云创,企业网络营销企业网站建设章节习题,html5手机网站开发视频,微商城模板包含哪些[Open In Colab] 文章目录 1. 线性回归简介2. 使用sklearn进行一元线性回归3. 线性回归的coef_参数和intercept_参数4. 使用sklearn实现多元线性回归4.1 利用PolynomialFeatures构造输入4.2 进行多元线性回归 5. 总结 import numpy as np import matplotlib.pyplot as plt1. 线…[Open In Colab] 文章目录 1. 线性回归简介2. 使用sklearn进行一元线性回归3. 线性回归的coef_参数和intercept_参数4. 使用sklearn实现多元线性回归4.1 利用PolynomialFeatures构造输入4.2 进行多元线性回归 5. 总结 import numpy as np import matplotlib.pyplot as plt1. 线性回归简介 简单的线性回归就是使用一根直线去拟合一种趋势。 例如我们有一批房屋面积与房价的数据。将其作成散点图如下 X [100, 110, 120, 130, 140] # 房屋面积m^2 y [100 * 1, 110 * 1.05, 120 * 1.1, 130 * 0.95, 140 * 0.9] # 房价万元plt.scatter(X, y, cred) plt.ylim(80, 160) plt.xlim(80, 160) plt.show()此时我们通过观察图像可以假设房屋面积与房价是呈一种线性关系的。也就是 房价 a ∗ 房屋面积 b 房价a * 房屋面积 b 房价a∗房屋面积b 。但我们并不知道 a a a 和 b b b 的值。 线性回归的目标就是求出这条直线也就是 a a a, b b b 的值。 通过我上面的数据可以很容易看出它们的线性关系为 房价 1 ∗ 房价 0 房价 1 * 房价 0 房价1∗房价0。即 a 1 , b 0 a1, b0 a1,b0 plt.ylim(80, 160) plt.xlim(80, 160) plt.scatter(X, y, cred) plt.plot(np.arange(80, 160), np.arange(80, 160) * 1 0, cgreen) plt.show()接下来需要使用sklearn去实现这条直线的计算。 2. 使用sklearn进行一元线性回归 sklearn进行线性回归使用的是sklearn.linear_model只需要给出上面的X和y即可自动进行数据拟合。 首先定义模型 from sklearn import linear_modelmodel linear_model.LinearRegression()之后构造数据集 需要有X和Y其中X的维度必须是(样本数, 特征数)。 在该例子中我们有5条数据一个面积的特征。因此需要将X的维度处理成(5, 1) 而Y因为是一个具体的值因此其维度必须是(样本数,) 在上面定义Xy时y已经满足了维度。而X维度为(样本数, )因此需要对其进行转换。 X np.array(X).reshape(-1, 1) # -1表示自动计算维度因此效果等同于.reshape(5, 1) model.fit(X, y) # 训练模型LinearRegression()模型训练后即可使用predict方法进行预测 print(model.predict(X))[107.4 113.4 119.4 125.4 131.4]现在我们将训练好的进行绘制 X_ np.arange(80, 160).reshape(-1, 1) y_ model.predict(X_)plt.scatter(X, y, cred) plt.plot(X_, y_, cblue) plt.show()可以看到我们训练出的模型和预测的模型还是有一定的差距的。这是因为我们的样本太少导致无法拟合出真实的模型。 3. 线性回归的coef_参数和intercept_参数 上面我们训练好了模型。如果我们想要用数学表达式的方式写出来可以通过查看模型的coef_和intercept_参数。 上面我们说过X的特征只有一个。因此我们的线性回归模型的基础假设就是 yf(x)axb。因此线性回归过程就是求a,b两个值。 我们可以通过coef_参数查看a的值通过intercept_查看b的值 a model.coef_[0] b model.intercept_ print(a , model.coef_) print(b , model.intercept_)a [0.6] b 47.39999999999998上面可以看到model.coef_返回的是一个数组这是因为实际应用中我们不止有一个特征因此是一个数组。 下面我们尝试使用公式的方式去计算y并进行绘制。 X_ np.arange(80, 160).reshape(-1, 1) y_ a * X_ bplt.scatter(X, y, cred) plt.plot(X_, y_, cblue) plt.show()可以看到我们使用axb的计算方式得到了同样的结果。 4. 使用sklearn实现多元线性回归 在实际应用中并不是所有的数据都是线性关系。数据可能会呈现出二次或三次曲线。例如我们先构造出一个符合三次曲线的样本 X np.sort(np.random.uniform(-3, 3, size100)) # 定义100个X y_true -0.5 * (X ** 3) 0.8 * (X ** 2) 1 * (X ** 1) 10 # 真实的y值 y_label y_true np.random.normal(-1, 1, size100) # y的标签值含噪音plt.scatter(X, y_label, cred) plt.plot(X, y_true, cgreen) plt.show()对于该样本我们需要假设样本符合三次曲线也就是 f ( x ) a x 3 b x 2 c x d f(x) ax^3bx^2cxd f(x)ax3bx2cxd 也就是我们线性回归的目标是求出a,b,c,d 然而sklearn.linear_model本身并不直接支持 x n x^n xn次方但是我们可以利用它支持多个特征的特性来完成三次曲线的拟合。 sklearn.linear_model支持多个特征。因此我们假设的模型函数为 f ( x 3 , x 2 , x 1 ) a x 3 b x 2 c x 1 d f(x_3, x_2, x_1) a x_3 bx_2 cx_1 d f(x3​,x2​,x1​)ax3​bx2​cx1​d 其中该模型具有三个特征 x 3 , x 2 , x 1 x_3, x_2, x_1 x3​,x2​,x1​。而实际我们只有一个特征 x x x因此我们需要利用 x x x构造出三个特征即 x 3 x 3 x 2 x 2 x 1 x \begin{aligned} x_3 x^3 \\ x_2 x^2 \\ x_1 x \end{aligned} x3​x3x2​x2x1​x​ 通过这种方式我们就巧妙利用linear_model多特征特性解决了一个特征的多元线性回归。 4.1 利用PolynomialFeatures构造输入 sklearn提供了帮你构造 x 3 , x 2 , x 1 x_3,x_2,x_1 x3​,x2​,x1​的方法sklearn.preprocessing.PolynomialFeatures。 我们先来尝试一下 from sklearn.preprocessing import PolynomialFeaturesX_temp np.arange(0, 3).reshape(-1, 1) X_ PolynomialFeatures(degree3).fit_transform(X_temp) print(X_temp:, X_temp.reshape(-1)) print(\nX_:\n, X_)X_temp: [0 1 2]X_:[[1. 0. 0. 0.][1. 1. 1. 1.][1. 2. 4. 8.]]上面的例子中我们使用PolynomialFeatures(degree3)对X_temp进行了处理。 其中X_temp是我们的输入一共有3个样本[0, 1, 2]每个样本有1个特征。经过PolynomialFeatures(degree3).fit_transform(X_temp)处理后我们得到了新的输入X_ X_同样是3个样本但每个样本有431个特征通过观察很容易发现。这4个特征与原始的1个特征的关系为 x 0 , x 1 , x 2 , x 3 x^0, x^1, x^2, x^3 x0,x1,x2,x3。 实际我们在使用时其实不需要 x 0 x^0 x0因为linear_model中的intercept_已经具备了 x 0 x^0 x0的功能所以我们可以使用PolynomialFeatures(degree3, include_biasFalse)中的include_biasFalse来去掉 x 0 x^0 x0 接下来我们对一开始的X进行一下处理 X_p PolynomialFeatures(degree3, include_biasFalse).fit_transform(X.reshape(-1, 1))4.2 进行多元线性回归 对输入X处理后接下来的线性回归过程和一元线性回归就没什么区别了 model linear_model.LinearRegression() model.fit(X_p, y_label)LinearRegression()我们再来看下coef_和intercept_ print(model.coef_:, model.coef_) print(model.intercept_:, model.intercept_)model.coef_: [ 0.91962613 0.76846728 -0.49995355] model.intercept_: 9.211345527598573这次model.coef_一共有3个数值分别对应 x 1 , x 2 , x 3 x^1, x^2, x^3 x1,x2,x3前面的系数。 我们先用模型的方式绘制一下预测结果 plt.scatter(X, y_label, cred) plt.plot(X, model.predict(X_p), cgreen) plt.show()接下来我们再用公式的方式将结果绘制一下公式为yaxbx^2cx^3d a model.coef_[0] b model.coef_[1] c model.coef_[2] d model.intercept_ y_predict a * X b * X**2 c * X**3 dplt.scatter(X, y_label, cred) plt.plot(X, y_predict, cgreen) plt.show()可以看到结果一致与模型结果一致 5. 总结 一元线性回归 线性回归需要使用model.linear_model的LinearRegression()方法一元线性回归需要将 X X Xreshape成(样本数, 1)的维度使用model.fit(X, y)进行模型拟合model.coef_存储的是 x x x前面的系数model.intercept_存储的是截距 多元线性回归 多选线性回归需要使用PolynomialFeatures对X进行处理它会将X转化为多个特征分别对应 x 0 , x 1 , x 2 , . . . x^0, x^1, x^2, ... x0,x1,x2,...使用PolynomialFeatures的include_biasFalse参数可以去掉 x 0 x^0 x0。建议使用对X处理后后续的流程与一元线性回归一致model.coef_存储了多个系数分别为 x 0 , x 1 , x 2 , . . . x^0, x^1, x^2, ... x0,x1,x2,...前面的系数。model.intercept_存储的是截距
http://www.pierceye.com/news/49998/

相关文章:

  • 站内优化主要从哪些方面进行做网站小程序
  • 免费查公司信息的网站企业网站设计有哪些新功能
  • 潍坊百度网站建设企业网站建设设计任务书
  • 公司怎么建立网站吗目前有做电子合同的网站吗
  • 做网站需要用到的符号语言自己做视频网站的流程
  • 微信小程序怎么做购物网站做产品网站架构图之前注意要点
  • 可以直接进入网站的正能量网站如何做网站 百度
  • 丹东网站网站建设建设简单网站
  • 网站开发学什么语言最好网站备案证书安装
  • 网站首页html代码在哪做海报有哪些网站
  • 有做挂名法人和股东的网站吗大连零基础网站建设教学服务
  • 的网站建设公司江阴建设银行网站
  • 公司备案号查询网站wordpress高亮linux
  • 网站建设加盟培训seo哪个软件好
  • 网站建设域名是什么苏州网站建设方法
  • 用jsp做的简单网站代码潍坊青州网站建设
  • 怎么在网站后台删除图片网站内部链接是怎么做的
  • 淘宝网站代理怎么做的敬请期待素材
  • 番禺网站建设多少钱公众号里的网站怎么做
  • 做网站的成功案例吉林网络seo
  • wordpress网站维护插件买一个软件大概多少钱
  • 一流的永州网站建设空白word个人简历模板下载
  • 坪山住房和建设局网站湘潭网站建设 磐石网络最好
  • 团购网站开发需要多久网站如何让百度抓取
  • 互联网公司响应式网站东莞最新招聘
  • 学做网站论坛vip号码南宁网站建设公司
  • 企业查询官方网站发优惠券网站怎么做
  • 域名抢住网站定制型网站建设服务
  • 17网一起做网站宁波市内做公司网站的公司
  • 新手学建设网站书籍网站首页ico怎么做