python线性回归分析看相关性_机器学习⼊门:相关性分析之
线性回归
⼀、前⾔
机器学习--特征与标签 : 输⼊模型的属性是“特征”,输出的是“标签”
机器学习的核⼼是“使⽤算法解析数据,从中学习,然后对世界上的某件事情做出决定或预测”。
这意味着,与其显式地编写程序来执⾏某些任务,不如教计算机如何开发⼀个算法来完成任务。有三种主要类型的机器学习:监督学习、⾮监督学习和强化学习,所有这些都有其特定的优点和缺点。监督学习涉及⼀组标记数据。计算机可以使⽤特定的模式来识别每种标记类型的新样本。监督学习的两种主要类型是分类和回归。在分类中,机器被训练成将⼀个组划分为特定的类。分类的⼀个简单例⼦是电⼦邮件帐户上的垃圾邮件过滤器。过滤器分析你以前标记为垃圾邮件的电⼦邮件,并将它们与新邮件进⾏⽐较。如果它们匹配⼀定的百分⽐,这些新邮件将被标记为垃圾邮件并发送到适当的⽂件夹。那些⽐较不相似的电⼦邮件被归类为正常邮件并发送到你的邮箱。
第⼆种监督学习是回归。在回归中,机器使⽤先前的(标记的)数据来预测未来。天⽓应⽤是回归的好例⼦。使⽤⽓象事件的历史数据(即平均⽓温、湿度和降⽔量),你的⼿机天⽓应⽤程序可以查看当前天⽓,
并在未来的时间内对天⽓进⾏预测。
在⽆监督学习中,数据是⽆标签的。由于⼤多数真实世界的数据都没有标签,这些算法特别有⽤。⽆监督学习分为聚类和降维。聚类⽤于根据属性和⾏为对象进⾏分组。这与分类不同,因为这些组不是你提供的。聚类的⼀个例⼦是将⼀个组划分成不同的⼦组(例如,基于年龄和婚姻状况),然后应⽤到有针对性的营销⽅案中。降维通过到共同点来减少数据集的变量。⼤多数⼤数据可视化使⽤降维来识别趋势和规则。
最后,强化学习使⽤机器的个⼈历史和经验来做出决定。强化学习的经典应⽤是玩游戏。与监督和⾮监督学习不同,强化学习不涉及提
供“正确的”答案或输出。相反,它只关注性能。这反映了⼈类是如何根据积极和消极的结果学习的。很快就学会了不要重复这⼀动作。同样的道理,⼀台下棋的电脑可以学会不把它的国王移到对⼿的棋⼦可以进⼊的空间。然后,国际象棋的这⼀基本教训就可以被扩展和推断出来,直到机器能够打(并最终击败)⼈类顶级玩家为⽌。
机器学习是⼈⼯智能的⼀个分⽀。机器学习使⽤特定的算法和编程⽅法来实现⼈⼯智能。⼈⼯智能致⼒于创造出⽐⼈类更能完成复杂任务的机器。这些任务通常涉及判断、策略和认知推理,这些技能最初被认为是机器的“禁区”。虽然这听起来很简单,但这些技能的范围⾮常⼤——语⾔处理、图像识别、
规划等等。
⼈⼯神经⽹络算法基于⽣物神经⽹络的结构,深度学习采⽤神经⽹络模型并对其进⾏更新。它们是⼤、且极其复杂的神经⽹络,使⽤少量的标记数据和更多的未标记数据。神经⽹络和深度学习有许多输⼊,它们经过⼏个隐藏层后才产⽣⼀个或多个输出。这些连接形成⼀个特定的循环,模仿⼈脑处理信息和建⽴逻辑连接的⽅式。此外,随着算法的运⾏,隐藏层往往变得更⼩、更细微。
深度学习是机器学习的⼀个⼦集,专注于模仿⼈类⼤脑的⽣物学和过程。⽬的是模仿⼈脑的思维过程,经常⽤于图像和语⾳识别。
(以上内容,了解即可)
⼆、机器学习步骤
(⼀)提出问题
⼀切机器学习的⽬标都是为了解决⽣活中的实际问题,只有明确要研究的问题才能提供⽅向。
(⼆)理解数据
这包括三⽅⾯:
采集数据:根据相关内容采集数据;
导⼊数据:我们拿到的数据可能在Excel、⽹络、或者数据库中,需将这些数据导⼊到Python数据结构中,如读取数据到数据框中;
查看数据集信息:如描述统计信息,从整体上了解数据。
(三)数据清洗导轨滑块怎么拆
即数据预处理,从数据集中提取想要的特征信息。
(四)构建模型
⽤ 训练数据来构建模型,即将上⼀步提取的数据特征放⼊机器学习算法中来构建模型。
如何使用c语言的input函数(五)评估模型
⽤ 测试数据 来评估模型的准确性,看模型预测效果如何。
(六)⽅案实施
将分析结果⽤分析报告进⾏汇报,若为kaggle项⽬,要将预测结果放到kaggle中即看到排名
三、Python机器学习包(sklearn)
Python中有⼀个专门的机器学习包---scikit-learn,简称sklearn,没有安装的可以在终端 conda install scikit-learn 安装这个机器学习
包。安装机器学习包
四、相关性分析
备注:鉴于相关性分析的理论知识,在《深⼊浅出统计学》的第⼗五章 线性与回归 中讲得很简洁易懂,以下摘抄部分!
(⼀)概念浅析
单变量数据考虑的是⼀个单⼀变量的频数或概率。例如:单变量数据可以描述收益。
cstring类型单变量数据⽆法显⽰多组数据之间的关系。如果需要了解不同变量之间的关系,需⽤另⼀种类型的数据——⼆变量数据。
对于每⼀个观察结果,⼆变量数据给出两个变量数值。如果其中⼀个变量以某种⽅式受到控制,或者
被⽤来解释另⼀变量,则这个变量被称为⾃变量或解释变量,另⼀个变量则被称为因变量或者反应变量。
气象python零基础入门教程绘制⼆变量数据图形,以x轴描述⼀个变量,以y轴描述另⼀个相应变量。借助这种图可以体现两个变量之间的关系。这种图叫做散点图或散布图。
#导⼊collections中的OrderedDict函数
from collections import OrderedDict
import pandas as pd
import matplotlib.pyplot as plt
#数据集
examDict={'学习时间':[0.5,0.75,1.00,1.25,1.5,1.75,1.75,2.00,2.25,2.50,2.75,3.00,3.25,3.5,4.00,4.25,4.5,4.75,5.00,5.5],
'分数':[10,22,13,43,20,22,33,50,62,48,55,75,62,73,81,76,64,82,90,93]}
examOrderDict = OrderedDict(examDict)
examDf = pd.DataFrame(examOrderDict)
# 设置成微软雅⿊,⽀持中⽂显⽰
# 1.创建画布
plt.figure(figsize=(20,8),dpi=80)
plt.xlabel('学习时间')
plt.ylabel('分数')
plt.title('学习时间和分数之间的关系')
# 2.绘制图像
plt.scatter(examDf['学习时间'],examDf['分数'])
# 3.显⽰图像
plt.show()散点图案例代码散点图效果
上图中,通过复习时间来预测成绩,所以,“学习时间”是数据的特征(也称⾃变量或解释变量);“分数”是数据的标签(也称因变量);
散点图的作⽤在于能体现数据的实际模式,通过散点图,可以愈发清晰的勾勒出两个变量之间的关系。数据散点图显⽰出⼀种独特的模式——数据点呈现直线分布,我们将这种现象称为相关。散点图显⽰出数据对之间的相关性。
相关性即变量之间的数据关系,通过散点图上的点的独特构成模式,可以识别出散点图上的各种相关性。如果散点图上的点⼏乎呈现直线分
布,则相关性为线性。相关性的⼏种类型 - 15章
注意:相关性度量的是线性关系,但并不是所有关系都是线性的。
(⼆)最佳拟合线
如何⽤散点图进⾏预测呢?⽤最佳拟合线预测数值。
最佳拟合线,即,在散点图上画⼀条穿过这些点的直线,使这些直线尽量接近各个点。你⽆法令这条直线穿过每⼀个点,不过,若存在线性相关性,则应该可以保证每⼀个点合理地接近你所绘制的直线。能更好地接近所有数据点的线被称为最佳拟合线。
但是,⽤这种⽅法画出的线只是⼀种最佳猜测。⽤上述⽅法绘制图线的问题在于:这只是⼀个估计,因此根据这条线做出的任何预测值都值得怀疑。你没有什么精确的⽅法量度这条线是否是最佳匹配线。这条线具有主观性,这条线的拟合质量取决于你的判断。因此,我们需要使⽤数学或统计⽅法出最佳拟合线,将误差最⼩化。
误差平⽅和:取各个数值y,减去最佳拟合线得出的y的预测值,求其平⽅,然后将所有平⽅数加起来。
y = ax + b中的b代表这条直线的斜率,或者陡度,即b是最佳拟合线的斜率。
我们⽤于求出最佳拟合线的数学⽅法称为最⼩⼆乘回归法。
最⼩⼆乘回归法是⼀种数学⽅法,可⽤⼀条最佳拟合线将⼀组⼆变量数据拟合,通过公式为y=ax+b的⼀条直线与⼀组数值相拟合,使得误差平⽅和最⼩——即,使得实际数值与这些数值的估计值之间的差值最⼩。
直线y=ax+b被称为回归线。important汉语意思
注:在预测⼀个特定x值对应的y值时,要避免对已知数据点范围以外的值进⾏预测。线性回归法只是根据⼿头拥有的信息进⾏估计的⼀种⽅法,它体现了已知了各个数据点之间的关系,这并不表⽰也适⽤于数据限值以外的范围。
(三)验证(相关系数)
直线 y=ax+b 是我们能够得出的最佳拟合线,但若以它为模型描述⼆变量之间的关系,需考虑:回归线的相关性强度。⽬的在于:根据已知条件得出的期望结果到底有多⼤的精确性。
1、概念
⽤相关系数,衡量直线与数据的拟合度。
相关系数是介于-1和1之间的⼀个数,描述了各个数据点与直线的偏离程度。通过它可以量度回归线与数据的拟合度,说明两个变量之间的
相关性的强弱程度,通常⽤字母r表⽰。
2、相关系数r的 3种 极值情况:
r=-1,完全负线性相关。
r=0,不存在相关性,但是可能存在其他关系。
r=1,完全正线性相关。
3、⽤Python实现相关系数 (correlation)
使⽤ pandas 中数据框的 corr() 可以得到2个变量的相关性系数,并返回与数据框,数据框⾥⾯存放的是相关系数矩阵。
#导⼊collections中的OrderedDict函数
from collections import OrderedDict
import pandas as pd
#数据集
examDict={'学习时间':[0.5,0.75,1.00,1.25,1.5,1.75,1.75,2.00,2.25,2.50,2.75,3.00,3.25,3.5,4.00,4.25,4.5,4.75,5.00,5.5],
'分数':[10,22,13,43,20,22,33,50,62,48,55,75,62,73,81,76,64,82,90,93]}
examOrderDict = OrderedDict(examDict)
examDf = pd.DataFrame(examOrderDict)
# ⽤ pandas实现相关系数
rDf = ()
print(rDf)
上图中“学习时间”和“分数”之间的相关系数为0.92,说明两者有很强的相关性,1指的是变量与⾃⾝的相关系数是1
之所以⽤相关系数矩阵来表⽰相关系数,是因为⼀个可以通过矩阵⾥⾯的数直接到对应拿两个变量之间的关系。
五、实战案例:⽤Python实现简单线性回归(linear regression--线性回归)
(⼀)将数据拆分成 训练数据 和 测试数据
提取特征和标签后,因为需要保留⼀部分测试数据来验证模型的好坏,所以的通过 train_test_split 函数,按要求⽐例(80%和20%)随机地分割出:训练数据和测试数据(按规则命名区分出:特征和标签、训练数据和测试数据)
#导⼊collections中的OrderedDict函数
from collections import OrderedDict
import pandas as pd
import matplotlib.pyplot as plt
#数据集
examDict={'学习时间':[0.5,0.75,1.00,1.25,1.5,1.75,1.75,2.00,2.25,2.50,2.75,3.00,3.25,3.5,4.00,4.25,4.5,4.75,5.00,5.5],
'分数':[10,22,13,43,20,22,33,50,62,48,55,75,62,73,81,76,64,82,90,93]}
examOrderDict = OrderedDict(examDict)
examDf = pd.DataFrame(examOrderDict)
# ⼀、将数据拆分成训练数据和测试数据
# 1.1、提取特征和标签
# 特征 features
exam_x = examDf.loc[:,'学习时间']
# 标签 labels
exam_y = examDf.loc[:,'分数']
# print(exam_x,exam_y)
# 1.2、导⼊机器学习中的函数train_test_split
del_selection import train_test_split
# 1.3、建⽴训练数据和测试数据
X_train,X_test,Y_train,Y_test = train_test_split(exam_x,exam_y,train_size=0.8)
# 输出数据⼤⼩
print('原始数据特征:',exam_x.shape,'训练数据特征:',X_train.shape,'测试数据特征:',X_test.shape) print('原始数据特征:',exam_y.shape,'训练数据特征:',Y_train.shape,'测试数据特征:',Y_test.shape) # ⽤散点图查看数据拆分的结果
# 设置成微软雅⿊,⽀持中⽂显⽰
# 1.创建画布
plt.figure(figsize=(20,8),dpi=80)
plt.xlabel('学习时间')
plt.ylabel('分数')
plt.title('学习时间和分数之间的关系')
# 2.绘制图像
plt.scatter(X_train,Y_train,color='b',label='训练数据')
plt.scatter(X_test,Y_test,color='r',label='测试数据')
# 显⽰图例
往年计算机二级真题及答案# plt.legend(loc='upper left')
plt.legend(loc=2)
# 3.显⽰图像
plt.show()
X_train 为训练数据标签,X_test 为测试数据标签
Y_train 为训练数据特征,Y_test 为测试数据特征
exam_x 为原始数据特征,exam_y 为原始数据标签
train_size=0.8表⽰训练数据占数据集的80%
⽤散点图查看数据拆分的结果:
# ⽤散点图查看数据拆分的结果
# 设置成微软雅⿊,⽀持中⽂显⽰
# 1.创建画布
plt.figure(figsize=(20,8),dpi=80)
plt.xlabel('学习时间')
plt.ylabel('分数')
plt.title('学习时间和分数之间的关系')
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论