首页 > 编程语言 >python 入门之机器学习

python 入门之机器学习

时间:2023-07-12 11:14:54浏览次数:43  
标签:分数 机器 入门 python 标签 学习 监督 计算机

一、什么是机器学习

什么是机器学习?机器学习其实就是想让计算机像人一样思考而研发出的计算机理论,目前常用的机器学习有以下几种算法:

  • 监督学习 supervised learning;
  • 非监督学习 unsupervised learning;
  • 半监督学习 semi-supervised learning;
  • 强化学习 reinforcement learning;

监督学习是不断向计算机提供数据(特征),并告诉计算机对应的值(标签),最后通过大量的数据,让计算机自己学会判断和识别。例如Google Photo,你在APP中输入狗,这时就会弹出与狗相关的图片,这背后使用的算法就是监督学习。通过告诉计算机狗长什么样(特征),最后教会计算机认识狗(标签)。再比如今日头条,你使用APP的时间越长,给你推送的内容就越是你平时感兴趣的内容。通过对用户平时日常使用数据(特征)的分析,找到用户的兴趣爱好(标签),进而更精准的推送内容。

非监督学习与监督学习的区别是,只向计算机提供数据(特征),但并不提供对应的值(标签)。例如需要计算机学会识别猫和狗,这时仅提供猫和狗的图片(特征),但是并不告诉计算机,哪些图片是猫,哪些图片是狗,让计算机自己去总结归纳出两者的特征规律。

半监督学习是综合了监督学习和非监督学习两者的特点,利用少量有标签的样本,和大量没有标签的样本对计算机进行训练。

强化学习是将计算机放入一个陌生的环境中,让它自己去学习,其中包含了4个关键要素,分别是环境(environment)、状态(state)、行动(action)和奖励(reward)。例如要设计一款自动投篮机器,首先让机器自己去选择投篮的角度、力度等动作进行尝试,告诉机器如果投篮命中便能获得奖励,之后机器会根据练习所产生的数据,不断修改自身的动作策略,经过数次迭代之后,学习并完成投篮任务。战胜李世石的AlphaGo,所使用的就是强化学习。强化学习与监督学习和非监督学习最大的不同是,不需要使用海量的数据去“喂养”机器,而是通过不断地尝试去获取数据。

使用Python进行机器学习时,都会用到一个非常强大的第三方包,那就是scikit-learn。具体安装方法可参考之前写的文章,Python入门之Anaconda与Jupyter Notebook

Sklearn包含了四类算法,分别是回归(regression)、分类(classification)、聚类(clustering)和降维(dimensionality reduction)。其中回归和分类是监督式学习,下面使用Python对简单线性回归和逻辑回归分类进行简要介绍。

二、简单线性回归

线性回归(linear regression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归

简单线性回归方程其实就像我们初中学习的二元一次方程:y=a+bx

其中a称作截距,b称作回归系数,x为自变量,y为因变量。

简单线性回归分析通常包含以下步骤:

  • 提出问题
  • 理解数据
  • 数据清洗
  • 构建模型
  • 评估模型

1.提出问题

假设现在提出一个问题,通过收集学生学习时间和分数,得出学习时间与分数之间的相关关系,其中特征为学习时间,标签为分数。

2.理解数据

采集所需的数据,并导入Python。

import pandas as pd
examDict = { '学习时间':[0.50,0.75,1.00,1.25,1.50,1.75,1.75,2.00,2.25,
            2.50,2.75,3.00,3.25,3.50,4.00,4.25,4.50,4.75,5.00,5.50],
    '分数':[10,  22,  13,  43,  20,  22,  33,  50,  62,  
              48,  55,  75,  62,  73,  81,  76,  64,  82,  90,  93]}
examDf = pd.DataFrame(examDict)
print(examDf.head())
学习时间  分数
0  0.50  10
1  0.75  22
2  1.00  13
3  1.25  43
4  1.50  20
#提取特征和标签
#特征features
exam_X=examDf.loc[:,'学习时间']
#标签labes
exam_y=examDf.loc[:,'分数']

#绘制散点图
import matplotlib.pyplot as plt
plt.scatter(exam_X,exam_y,color='b',label='exam data')
#添加图标标签
plt.xlabel('Hours') #X轴命名
plt.ylabel('Score') #Y轴命名

print(plt.show())

 通过观察上面的散点图,我们可以对相关性做出初步的分析。相关性通常有3种情况,正线性相关、负线性相关和非线性相关。当线性回归方程中的回归系数b大于0,即直线朝上时,为正线性相关,回归系数b小于0,即直线朝下时,为负线性相关。我们还可以通过计算相关系数r,对相关性大小进行判断。

#计算相关系数r
rDf = examDf.corr()
print('相关系数矩阵:\n',rDf)
print('相关系数r=',rDf.iloc[0,1])
相关系数矩阵:
           学习时间        分数
学习时间  1.000000  0.923985
分数    0.923985  1.000000
相关系数r= 0.9239852119728443

参考地址:https://zhuanlan.zhihu.com/p/108515480

标签:分数,机器,入门,python,标签,学习,监督,计算机
From: https://www.cnblogs.com/ckfuture/p/17546887.html

相关文章

  • python的pandas库读取SQL sever
    python的pandas库读取SQLsever有两种方法。一种使用pymssql,另一种使用sqlalchemy。只是将数据库中的表读为DataFrame,不进行修改等表操作。目录• python的pandas库读取SQLsever有两种方法。一种使用pymssql,另一种使用sqlalchemy。这里只是将数据库中的表读取为DataFrame,不进......
  • python 常用快捷键
    python常用快捷键最重要的快捷键ctrl+shift+A:万能命令行shift两次:查看资源文件新建工程第一步操作module设置把空包分层去掉,compactemptymiddlepackage设置当前的工程是utf-8,设置的Editor-->FileEncodings-->全部改成utf-8,注释ctrl+/:单行注释光标操作ctrl+a......
  • mybatis快速入门
    MyBatis快速入门1.创建User表,添加数据2.创建模块,导入坐标pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"......
  • Python 学习路线图
    Python学习路线图在这个系列笔记中,我将陆续整理自己在学习Python编程语言及其框架的过程中留下的笔记和代码,目的是掌握如何在生产环境中利用各种领域的第三方框架来快速开发应用程序。和大多数学习过程一样,我需要在第一部分笔记中花费一点篇幅来鸟瞰一下Python语言所涉及的......
  • 【NestJS系列】从Nest CLI开始入门
    初识NestJSNest是一个渐进的Node.js框架,它可以在TypeScript和JavaScript(ES6、ES7、ES8)之上构建高效、可伸缩的企业级服务器端应用程序。Nest基于TypeScript编写并且结合了OOP(面向对象编程),FP(函数式编程)和FRP(函数式响应编程)的相关理念。在设计上的很多灵感来自于......
  • 一体化元数据管理平台——OpenMetadata入门宝典
    大家好,我是独孤风,一位曾经的港口煤炭工人,目前在某国企任大数据负责人,公众号大数据流动主理人。在最近的两年的时间里,因为公司的需求,还有大数据的发展趋势所在,我开始学习数据治理的相关知识。今天给大家分享一体化的元数据管理平台——OpenMetadata。本文档基于官网及个人实践资料......
  • 玩转Python正则表达式:实用教程带你快速入门
    引言正则表达式是一种强大的文本匹配和处理工具,广泛应用于各种编程语言中。在Python中,我们可以使用内置的re模块来处理正则表达式。本文将带您从入门到精通,逐步介绍Python中的正则表达式用法,并提供实例演示。1.正则表达式基础1.1什么是正则表达式正则表达式是一种用于描述和......
  • python内置os库
    1.目录不存在即创建importosdirs='./file_test/media_test/'ifnotos.path.exists(dirs):#判断文件和文件夹都可以os.makedirs(dirs)ifos.path.isfile("filename.txt"):pass#可只用来判断文件是否存在importosifnotos.path.exists('foldername'......
  • python tk增加菜单项的便捷封装
    TK增加菜单项的编码是比较复杂的,为方便使用,我做了一下封装,用户使用场景:root=tk.Tk()AddMenuItem(root,'File.New.Close',lambda:print('111'))AddMenuItem(root,'File.Hzq',lambda:print('abc'))root.mainloop()实现源码:'''Tk扩展'�......
  • python - 类
    1.类classDog: """一次模拟小狗的简单尝试。""" def__init__(self,name,age):#当根据Dog类创建实例时,python会自动运行__init__()方法。 """初始化属性name和age""" self.name=name#属性。以self.为前缀的变量可供类中所有方......