如何⽤python进⾏相关性分析_使⽤Python进⾏相关分析学习⼀、机器学习⼊门的⼏个简单概念
1、定义
根据定义,机器学习定义为“机器学习是近20多年兴起的⼀门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。机器学习理论主要是设计和分析⼀些让计算机可以⾃动“学习”的算法。机器学习算法是⼀类从数据中⾃动分析获得规律,并利⽤规律对未知数据进⾏预测的算法。”
⼀般来说,各⼤app的内容推荐就是机器学习中的⼀种。这些软件通过获取我们听歌的曲风、时长、节奏或者浏览的物品类别、评价好坏等来获取我们的⼀些使⽤习惯,把这些使⽤习惯统称为特征,这些特分别具有对应的标签;然后后台会将获取来的数据(特征和标签)进⾏机器学习,得出⼀个模型,当我们再次登陆这类软件时,后台则会向我们推送我们可能感兴趣的内容。此外,后台获取的数据越多,模型的准确性越⾼,推荐的内容更符合我们⼝味。
2、机器学习的步骤
机器学习的具体步骤:提出问题、理解数据、数据清洗、构建模型、评估。
3、特征与标签
⽐如我们要分析⼈们对某⾸歌的喜恶。
特征:特征就是数据的属性,如⼀⾸歌的诸多特征:语⾔、节奏、风格、时长等,也就是我们输⼊的数据。
标签:标签是我们对数据的预测结果,对⼀⾸歌的喜恶就是标签,标签就是机器学习算法的输出结果。
4、训练数据、测试数据
训练数据(train dataset)指的是,你拿来建模型的数据,拟合数据⽤。
验证数据(valid dataset)指的是,你拿来挑模型的数据,因为训练数据可以训练很多个模型,你⽤验证数据来挑⼀个最好的。
测试数据(test dataset)是指,你挑完最好的了,要看你模型的泛化能⼒,就要⽤到这个验证数据了。
原则上,当你的模型在三个数据集上的表现差不多时,就说明你的模型⽐较稳健(robust)。当然,⼤多数情况都会有点过拟合,也就是在训练数据很好,在验证数据⼀般,在测试数据⽐较糟糕。
⼆、简单线性回归
1、⼏个基础概念
简单线性回归:根据数据,采⽤⼀定统计⽅法来建⽴⼀个表⽰变量之间相互关系的⽅程,这⼀统计⽅法称为回归分析。⽽最简单类型的回归分析只包括⼀个⾃变量和⼀个因变量,⼆者之间的关系可以⽤⼀条直线来近似表⽰,即简单线性回归。
协⽅差:公式为cov(X,Y)=E[(X-E[X])(Y-E[Y])]。功能:1)统计量的正负可表⽰相关性⽅向;2)统计量⼤⼩表⽰相关性的⼤⼩。
相关系数:公式为相关系数r=cov(X,Y)/
*
;功能:1)统计量的正负可表⽰相关性⽅向 ;2)统计量每单位的相关性⼤⼩,消除了量级的影响。
最佳拟合线:在散点图上画⼀条穿过这些点的直线,使这条线尽量接近各个点。你⽆法令这条直线穿过每⼀个点,不过,若存在线性相关性,则应该可以保证每⼀个点合理地接近你所绘制的直线。能最好地接近所有数据点的线被称为最佳拟合线。我们称之为回归⽅程y=a+bx,其中a为截距,b为回归系数。
相关性是变量之间的数学关系,但并不意味着⼀个变量⼀定与另⼀个变量为因果相关。
2、使⽤Python计算相关系数
2.1 建⽴数据集
from collections import OrderedDict
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]
}
examOrderDict=OrderedDict(examDict)
examDf=pd.DataFrame(examOrderDict) 2.2 计算相关系数
#提取特征和标签
#特征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")
plt.ylabel("Score")
#显⽰图像
plt.show()
#相关系数:corr返回结果是⼀个数据框,存放的是相关系数矩阵
()
print('相关系数矩阵:')
rDf
3、使⽤Python实现线性回归
3.1、提取特征和标签
#特征features
exam_X=examDf.loc[:,'学习时间']
#标签labes
exam_y=examDf.loc[:,'分数']
3.2、建⽴训练数据和测试数据
'''
train_test_split是交叉验证中常⽤的函数,功能是从样本中随机的按⽐例选取训练数据(train)和测试数据(test)
第1 个参数:所要划分的样本特征
第2个参数:所要划分的样本标签
train_size:训练数据占⽐,如果是整数的话就是样本的数量
'''
del_selection import train_test_split
#建⽴训练数据和测试数据
X_train , X_test , y_train , y_test = train_test_split(exam_X ,
exam_y ,
train_size = .8)
#输出数据⼤⼩
print('原始数据特征:',exam_X.shape ,
',训练数据特征:', X_train.shape ,
',测试数据特征:',X_test.shape )
print('原始数据标签:',exam_y.shape ,
'训练数据标签:', y_train.shape ,
'测试数据标签:' ,y_test.shape)
#绘制散点图
import matplotlib.pyplot as plt
#散点图
plt.scatter(X_train, y_train, color="blue", label="train data")
plt.scatter(X_test, y_test, color="red", label="test data")
#添加图标标签
plt.legend(loc=2)
plt.xlabel("Hours")
plt.ylabel("Score")
#显⽰图像
plt.show()
3.3、使⽤训练数据训练模型
#将训练数据特征转换成⼆维数组XX⾏*1列
X_train=X_shape(-1,1)
#将测试数据特征转换成⼆维数组⾏数*1列
X_test=X_shape(-1,1)
#第1步:导⼊线性回归
from sklearn.linear_model import LinearRegression
# 第2步:创建模型:线性回归
model = LinearRegression()
#第3步:训练模型
model.fit(X_train , y_train)
'''
最佳拟合线:z= + x
截距intercept:a
回归系数:b
'''
#截距
a=model.intercept_
#回归系数
f_
print('最佳拟合线:截距a=',a,',回归系数b=',b) #绘图
import matplotlib.pyplot as plt
#训练数据散点图
plt.scatter(X_train, y_train, color='blue', label="train data")
#训练数据的预测值
y_train_pred = model.predict(X_train)
#绘制最佳拟合线
plt.plot(X_train, y_train_pred, color='black', linewidth=3, label="best line")
#添加图标标签
plt.legend(loc=2)
plt.xlabel("Hours")
plt.ylabel("Score")
#显⽰图像
plt.show()
#线性回归的scroe⽅法得到的是决定系数R平⽅
#score内部会对第⼀个参数X_test⽤拟合曲线⾃动计算出y预测值,内容是决定系数R平⽅的计算过程。
#所以只⽤根据他的要求输⼊参数即可。
#评估模型:决定系数R平⽅
model.score(X_test , y_test)
#导⼊绘图包
能运行python的软件import matplotlib.pyplot as plt
#第1步:绘制训练数据散点图
plt.scatter(X_train, y_train, color='blue', label="train data")
#第2步:⽤训练数据绘制最佳线
#最佳拟合线训练数据的预测值
y_train_pred = model.predict(X_train)
#绘制最佳拟合线:标签⽤的是训练数据的预测值y_train_pred
plt.plot(X_train, y_train_pred, color='black', linewidth=3, label="best line")
#第3步:绘制测试数据的散点图
plt.scatter(X_test, y_test, color='red', label="test data")
#添加图标标签
plt.legend(loc=2)
plt.xlabel("Hours")
plt.ylabel("Score")
#显⽰图像
plt.show()
三、逻辑回归
定义:逻辑回归本质上是⼀种⽤于解决⼆分分类问题,即分类的结果标签只有两个的问题的机器学习⽅法,其本质是⼀个决策⾯,⽽机器学习模型可以将这样⼀个特征和标签转化为这样⼀个决策⾯。
1、利⽤Python进⾏逻辑回归分析
通过⼀个简单案例来进⾏Python上逻辑回归分析的演练,即探索学⽣学习时间与最终能否通过考试之间的的关系。其最后的结果标签只有两个,即为通过或者不通过,因此可以考虑采⽤逻辑回归分析的
⽅法完成。
1.1 建⽴数据集
from collections import OrderedDict
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],
'通过考试':[0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1]

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。