01. 机器学习基础

news/2024/7/8 6:45:50

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

# 机器学习基础
# 线性回归模型

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf

# 从0到10取30个值
data_x = np.linspace(0, 10, 30)

# np.random.normal(0, 1, 30): 噪声,从0到1取30个值
data_y = data_x * 3 + 7 + np.random.normal(0, 1, 30)

# 散点图
plt.scatter(data_x, data_y)
# plt.show()

# 下面通过tensorflow拟合这个模型:y = w * x + b, 目标:求出w和b

# 步骤:
# 1. 定义参数
# 2. 输出训练数据
# 3. 执行推断
# 4. 计算损失:推断与实际情况相比,相差多少
# 5. 【核心】通过训练模型来降低损失,让推断模型与实际值更加接近
# 6. 评估模型,看在实际应用中模型的表现如何

# 步骤1: 定义参数
# 权重
w = tf.Variable(1., name='quanzhong')
# 偏置
b = tf.Variable(0., name='pianzhi')

# 步骤2: 输入数据
# shape为None时,形状可以时任何形状
x = tf.placeholder(tf.float32, shape=None)

# shape为一维任何长度的向量
y = tf.placeholder(tf.float32, shape=[None])

# 步骤3: 推断
pred = tf.multiply(x, w) + b

# 步骤4: 计算损失
# 使用平方差计算, 通过reduce_sum计算损失总和
loss = tf.reduce_sum(tf.squared_difference(pred, y))

# 梯度下降法:让loss降低到最低点,求极值
# 学习速率
learn_rate = 0.0001

# 使用梯度下降学习算法, 最小化loss
train_step = tf.train.GradientDescentOptimizer(learn_rate).minimize(loss)

# 定义session, 训练模型
sess = tf.Session()

# 初始化变量
sess.run(tf.global_variables_initializer())

# 训练10000步
for i in range(10000):
    sess.run(train_step, feed_dict={x: data_x, y: data_y})
    if i % 1000 == 0:
        print(sess.run([loss, w, b], feed_dict={x: data_x, y: data_y}))

sess.close()

# 结果如下: w = 2.9602332, b = 7.1961694
# [6249.381, 1.614691, 0.10198425]
# [50.548775, 3.174291, 5.755518]
# [34.93146, 3.0059364, 6.8885756]
# [34.218925, 2.9699767, 7.1305933]
# [34.186417, 2.9622955, 7.182287]
# [34.18495, 2.9606552, 7.1933265]
# [34.184864, 2.960306, 7.1956763]
# [34.18486, 2.9602332, 7.1961694]
# [34.18486, 2.9602332, 7.1961694]
# [34.18486, 2.9602332, 7.1961694]

转载于:https://my.oschina.net/pasenger/blog/3014251


http://www.niftyadmin.cn/n/3141268.html

相关文章

bash1---基本0

最近在看《高级BASH脚本编程》,边学习脚本编程,边学习Linux的命令。 另外还解决了笔记本电脑上关于Ubuntu无法找到wifi适配器的问题。具体看我另外一篇博客。 另外推荐一个学习linux命令的网站。 今天主要想讲一下如何备份最后一天所有修改的文件 #!/bin…

效能改进之项目例会导入实践

众所周知,在项目管理的过程中,我们需要非常注重沟通,而每日例会作为沟通管理中的一项最佳实践,非常适配互联网项目短频快的特点。成功地在项目中建立例会制度,能带来以下好处: 1)让研发人员相互…

bash2----基本1

这个随笔主要讲一些关于bash的小track 1、如何注释多行bash: :<< 注释内容 &#xff1a;<<WORD 注释内容 WORD :<<BLOCK 注释内容 BLOCK 1.1这个是补充的一个知识点&#xff1a; 命令替换用的点是&#xff0c;在左上角 ESC下面那个&#xff0c;而不是单引号…

【转】利用telnet来进行调试Skynet

https://blog.csdn.net/WhereIsHeroFrom/article/details/80674408转载于:https://www.cnblogs.com/colourstar/p/10432057.html

js,jquery,数组操作小结

----------------------------------------------------------定义数组---------------------------------------------------------- $(function(){var aArray {};//定义一个数组aArray[name] "张三";aArray[sex] "男";aArray[mail] "123456qq.…

bash3---基本2

1、和let一样&#xff0c;[[ ]]也是一个bash命令&#xff0c;但是sh没有的。 下次对于sh: XXX&#xff1a;not found 可以通过把sh换成bash试试 2、关于NULL的if。od探究 对于NULL040时候&#xff0c;NULL is false for if 对于a040&#xff0c;即变量是NULL时候 if [ -n &qu…

蚂蚁微贷互动营销技术体系实践

摘要&#xff1a;以“数字金融新原力(The New Force of Digital Finance)”为主题&#xff0c;蚂蚁金服ATEC城市峰会于2019年1月4日上海如期举办。财富管理专场上&#xff0c;蚂蚁金服微贷事业群高级前端技术专家王卓做了主题为《蚂蚁微贷互动营销技术体系实践》的精彩分享。 演…

bash4----进阶1 内部变量

0、操作符之求最小公约数 #!/bin/bashARGS2 E_BADARGS65#args check #--------------------------------------- if [ "$ARGS" -ne $# ]thenecho "Usage: basename $0 num1 num2 " exit E_BADARGS fi #---------------------------------------gcd() {d…