一、什么是机器学习
什么是机器学习?机器学习其实就是想让计算机像人一样思考而研发出的计算机理论,目前常用的机器学习有以下几种算法:
- 监督学习 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