01- 收入数据集【Pytorch入门实战】

目录

一、机器学习基础

二、实战例子

1.数据集分析

2.实战训练

3.总结

三、参考资料


一、机器学习基础

为了解决这个问题,人们想到数据驱动方法,也就是让计算机从现有的大量的带标签图片电学习规律,一旦计算机学习到了其中的规律,当我们输入一张新的图片给计算机时,它就可以准确的预测出这张图片到底是猫还是狗。

数据驱动方法是一种基于大量数据进行决策、预测和模式识别的方法。

这里有两个关键的因素:

一是大量的可学习数据,比如带标签的猫狗图片,二是学习的主体,我们一般称之为模型。

如何理解模型呢?

你可以把模型认为是一个映射函数,它包含一些参数,这些参数可以与输入进行计算得到一个输出,我们一般称之为预测结果

所谓模型学习的过程,就是模型修正其参数、改进映射关系的过程,可以简单的把模型的学习过程总结如下,以预测图片是猫还是狗为例:

1.创建模型;

2.输入一张带标签的图片;

3.使用模型对此图片做出预测

4.将预测结果与实际标签比较,产生的差距为损失

5.以减小损失为优化目标,根据损失优化模型参数,

6.循环重复上述第2-5步

二、实战例子

学习的例子使用的是“受教育程度与收入数据集”

1.数据集分析

单变量线性回归算法(比如,x代表学历,f(x)代表收入)

f(x)= w*+ b  --->    我们使用f(x)这个函数来映射输入特征和输出值

目标:预测函数f(x)与真实值之间的整体误差最小。

如何定义误差最小呢?

减小误差(直线距离两边的点越近越好【绝对值小,难以计算,使用均方误差代替】)

损失函数:使用均方差作为作为成本函数也就是 预测值和真实值之间差的平方取均值

优化的目标(y代表实际的收入)

找到合适的 w 和 b ,使得(f(x)- y)2越小越好

注意:现在求解的是参数 w和 b

如何优化?

使用梯度下降算法。

2.实战训练

①首先是用到的库

import os    
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'
import torch
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt    #Matplotlib是一个用于数据可视化的Python绘图库。

查看torch版本

torch.__version__

 

②读取数据集,并查看数据集的部分信息。

data = pd.read_csv('datasets/Income1.csv')
data.head()

 

将 data.Education 的值转换为一个二维数组,其中每个元素都是一个单独的列。

data.Education.values.reshape(-1,1)

将一个NumPy数组转换为PyTorch张量,并将其类型设置为FloatTensor。

③得到模型输入与结果

X = torch.from_numpy(data.Education.values.reshape(-1,1)).type(torch.FloatTensor)
Y = torch.from_numpy(data.Income.values.reshape(-1,1)).type(torch.FloatTensor)

查看X、Y的形状:

X.shape,Y.shape

 

④创建模型

from torch import nn     #torch中的高阶模块,包含各种层&损失函数

class EIModel(nn.Module):
    def __init__(self):                   #初始化方法
        super(EIModel, self).__init__()
        self.linear = nn.Linear(1, 1)     #输入的特征长度为1,输出的特征长度为1
    def forward(self, inputs):            #如何应用这些层(前向传播)
        logits = self.linear(inputs)
        return logits
#实例化模型

model = EIModel()

查看模型结构:一个线性层

⑤损失函数&优化器

loss_fn = nn.MSELoss()    #均方误差损失

opt = torch.optim.SGD(model.parameters(), lr=0.0001)    #随机梯度下降

 model.parameters()返回模型的可训练参数【优化的目标】,lr超参数

⑥训练

for epoch in range(1000):
    for x, y in zip(X, Y):
        y_pred = model(x)     #x输入得到y_pred输出,在model上调用,输入x,被forward方法的inputs接受。【模型预测】
        loss = loss_fn(y_pred, y)    #计算损失(input,target)【计算损失】
        
        opt.zero_grad()    #设置每次梯度清零【梯度清零】
        loss.backward()    #计算梯度(下降最快的方向)【损失反向传播】
        opt.step()    #改变参数,使参数沿着下降最快的方向移动【损失优化参数】
        

查看模型训练后的参数

model.linear.weight,model.linear.bias   #返回linear层的weight和bias

⑦绘制图像

plt.scatter(data.Education, data.Income)
plt.xlabel('Education')
plt.ylabel('Income')

plt.plot(X, model(X).detach().numpy(), 'r')

3.总结

输入数据处理

创建一个合适模型

训练

预测、评价

--->

机器学习:抽象出一条直线,来拟合现有的数据。【映射函数,输入映射输出】

三、参考资料

Pytorch深度学习入门与实战 - 网易云课堂 (163.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/798056.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

sip协议栈简介

SIP协议栈简介 SIP协议栈流程 数据链路层:当SIP消息从网络中传输到达TCP/IP协议栈时,首先被接收到的是数据链路层的数据帧。数据链路层会对数据帧进行解封装,得到网络层的IP数据报。 网络层:网络层会对IP数据报进行解析&#xf…

1.27、基于径向基神经网络的曲线拟合(matlab)

1、基于径向基神经网络的曲线拟合简介及原理 1)原理简介 基于径向基神经网络(Radial Basis Function Neural Network, RBFNN)的曲线拟合是一种常用的非线性拟合方法,通过在输入空间中使用径向基函数对数据进行处理,实现对非线性关系的拟合。 RBFNN的基本原理是将输入空…

Java基础(十九):集合框架

目录 一、Java集合框架体系二、Collection接口及方法1、添加2、判断3、删除4、其它 三、Iterator(迭代器)接口1、Iterator接口2、迭代器的执行原理3、foreach循环 四、Collection子接口1:List1、List接口特点2、List接口方法3、List接口主要实现类:Array…

【Hive SQL 每日一题】在线峰值人数计算

文章目录 测试数据需求说明需求实现 测试数据 -- 创建 user_activity 表 DROP TABLE IF EXISTS user_activity ; CREATE TABLE user_activity (user_id STRING,activity_start TIMESTAMP,activity_end TIMESTAMP );-- 插入数据 INSERT INTO user_activity VALUES (user1, 2024…

算效最高的智算中心上线,天府智算为AI产业带来哪些启示?

四川简阳,地处川中、控扼巴峡,自古乃成渝、川鄂之间的交通重镇,素有“天府雄州”之美誉。 步入数字经济时代,“天府雄州”得天独厚的地理位置再次彰显出巨大的战略价值。简阳市成为成渝算力枢纽的天府数据中心集群关键布局点&…

element ui ts table重置排序

#日常# 今天带的实习生&#xff0c;在遇到开发过程中&#xff0c;遇到了element ui table 每次查询的时候都需要重置排序方式&#xff0c;而且多个排序是由前端排序。 <el-table :data"tableData" ref"restTable"> </<el-table> <script…

bi项目笔记

1.bi是什么 bi项目就是商业智能系统&#xff0c;也就是数据可视画、报表可视化系统&#xff0c;如下图的就是bi项目了 2.技术栈

深入了解 MySQL 的 EXPLAIN 命令

一、什么是 EXPLAIN 命令&#xff1f; EXPLAIN 命令用于显示 MySQL 如何执行某个 SQL 语句&#xff0c;尤其是 SELECT 语句。通过 EXPLAIN 命令&#xff0c;可以看到查询在实际执行前的执行计划&#xff0c;这对于优化查询性能至关重要。 二、EXPLAIN 的基本用法 要使用 EXP…

什么时候要用弗洛伊德算法

分析一下题目&#xff0c;我们看到数据量只有一百&#xff0c;这个时候我们就要注意是否是要用弗洛伊德算法&#xff0c;然后接着我们还需要枚举每一种情况&#xff0c;我们可以用到next_permutation这个方法 #include<bits/stdc.h> using namespace std;const int N 10…

matlab R2016b安装cplex12.6,测试时cplex出现出现内部错误的解决方法

问题场景 网上搜索matlabyalmipcplex的安装教程&#xff0c;跟着步骤操作即可&#xff0c;假如都安装好了&#xff0c;在matlab中测试安装是否成功&#xff0c;出现以下问题&#xff1a; 1、matlab中设置路径中添加了yalmip和cplex路径&#xff0c;在命令窗口中输入yalmiptest…

实现将Nginx的每个网站配置单独的nginx配置文件——每个网站单独管理

一、问题描述 Nginx默认地配置文件【nginx.conf】是包含了所有网站的配置内容,如果我们需要配置很多网站的话,就需要在默认的配置文件中给每个网站都添加一条server记录,这样下去nginx默认配置文件会变得很大,很难管理(比如有些网站不使用了,需要注销掉,也需要到该文件操…

openEuler 安装 podman 和 podman compose

在 openEuler 22.03 LTS SP4 中&#xff0c;你可以使用 dnf 包管理器来安装 Podman 和 Podman Compose。openEuler 默认使用 dnf 作为包管理器&#xff0c;所以这是安装软件的首选方式。 关于 openEuler 22.03 LTS SP4 下载地址&#xff1a; https://www.openeuler.org/zh/dow…

【接口自动化_06课_Pytest+Excel+Allure完整框架集成】

一、logging在接口自动化里的应用 1、设置日志的配置&#xff0c;并收集日志文件 日志的设置需要在pytest.ini文件里设置。这个里面尽量不要有中文 2、debug日志的打印 pytest.ini文件的开关一定得是true才能在控制台打印日志 import allure import pytest from P06_PytestFr…

Java中实现一维数组逆序交换的完整解决方案

引言 ❤❤点个关注吧~~编程梦想家&#xff08;大学生版&#xff09;-CSDN博客 在日常编程中&#xff0c;处理数组时经常会遇到需要逆序交换数组元素的情况。逆序交换即是将数组的第一个元素与最后一个元素交换&#xff0c;第二个元素与倒数第二个元素交换&#xff0c;依此类推…

HCIA学习笔记(6)-ACL+NAT

ACL&#xff1a;访问控制列表 访问控制-------在路由器的入或者出接口上&#xff0c;匹配流量&#xff0c;之后产生动作-----只有允许或拒绝 定义感兴趣流量------帮助其他策略去抓流量 匹配规则&#xff1a;至上而下&#xff0c;逐一匹配&#xff0c;上条匹配按照上条执行&…

JavaSE——集合框架二(4/6)-Map集合的遍历方式(键找值,键值对,Lambda)、Map集合案例(需求与分析,问题解决)

目录 Map集合的遍历方式 键找值 键值对 Lambda Map集合案例 需求与分析 问题解决 Map集合的遍历方式 键找值 先获取Map集合全部的键&#xff0c;再通过遍历键来找值。 键值对 把“键值对”看成一个整体进行遍历&#xff08;较为复杂&#xff09; Lambda JDK 1.8 开…

Cadence23学习笔记(二)

原理图设计界面中就可以直接新建PCB: 亲测&#xff1a;需要画完原理图&#xff0c;并且DRC通过之后才可以&#xff01; 放置完元器件之后要规定元件的Footprint &#xff0c;注意PCB封装名要和库文件中的名字对应&#xff1a; DRC按钮&#xff1a; 点击图标 N, 生成第一网表&…

MAVSDK动态库与静态库及mavsdk_server程序macOS平台编译与安装

1.克隆mavsdk: git clone https://github.com/mavlink/MAVSDK.git --recursive 2.编译静态库 cmake -Bbuild/default -H. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF 生成makefile 生成成功,开始编译 cmake --build build/default -j8 成功生成libmavsdk.a 开…

给老笔记本安装双系统,太难了(centos+win10)记录一下过程

为什么要装个centos呢&#xff1f; 大学时期的笔记本&#xff0c;一直在吃灰&#xff0c;开机都卡。于是想废物利用一下&#xff0c;做个linux服务器玩&#xff0c;但是也不想直接删除win10&#xff0c;于是就开始开始装双系统。工作中的服务器基本都是centos的&#xff0c;所…

笔记 2 :linux 0.11 中的重要的全局变量 (a)

通过对全局变量的了解&#xff0c;也有助于了解整个代码的逻辑。就跟学习类一样&#xff0c;了解类有哪些成员变量&#xff0c;也有助于了解类的成员函数的功能。 以下介绍全局变量的顺序&#xff0c;符合这两本书的讲解顺序&#xff1a; &#xff08;1&#xff09;内存初始化相…