AI-030: Google机器学习教程(ML Crash Course with TensorFlow APIs)笔记6-7 - 练习TF实现线性回归、特征组合及离群值分离

使用 n8n 结合通义千问大模型构建业务数据库分析智能体 本项目通过n8n工作流引擎与通义千问大模型构建智能数据分析系统,已完成数据库表结构解析、业务语义建模、自然语言问答等功能开发。系统已支持333张业务表的全量分析,并优化了V0.2版本引入知识库提升问答效率。当前存在输出文件命名不规范、token消耗大等问题,后续计划完成全量测试、发布应用服务,并优化结构化与非结构化数据的综合分析能力。项目运行日志和输出文件已归档,为后续迭代提供参考依据。 阅读详情

本文是Google机器学习教程(ML Crash Course with TensorFlow APIs)的学习笔记。教程地址:

https://developers.google.com/machine-learning/crash-course/ml-intro

6. First Steps with TensorFlow

代码及解说地址:

https://colab.research.google.com/notebooks/mlcc/first_steps_with_tensor_flow.ipynb

########################################################Setup

import math

from IPython import display
from matplotlib import cm
from matplotlib import gridspec
from matplotlib import pyplot as plt
import numpy as np
import pandas as pd
from sklearn import metrics
import tensorflow as tf
from tensorflow.python.data import Dataset

tf.logging.set_verbosity(tf.logging.ERROR)
pd.options.display.max_rows = 10
pd.options.display.float_format = '{:.1f}'.format
# 加载数据,封装到pandas Dataframe中
california_housing_dataframe = pd.read_csv("https://storage.googleapis.com/mledu-datasets/california_housing_train.csv", sep=",")

#数据随机排序,这样保障的SGD效果
california_housing_dataframe = california_housing_dataframe.reindex(
    np.random.permutation(california_housing_dataframe.index))

#为了方便处理数据,将房价数据缩小1000倍
california_housing_dataframe["median_house_value"] /= 1000.0

随机排序及缩放后的数据:

#对数据有个整体统计分析
california_housing_dataframe.describe()

# 首先选取total_rooms为特征
my_feature = california_housing_dataframe[["total_rooms"]]

# total_room的样本数据都是数字,因此定义为tf的数字类型特征列
feature_columns = [tf.feature_column.numeric_column("total_rooms")]

# 目标是median_house_value
targets = california_housing_dataframe["median_house_value"]

feature_columns:

# 定义优化为梯度下降,学习效率为0.0000001,这个学习很低,可以逐步提高来优化模型
my_optimizer=tf.train.GradientDescentOptimizer(learning_rate=0.0000001)
# 梯度裁剪确保了梯度的大小在训练期间不会变得太大,从而导致梯度下降失败。
my_optimizer = tf.contrib.estimator.clip_gradients_by_norm(my_optimizer, 5.0)

# 定义线性回归,将前面定义的特征列和优化方法作为参数
linear_regressor = tf.estimator.LinearRegressor(
    feature_columns=feature_columns,
    optimizer=my_optimizer
)

接下来是定义数据输入函数,该函数是将pd获取的数据组织成tf学习使用的dataset:

def my_input_fn(features, targets, batch_size=1, shuffle=True, num_epochs=None):
    """用一个特征来训练线性回归模型

    参数:
      features: pandas DataFrame 格式的特征数据
      targets: pandas DataFrame 格式的目标值(标签)
      batch_size: 模型训练的批次大小
      shuffle: True / False. 是否要将数据重新洗牌
      num_epochs: 数据重复次数. None = 无限重复
    返回:
      下一个数据批次构成的元组(features, labels)
    """

    # 将pandas DataFrame数据转换成np arrays的字典类型. 结果: {'total_rooms': array([1410., 2046., 2987., ..., 2478., 9882., 1923.])}
    features = {key: np.array(value) for key, value in dict(features).items()}

    # 构建tf的dataset,设置batching/repeating
    ds = Dataset.from_tensor_slices((features, targets))  # warning: 2GB limit
    ds = ds.batch(batch_size).repeat(num_epochs)

    # 根据需要重新洗牌数据
    if shuffle:
        ds = ds.shuffle(buffer_size=10000)#洗牌的样本大小

    # 获取下一个数据批次的features/labels
    features, labels = ds.make_one_shot_iterator().get_next()
    return features, labels

训练模型:

_ = linear_regressor.train(
    input_fn = lambda:my_input_fn(my_feature, targets),
    steps=100
)

评估训练后的模型:

# 创建预测的输入函数,每次预测一个样本,所以不需要循环和洗牌:num_epochs=1, shuffle=False
prediction_input_fn =lambda: my_input_fn(my_feature, targets, num_epochs=1, shuffle=False)

# 用训练的模型来预测
predictions = linear_regressor.predict(input_fn=prediction_input_fn)

# 讲预测结果转换成NumPy array, 方便度量误差
predictions = np.array([item['predictions'][0] for item in predictions])

# 计算均方误差MSE和均方根误差RMSE
mean_squared_error = metrics.mean_squared_error(predictions, targets)
root_mean_squared_error = math.sqrt(mean_squared_error)

# 计算样本的最大、最小及范围
min_house_value = california_housing_dataframe["median_house_value"].min()
max_house_value = california_housing_dataframe["median_house_value"].max()
min_max_difference = max_house_value - min_house_value

print("Min. Median House Value: %0.3f" % min_house_value)
print("Max. Median House Value: %0.3f" % max_house_value)
print("Difference between Min. and Max.: %0.3f" % min_max_difference)
print("Root Mean Squared Error: %0.3f" % root_mean_squared_error)

可以看到目前模型效果很糟糕,RMSE很大,几乎到了样本区间的一半。

思考下将模型训练的更好?

可以先看看自己的预测与样本之间的偏差:

calibration_data = pd.DataFrame()
calibration_data["predictions"] = pd.Series(predictions)
calibration_data["targets"] = pd.Series(targets)
calibration_data.describe()

这些数字也体现了我们的模型目前很糟糕。

还可以通过绘制图形来看看我们的模型效果如何(因为目前是一个特征,所以可以绘制二维图形):

# 选择300个样本进行绘图分析
sample = california_housing_dataframe.sample(n=300)

# 获得样本中特征最大最小值
x_0 = sample["total_rooms"].min()
x_1 = sample["total_rooms"].max()

# 获取模型训练后的权重与偏差
weight = linear_regressor.get_variable_value('linear/linear_model/total_rooms/weights')[0]
bias = linear_regressor.get_variable_value('linear/linear_model/bias_weights')

# 计算最大、最小特征值时的预测值
y_0 = weight * x_0 + bias
y_1 = weight * x_1 + bias

# 绘制最大最小点之间的直线,这就是目前我们的模型几何表示
plt.plot([x_0, x_1], [y_0, y_1], c='r')

# 绘制图形坐标轴标签
plt.ylabel("median_house_value")
plt.xlabel("total_rooms")

# 将样本绘制到图形上(x-特征值,y-标签)
plt.scatter(sample["total_rooms"], sample["median_house_value"])

# 显示图形
plt.show()

可以看到,模型(红线)与样本(蓝点)拟合的很差。

将学习效率提高到0.001,效果会好一些:

通过图形也可以清晰的看到,单个特征是不能得到很好的预测模型的。

最后,将前面模型的代码组合到一个函数中:

def train_model(learning_rate, steps, batch_size, input_feature):
    """Trains a linear regression model.

    Args:
      learning_rate: A `float`, the learning rate.
      steps: A non-zero `int`, the total number of training steps. A training step
        consists of a forward and backward pass using a single batch.
      batch_size: A non-zero `int`, the batch size.
      input_feature: A `string` specifying a column from `california_housing_dataframe`
        to use as input feature.

    Returns:
      A Pandas `DataFrame` containing targets and the corresponding predictions done
      after training the model.
    """

    periods = 10
    steps_per_period = steps / periods

    my_feature = input_feature
    my_feature_data = california_housing_dataframe[[my_feature]].astype('float32')
    my_label = "median_house_value"
    targets = california_housing_dataframe[my_label].astype('float32')

    # Create input functions.
    training_input_fn = lambda: my_input_fn(my_feature_data, targets, batch_size=batch_size)
    predict_training_input_fn = lambda: my_input_fn(my_feature_data, targets, num_epochs=1, shuffle=False)

    # Create feature columns.
    feature_columns = [tf.feature_column.numeric_column(my_feature)]

    # Create a linear regressor object.
    my_optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate)
    my_optimizer = tf.contrib.estimator.clip_gradients_by_norm(my_optimizer, 5.0)
    linear_regressor = tf.estimator.LinearRegressor(
        feature_columns=feature_columns,
        optimizer=my_optimizer
    )

    # Set up to plot the state of our model's line each period.
    plt.figure(figsize=(15, 6))
    plt.subplot(1, 2, 1)
    plt.title("Learned Line by Period")
    plt.ylabel(my_label)
    plt.xlabel(my_feature)
    sample = california_housing_dataframe.sample(n=300)
    plt.scatter(sample[my_feature], sample[my_label])
    colors = [cm.coolwarm(x) for x in np.linspace(-1, 1, periods)]

    # Train the model, but do so inside a loop so that we can periodically assess
    # loss metrics.
    print("Training model...")
    print("RMSE (on training data):")
    root_mean_squared_errors = []
    for period in range(0, periods):
        # Train the model, starting from the prior state.
        linear_regressor.train(
            input_fn=training_input_fn,
            steps=steps_per_period,
        )
        # Take a break and compute predictions.
        predictions = linear_regressor.predict(input_fn=predict_training_input_fn)
        predictions = np.array([item['predictions'][0] for item in predictions])

        # Compute loss.
        root_mean_squared_error = math.sqrt(
            metrics.mean_squared_error(predictions, targets))
        # Occasionally print the current loss.
        print("  period %02d : %0.2f" % (period, root_mean_squared_error))
        # Add the loss metrics from this period to our list.
        root_mean_squared_errors.append(root_mean_squared_error)
        # Finally, track the weights and biases over time.
        # Apply some math to ensure that the data and line are plotted neatly.
        y_extents = np.array([0, sample[my_label].max()])

        weight = linear_regressor.get_variable_value('linear/linear_model/%s/weights' % input_feature)[0]
        bias = linear_regressor.get_variable_value('linear/linear_model/bias_weights')

        x_extents = (y_extents - bias) / weight
        x_extents = np.maximum(np.minimum(x_extents,
                                          sample[my_feature].max()),
                               sample[my_feature].min())
        y_extents = weight * x_extents + bias
        plt.plot(x_extents, y_extents, color=colors[period])
    print("Model training finished.")

    # Output a graph of loss metrics over periods.
    plt.subplot(1, 2, 2)
    plt.ylabel('RMSE')
    plt.xlabel('Periods')
    plt.title("Root Mean Squared Error vs. Periods")
    plt.tight_layout()
    plt.plot(root_mean_squared_errors)

    # Create a table with calibration data.
    calibration_data = pd.DataFrame()
    calibration_data["predictions"] = pd.Series(predictions)
    calibration_data["targets"] = pd.Series(targets)
    display.display(calibration_data.describe())

    print("Final RMSE (on training data): %0.2f" % root_mean_squared_error)

    return calibration_data

7. 组合特征和离群值Synthetic Features and Outliers

组合特征能够减少特征数量,计算一个特征就能同时引入多个特征,提高模型的效率;排除离群值可以提高模型的精确度;

增加一个特征rooms_per_person,该特征是其他特征计算来的:total_rooms / population,用新特征训练模型:

california_housing_dataframe["rooms_per_person"] = (
    california_housing_dataframe["total_rooms"] / california_housing_dataframe["population"])

calibration_data = train_model(
    learning_rate=0.05,
    steps=500,
    batch_size=5,
    input_feature="rooms_per_person")

可以看到模型最后一次训练RMSE反而增大了,表示超过了梯度的最低点,学习效率要适当减小(当前是0.05)

接下来处理离群值,通过绘制样本数据的图形来分析离群值:

#分析离群值
plt.figure(figsize=(15, 6))
plt.subplot(1, 2, 1)
#绘制预测值(x)与标签值(y)的散点图
plt.scatter(calibration_data["predictions"], calibration_data["targets"])

plt.subplot(1, 2, 2)
#绘制特征值rooms_per_person的直方分布图
_ = california_housing_dataframe["rooms_per_person"].hist()

plt.show()

可以看到离群值的分布状况,左边是预测值(x)与目标值(y);右边是rooms_per_person的直方图分布,大部分数据在0-5之间,所以大于5的可以过滤掉。

排除离群值:

# 排除离群值
california_housing_dataframe["rooms_per_person"] = (
    california_housing_dataframe["rooms_per_person"]).apply(lambda x: min(x, 5))
# 绘制特征值rooms_per_person的直方分布图,看到大于5的利群值已经被排除
_ = california_housing_dataframe["rooms_per_person"].hist()

# 重新训练模型
calibration_data = train_model(
    learning_rate=0.05,
    steps=500,
    batch_size=5,
    input_feature="rooms_per_person")
# 绘制预测值(x)与标签值(y)的散点图
_ = plt.scatter(calibration_data["predictions"], calibration_data["targets"])

可以看到只有0-5之间的特征值了。

排除离散值后的训练结果:

 

火山引擎数据智能体DataAgent总结分享 本文通过“冰山模型”揭示了数据资产管理中显性与隐性问题的核心矛盾。数据资产可分为两部分:水面上的结构化数据(数据库、报表等)和水面下的数据孤岛、碎片化问题。真正阻碍数据价值释放的并非数据量不足,而是数据难以转化为可用知识。同时,技术项目存在大量隐性成本(业务流程改造、人员培训等),而AI项目失败90%源于组织原因而非技术问题。为解决这些问题,需要推动从传统BI向Data Agent的转变,实现数据与知识的双轮驱动,构建实时决策能力,最终形成从滞后洞察到实时行动的闭环。这一转型路径涵盖了技术、组织和价值评估三 阅读详情

相关推荐

AI赋能Automa二次开发

增加用户登录,控制用户权限:创建、运行和分享工作流;

拥抱AI的老粽子 1108

Crash Course Computer Science—笔记1

以下所有认知来自于b站上的“Crash Course Computer Science”,是趣味科普计算机相关知识的一门课程(由youtube——CrashCourse频道出品,这个频道两岁了,创建此频道的哥俩旨在创造一些对人们有用的教育内容),之前有看王垠在着手写一本科普计算机的书,力求将计算机最本质的东西以白话形式讲明白,看了这套视频以后,我觉得书这种形式还是太单调了,比不上视频这种可以同时调...

Ria_Ria的博客 2234

OpenAI 12天发布会(12 Days of OpenAI)总结

在OpenAI的“12 Days of OpenAI”活动中,每一天都会发布新的功能或技术,展示公司在AI领域的最新进展。

拥抱AI的老粽子 1047

AI-028: Google机器学习教程(ML Crash Course with TensorFlow APIs)笔记1-3 ML简介及线性回归介绍

本文是Google机器学习教程(ML Crash Course with TensorFlow APIs)的学习笔记。教程地址: https://developers.google.com/machine-learning/crash-course/ml-intro 1.ML介绍(定义及构成) 给出ML的直白定义 常用的术语,基本的算法模型 2.深入ML:线性回归 从图形化、方...

拥抱AI的老粽子 387

SpringBoot整合海康SDK实战:从设备初始化到PS流录像转MP4全流程(附避坑指南)

本文详细介绍了SpringBoot整合海康SDK的完整实战流程,涵盖设备初始化、通道管理、录像检索与下载。针对海康设备生成的PS流录像文件无法直接播放的痛点,重点解析了如何利用FFmpeg高效、无损地将其转换为通用的MP4格式,并提供了关键的避坑指南和性能优化建议。

chair的专栏 764

【软碟通 | UltraISO】刻录光盘教程(制作U盘启动盘)

前言 今天老师说办公室的电脑有点卡,让我给重新安装一个 Windows 7 系统。于是就用软碟通(UltraISO)在 U 盘上刻录了一个 Windows 7 镜像,然后给老师重装了系统。顺便把制作 U 盘启动盘的教程也分享给大家。 软件 UltraISO v9.7.1.3519:点击跳转(密码:dd2k) 教程 将 U 盘插到电脑上,然后鼠标右击选择格式化(制作启动盘必须格式化) 点击文件-打开 选择下载好的系统镜像(如:Windows 7) 点击启动-写入硬盘映像 选择硬盘

XavierJ的博客 2万+

Google ML Crash Course => Embeddings, Collaborative Filtering

https://developers.google.com/machine-learning/crash-course/embeddings/video-lecture? https://developers.google.com/machine-learning/crash-course/embeddings/translating-to-a-lower-dimensional-space ...

weixin_30951743的博客 143

Android存储空间不足下,APP出现奔溃等情况

版权声明:本文为博主原创文章,未经博主允许不得转载。 1. 问题起因     实时录制视频,使用getExternalCacheDir()函数返回的路径作为文件缓存区 2. 问题产生     系统在空间不足的情况下第一清除getExternalCacheDir和getCache文件下的缓存,导致正在录制的视频出现Error。 3. 解决方案     第一

OverseasAndroid的博客 4160

Google ML Crash Course机器学习速成课

大家好,俺在澳大利亚学习人工智能博士。 明天起我将会翻译并解释Google的Machine Learning Crash Course到这里来。 希望大家多多支持。

PeterPeterPeterPPPPP的博客 491

最全软考高项工具技术总结(上)

第四版教材把工具和技术分为:数据收集技术、数据分析技术、数据表现技术、决策技术、沟通技巧、人际关系和团队技能、其他。我会按照上面的分类总结说明并标识他们用在哪些过程。小伙伴们可以通读理解做到有印象能选对应付上午选择,选几个深化用在下午论文的举例中。没必要背!

PM喵的窝 2045

three.js 载入 3D 模型的方法

三维模型的加载器ColladaLoader模型加载器。GLTFLoader模型加载器。OBJLoader模型加载器。FBXLoader模型加载器。

w418856的博客 4362

基于Python TensorFlow Keras的深度学习回归代码——keras.Sequential深度神经网络

基于Python TensorFlow Keras的深度学习回归代码——keras.Sequential深度神经网络1 写在前面2 代码分解介绍2.1 准备工作2.2 参数配置2.3 数据导入与数据划分2.4 联合分布图绘制2.5 因变量分离与数据标准化2.6 原有模型删除2.7 最优Epoch保存与读取2.8 模型构建2.9 训练图像绘制2.10 最优Epoch选取2.11 模型测试、拟合图像绘制、精度验证与模型参数与结果保存3 完整代码 1 写在前面 前期一篇博客(https://blog.csd

疯狂学习GIS的博客 4726

CloudCompare 二次开发(6)——插件中拖拽添加Qt窗口(区域生长算法为例)

手动拖拽的方式搭建Qt对话框界面的制作流程,以PCL中的点云区域生长算法为例进行制作。

点云侠的博客 2152

Google的TensorFlow教程很不错

https://developers.google.com/machine-learning/crash-course/training-and-test-sets/video-lecture上手飞快,不过基本概念啥的还是需要参考其他文章或官方文档练习时非常推荐使用Google的colaboratory,不需要配置各种给环境需要翻墙科学上网,视频不长而且内容基本都在文字内容里,不需要太多流量htt...

dangyoo的博客 6062

自顶向下与自底向上编程思想的对比

一、核心定义与本质差异自顶向下编程思想如同绘制一幅完整的地图,从整体轮廓逐步细化到局部细节。其本质是从系统的整体目标出发,通过逐层分解将复杂问题简化为可实现的子问题,强调先定义 “做什么”,再考虑 “如何做”。自底向上编程思想则类似于搭建积木,从基础组件开始逐步构建复杂系统。其本质是从现有资源和基础功能出发,通过组合和扩展简单组件来实现复杂功能,强调先解决 “如何做” 的细节,再整合为 “做什么” 的整体。二、设计起点与逻辑流程对比设计起点:以系统的整体目标和业务需求为起点。例如设计一个电商平台,首先明确

二进制君 833

PCL:SAC-IA+ICP配准

【代码】SAC-IA+ICP配准。

m0_71596228的博客 1018

【TensorFlow-windows】学习笔记一——基础理解

前言 因为Theano已经停止更新了,所以在前面学完Theano搭建RBM,CNN,RNN相关结构以后,还是得选择一个主流框架的,由于我自身的学习最终是向强化学习靠近,可能用到的仿真环境是openai gym,所以选择了继续学习TensorFlow,而非pyTorch,CNTK之类的深度学习框架。 还有,忍不住吐槽一下TensorFlow的官方文档,别问我为啥,至少别上来就搞分类啊,郁闷,介绍...

风翼冰舟的博客 2898

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

学习笔记(二):使用 TensorFlow 的起始步骤(First Steps with TensorFlow)

目录 1.工具包 TensorFlow 张量 (Tensor) 图 (graph) TensorBoard 2.tf.estimator API Estimator 预创建的 Estimator (pre-made Estimator) 自定义 Estimator(custom Estimator) 3.编程练习  1)Pandas 简介  2)使用 TensorFlow ...

Lightmare625 1862

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

AI-032: Google机器学习教程(ML Crash Course with TensorFlow APIs)笔记9 - 表示法

本文是Google机器学习教程(ML Crash Course with TensorFlow APIs)的学习笔记。教程地址: https://developers.google.com/machine-learning/crash-course/ml-intro 9. 表示法

拥抱AI的老粽子 297

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

google谷歌今日上线基于TensorFlow的机器学习速成课程

https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_14663556398715100176%22%7D&n_type=0&p_from=1learn  : https://developers.google.cn/machine-learning/crash-course/...

csuzhaoqinghui的博客 4532

AI-040: Python深度学习3 - 三个Karas实例-2

实例2: 通过路透社数据集来将文本区分46个不同主题 这里与上一个实例不同的地方:这是个多元分类问题,因此最终输出是46维向量 加载数据 from keras.datasets import reuters (train_data, train_labels), (test_data, test_labels) = reuters.load_data(num_words=10000) ...

拥抱AI的老粽子 2154

AI-044: DuReader上手 - 运行基线模型

DuReader是中文机器阅读理解数据库,包含一个基线模型,可以用来研究机器阅读理解。 项目地址:https://github.com/baidu/DuReader 运行基线模型的步骤: 1. 系统安装Python 2. 安装PaddlePaddle(也可以选择TensorFlow方式运行,这样需要安装TensorFlow) 3. 下载项目代码https://github.com/baidu/D...

拥抱AI的老粽子 1897

AI-039: Python深度学习3 - 三个Karas实例-1

实例:通过imdb的评价数据来分析电影的好坏。 套路: 1. 预处理数据 2. 建立网络模型(层数、每层节点数、激活函数) 3. 选取损失函数、优化器,训练轮次及批量大小 4. 使用训练集训练模型 5. 根据训练结果调整2、3 6. 使用校验集校验模型 7. 根据校验结果调整2、3 8. 使用测试集预测结果 9. 根据测试结果调整2、3 10. 最终获得满意的模型:) 最终...

拥抱AI的老粽子 1805

AI-001 : AI 是什么?怎么才算是AI?

中文翻译是人工智能,是指机器(指代由人创造的东西)能够像人一样思考、动作。 如何像人?最初就是期望模仿人 有一个测试标准:图灵测试,通过图灵测试就可以认为具有人的智力。图灵测试检验了四个方面的能力: 机器学习——通过与外部环境交互而学习的能力 知识表述——把学习到的内容合理的组织起来,能够成为系统的知识 自主推理——利用系统的知识可以分析、处理新的环境条件,获得近似人类的分析结果 自然...

拥抱AI的老粽子 1802

AI-041: Python深度学习3 - 三个Karas实例-3

实例3: 通过波士顿的房屋数据预测房价 这是一个回归问题,因为最终输出的房价是一个连续值。 加载数据: from keras.datasets import boston_housing (train_data, train_targets), (test_data, test_targets) = boston_housing.load_data() 预处理: 每个样本是32个...

拥抱AI的老粽子 1103

AI-011: 练习:用线性回归解决实际问题,Octave建模及求解

现在公司是做通信工程的,积累了很多工程数据,这里尝试用线性回归找出数据间规律。 比如,通过项目的一些特性得出项目预算。 选取了4个特征:合同工期,设备用量,线材用量,施工面积 假设函数: 成本函数: 期望: 优化方法-梯度下降: 随机初始化参数,然后选择0.1作为学习效率,带入数据循环计算,求得成本函数最小; 如果发现成本函数来回震荡,一直不收敛,可以尝试缩小学习效...

拥抱AI的老粽子 928
上一篇: AI-029: Google机器学习教程(ML Crash Course with TensorFlow APIs)笔记4-5 TensorFlow介绍
下一篇: PHP是世界上最好的语言
铭记北宸
博客等级 码龄18年 289粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铭记北宸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值