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

乌鲁木齐水磨沟网站建设企业营销型网站

乌鲁木齐水磨沟网站建设,企业营销型网站,新商盟网站开发时间,滴滴优惠券网站怎么做的这里写自定义目录标题(1)导入数据(2)画出城市人口与利润图(3)计算损失值(4)计算梯度下降(5)开始训练(6)画出训练好的模型(…

这里写自定义目录标题

  • (1)导入数据
  • (2)画出城市人口与利润图
  • (3)计算损失值
  • (4)计算梯度下降
  • (5)开始训练
  • (6)画出训练好的模型
  • (7)做出预测
  • (8)完整代码

(1)导入数据

问题引入:假设你是老板,要考虑在不同的城市开一家新店;
x_train 是不同城市的人口数量
y_train 是那个城市一家餐馆的利润

import math
import copy
import numpy as npx_train = np.array([6.1101, 5.5277, 8.5186, 7.0032, 5.8598, 8.3829, 7.4764, 8.5781, 6.4862, 5.0546, 5.7107, 14.164, 5.734, 8.4084, 5.6407, 5.3794, 6.3654, 5.1301, 6.4296, 7.0708, 6.1891, 20.27, 5.4901, 6.3261, 5.5649, 18.945, 12.828, 10.957, 13.176, 22.203, 5.2524, 6.5894, 9.2482, 5.8918, 8.2111, 7.9334, 8.0959, 5.6063, 12.836, 6.3534, 5.4069, 6.8825, 11.708, 5.7737, 7.8247, 7.0931, 5.0702, 5.8014, 11.7, 5.5416, 7.5402, 5.3077, 7.4239, 7.6031, 6.3328, 6.3589, 6.2742, 5.6397, 9.3102, 9.4536, 8.8254, 5.1793, 21.279, 14.908, 18.959, 7.2182, 8.2951, 10.236, 5.4994, 20.341, 10.136, 7.3345, 6.0062, 7.2259, 5.0269, 6.5479, 7.5386, 5.0365, 10.274, 5.1077, 5.7292, 5.1884, 6.3557, 9.7687, 6.5159, 8.5172, 9.1802, 6.002, 5.5204, 5.0594, 5.7077, 7.6366, 5.8707, 5.3054, 8.2934, 13.394, 5.4369])
y_train = np.array([17.592, 9.1302, 13.662, 11.854, 6.8233, 11.886, 4.3483, 12., 6.5987, 3.8166, 3.2522, 15.505, 3.1551, 7.2258, 0.71618, 3.5129, 5.3048, 0.56077, 3.6518, 5.3893, 3.1386, 21.767, 4.263, 5.1875, 3.0825, 22.638, 13.501, 7.0467, 14.692, 24.147, -1.22, 5.9966, 12.134, 1.8495, 6.5426, 4.5623, 4.1164, 3.3928, 10.117, 5.4974, 0.55657, 3.9115, 5.3854, 2.4406, 6.7318, 1.0463, 5.1337, 1.844, 8.0043, 1.0179, 6.7504, 1.8396, 4.2885, 4.9981, 1.4233, -1.4211, 2.4756, 4.6042, 3.9624, 5.4141, 5.1694, -0.74279, 17.929, 12.054, 17.054, 4.8852, 5.7442, 7.7754, 1.0173, 20.992, 6.6799, 4.0259, 1.2784, 3.3411, -2.6807, 0.29678, 3.8845, 5.7014, 6.7526, 2.0576, 0.47953, 0.20421, 0.67861, 7.5435, 5.3436, 4.2415, 6.7981, 0.92695, 0.152, 2.8214, 1.8451, 4.2959, 7.2029, 1.9869, 0.14454, 9.0551, 0.61705])

(2)画出城市人口与利润图

通过 python 包 matplotlib.pyplot 画图

import matplotlib.pyplot as pltplt.scatter(x_train, y_train, marker='x', c='g') plt.title("利润*10000/人口数量*10000")
plt.ylabel('利润*10000')
plt.xlabel('人口数量*10000')plt.show()

在这里插入图片描述

(3)计算损失值

已知模型为:
fw⃗,b(x⃗(i))=w⃗⋅x⃗(i)+bf_{\vec{w},b}(\vec{x}^{(i)}) = \vec{w}·\vec{x}^{(i)}+bfw,b(x(i))=wx(i)+b

损失函数为:
cost(i)=(fw⃗,b(x⃗(i))−y(i))2cost^{(i)} = (f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)})^2cost(i)=(fw,b(x(i))y(i))2

总损失函数为:
J(w⃗.b)=12m∑i=0m−1cost(i)J(\vec{w}.b) = \frac 1 {2m} \sum ^{m-1} _{i=0} cost^{(i)}J(w.b)=2m1i=0m1cost(i)

程序实现如下:

def compute_cost(x,y,w,b):m = x.shape[0]total_cost = 0.for i in range(m):f_wb = np.dot(w,x[i]) + bcost = (f_wb - y[i]) ** 2total_cost += costtotal_cost = total_cost / (2 * m)return total_cost

(4)计算梯度下降

梯度下降公式为:
repeat until convergence:{0000b:=b−α∂J(w,b)∂b0000w:=w−α∂J(w,b)∂w}\begin{align*}& \text{repeat until convergence:} \; \lbrace \newline \; & \phantom {0000} b := b - \alpha \frac{\partial J(w,b)}{\partial b} \newline \; & \phantom {0000} w := w - \alpha \frac{\partial J(w,b)}{\partial w} \; & \newline & \rbrace\end{align*}repeat until convergence:{0000b:=bαbJ(w,b)0000w:=wαwJ(w,b)}

详解 gradient 部分为:
∂J(w,b)∂b=1m∑i=0m−1(fw,b(x(i))−y(i))∂J(w,b)∂w=1m∑i=0m−1(fw,b(x(i))−y(i))x(i)\frac{\partial J(w,b)}{\partial b} = \frac{1}{m} \sum\limits_{i = 0}^{m-1} (f_{w,b}(x^{(i)}) - y^{(i)}) \\ \frac{\partial J(w,b)}{\partial w} = \frac{1}{m} \sum\limits_{i = 0}^{m-1} (f_{w,b}(x^{(i)}) -y^{(i)})x^{(i)} bJ(w,b)=m1i=0m1(fw,b(x(i))y(i))wJ(w,b)=m1i=0m1(fw,b(x(i))y(i))x(i)

代码实现 gradient 部分:

def compute_gradient(x,y,w,b):m = x.shape[0]dj_dw = 0dj_db = 0for i in range(m):f_wb = np.dot(w,x[i]) + bdj_dw += (f_wb - y[i]) * x[i]dj_db +=  f_wb - y[i]dj_dw = dj_dw / mdj_db = dj_db / mreturn dj_dw, dj_db

代码实现梯度下降 gradient descent

def gradient_descent(x,y,w_in,b_in,cost_function,gradient_function,alpha,num_iters):J_history = []w_history = []w = copy.deepcopy(w_in)b = b_infor i in range(num_iters):dj_dw, dj_db = gradient_function(x,y,w,b)w = w - alpha * dj_dwb = b - alpha * dj_dbif i<100000:cost = cost_function(x,y,w,b)J_history.append(cost)if i% math.ceil(num_iters/10) == 0:		# math.ceil: 将传入的参数向上取整为最接近的整数w_history.append(w)print(f"Iteration {i:4}: Cost {float(J_history[-1]):8.2f}   ")return w, b, J_history, w_history

(5)开始训练

initial_w = 0.
initial_b = 0.
iterations = 1500
alpha = 0.01w,b,_,_ = gradient_descent(x_train ,y_train, initial_w, initial_b, compute_cost, compute_gradient, alpha, iterations)
print("w,b found by gradient descent:", w, b)

(6)画出训练好的模型

因为我们已经训练完成模型,所以直接用参数 向量w参数b 的值进行绘图:

m = x_train.shape[0]
predicted = np.zeros(m)for i in range(m):predicted[i] = w * x_train[i] + bplt.plot(x_train, predicted, c = "b")
plt.scatter(x_train, y_train, marker='x', c='g') plt.title("Profits*10000/Population*10000")
plt.ylabel('Profits*10000')
plt.xlabel('Population*10000')

在这里插入图片描述

(7)做出预测

predict1 = 3.5 * w + b
print('For population = 35,000, we predict a profit of $%.2f' % (predict1*10000))predict2 = 7.0 * w + b
print('For population = 70,000, we predict a profit of $%.2f' % (predict2*10000))

(8)完整代码

import copy
import math
import numpy as npx_train = np.array([6.1101, 5.5277, 8.5186, 7.0032, 5.8598, 8.3829, 7.4764, 8.5781, 6.4862, 5.0546, 5.7107, 14.164, 5.734, 8.4084, 5.6407, 5.3794, 6.3654, 5.1301, 6.4296, 7.0708, 6.1891, 20.27, 5.4901, 6.3261, 5.5649, 18.945, 12.828, 10.957, 13.176, 22.203, 5.2524, 6.5894, 9.2482, 5.8918, 8.2111, 7.9334, 8.0959, 5.6063, 12.836, 6.3534, 5.4069, 6.8825, 11.708, 5.7737, 7.8247, 7.0931, 5.0702, 5.8014, 11.7, 5.5416, 7.5402, 5.3077, 7.4239, 7.6031, 6.3328, 6.3589, 6.2742, 5.6397, 9.3102, 9.4536, 8.8254, 5.1793, 21.279, 14.908, 18.959, 7.2182, 8.2951, 10.236, 5.4994, 20.341, 10.136, 7.3345, 6.0062, 7.2259, 5.0269, 6.5479, 7.5386, 5.0365, 10.274, 5.1077, 5.7292, 5.1884, 6.3557, 9.7687, 6.5159, 8.5172, 9.1802, 6.002, 5.5204, 5.0594, 5.7077, 7.6366, 5.8707, 5.3054, 8.2934, 13.394, 5.4369])
y_train = np.array([17.592, 9.1302, 13.662, 11.854, 6.8233, 11.886, 4.3483, 12., 6.5987, 3.8166, 3.2522, 15.505, 3.1551, 7.2258, 0.71618, 3.5129, 5.3048, 0.56077, 3.6518, 5.3893, 3.1386, 21.767, 4.263, 5.1875, 3.0825, 22.638, 13.501, 7.0467, 14.692, 24.147, -1.22, 5.9966, 12.134, 1.8495, 6.5426, 4.5623, 4.1164, 3.3928, 10.117, 5.4974, 0.55657, 3.9115, 5.3854, 2.4406, 6.7318, 1.0463, 5.1337, 1.844, 8.0043, 1.0179, 6.7504, 1.8396, 4.2885, 4.9981, 1.4233, -1.4211, 2.4756, 4.6042, 3.9624, 5.4141, 5.1694, -0.74279, 17.929, 12.054, 17.054, 4.8852, 5.7442, 7.7754, 1.0173, 20.992, 6.6799, 4.0259, 1.2784, 3.3411, -2.6807, 0.29678, 3.8845, 5.7014, 6.7526, 2.0576, 0.47953, 0.20421, 0.67861, 7.5435, 5.3436, 4.2415, 6.7981, 0.92695, 0.152, 2.8214, 1.8451, 4.2959, 7.2029, 1.9869, 0.14454, 9.0551, 0.61705])import matplotlib.pyplot as pltplt.scatter(x_train, y_train, marker='x', c='g')plt.title("profits*10000/num(human in a city)*10000")
plt.ylabel('profits*10000')
plt.xlabel('num(human in a city)*10000')plt.show()def compute_cost(x, y, w, b):m = x.shape[0]total_cost = 0.for i in range(m):f_wb = np.dot(w, x[i]) + bcost = (f_wb - y[i]) ** 2total_cost += costtotal_cost = total_cost / (2 * m)return total_costdef compute_gradient(x,y,w,b):m = x.shape[0]dj_dw = 0dj_db = 0for i in range(m):f_wb = np.dot(w,x[i]) + bdj_dw += (f_wb - y[i]) * x[i]dj_db +=  f_wb - y[i]dj_dw = dj_dw / mdj_db = dj_db / mreturn dj_dw, dj_dbdef gradient_descent(x, y, w_in, b_in, cost_function, gradient_function, alpha, num_iters):J_history = []w_history = []w = copy.deepcopy(w_in)b = b_infor i in range(num_iters):dj_dw, dj_db = gradient_function(x, y, w, b)w = w - alpha * dj_dwb = b - alpha * dj_dbif i < 100000:cost = cost_function(x, y, w, b)J_history.append(cost)if i % math.ceil(num_iters / 10) == 0:  # math.ceil: 将传入的参数向上取整为最接近的整数w_history.append(w)print(f"Iteration {i:4}: Cost {float(J_history[-1]):8.2f}   ")return w, b, J_history, w_historyinitial_w = 0.
initial_b = 0.
iterations = 1500
alpha = 0.01w,b,_,_ = gradient_descent(x_train ,y_train, initial_w, initial_b, compute_cost, compute_gradient, alpha, iterations)
print("w,b found by gradient descent:", w, b)m = x_train.shape[0]
predicted = np.zeros(m)for i in range(m):predicted[i] = w * x_train[i] + bplt.plot(x_train, predicted, c = "b")
plt.scatter(x_train, y_train, marker='x', c='g')plt.title("Profits*10000/Population*10000")
plt.ylabel('Profits*10000')
plt.xlabel('Population*10000')plt.show()predict1 = 3.5 * w + b
print('For population = 35,000, we predict a profit of $%.2f' % (predict1*10000))predict2 = 7.0 * w + b
print('For population = 70,000, we predict a profit of $%.2f' % (predict2*10000))
http://www.15wanjia.com/news/54403.html

相关文章:

  • 政府网站建设预算10万aso优化师主要是干嘛的
  • wordpress没有链接地址如何seo推广
  • 已购买域名 如何做网站营销策划书模板范文
  • 前端页面优化防疫管控优化措施
  • 建设银行网站登录密码seo顾问是什么职业
  • 做技术类网站赚钱吗服务营销案例
  • 网站开发方法竞价培训班
  • 做网页收集素材常用的网站有哪些长沙优化科技有限公司
  • 电商网站课程设计报告百度指数的搜索指数
  • 做网站语言学什么自己做网站的流程
  • 网站搭建wordpress专业网站推广优化
  • 网站加入百度广告联盟武汉seo排名优化公司
  • 网站logo的作用seo服务内容
  • 青岛网景互联网站建设公司长沙网站se0推广优化公司
  • 设计网站免费下载杭州网站优化企业
  • 网站没有robots.txt游戏推广员上班靠谱吗
  • 宠物出售的网站怎么做千度seo
  • html购物网站怎么做河南网站seo费用
  • 怎么在自己的网站上做漂浮链接上海网站seo优化
  • 飞凡 做电商网站鸡西网站seo
  • 日本网站开发工作seo课程培训入门
  • 怎样做jsp网站seo的课谁讲的好
  • 网站安全等级评审在哪里做如何让百度收录
  • wordpress 改网站介绍电商平台开发
  • 区总工会网站建设流程关键词搜索挖掘爱网站
  • 比较好的外贸公司百度快照优化公司
  • 如何看网站做没做推广网络推广是干什么的
  • 网站报价功能清单淘宝店铺运营推广
  • 国外科技感强的网站今天大事件新闻
  • 一元云够网站建设线上如何推广自己的产品