python相关性分析特征过滤_Python相关性分析
导言机器学习的步骤
1)提出问题 :一切的机器学习目标都是为了解决生活或工作的实际问题
2)理解数据 :
采集数据(根据研究问题采集相关数据)
导入数据(数据从Excel、数据库、网络中导入到Phython的数据结构中)
查看数据集信息(包括描述统计信息,从整体上理解数据)
3)数据清洗(预处理):提取出我们想要的特征的信息
4)构建模型:用训练数据来构建,将第三步提取的特征放入机器学习算法中构建模型。机器学习中最核心的就是机器学习算法。
5)评估:对模型进行评估,通过测试数据来评估模型的准确性,来测试下模型的预测效果如何。机器学习中两个重要的概念
1)特征:数据的属性
2)标签:对数据的预测结果Python中用于机器学习的包:sklearn(包括了机器学习常用的算法)
Part I 简单线性回归
本部分需要了解的概念
实例
步骤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)
examDf.head() #查看
步骤2.提取特征和标签
#特征features
exam_X=examDf.loc[:,'学习时间']
#标签labes
exam_y=examDf.loc[:,'分数']
步骤3.绘制散点图
#绘制散点图
import matplotlib.pyplot as plt
#散点图
plt.scatter(exam_X, exam_y, color="blue", label="exam data")
#添加图标标签
plt.xlabel("Hours")
plt.ylabel("Score")
#显示图像
plt.show()
步骤4.建立训练数据和测试数据
#选取数据--利用train_test_split函数,随机从数据中按比例抽取训练数据和测试数据
from sklearn.model_selection import train_test_split
#建立训练数据和测试数据
X_train,X_test,y_train,y_test=train_test_split(exam_X,
exam_y,
train_size=.8)
'''代码解释:训练数据标签,测试数据标签,训练数据特征,测试数据特征=train_test_split函数(样本特征,样本标签,训练数据占比)'''
#输出数据大小
print('原始数据特征',exam_X.shape,
'训练数据特征',X_train.shape,
'测试数据特征',X_test.shape)
print('原始数据标签',exam_X.shape,
'训练数据标签',y_train.shape,
'测试数据标签',y_test.shape)
步骤5.绘制散点图
#导入工具包
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) #loc--location 图例的位置 ,loc=2就是upper left
plt.xlabel("Hours")
plt.ylabel("Score")
#显示图像
plt.show()
#计算相关系数:corr返回结果是一个数据框,存放的是相关系数矩阵
rDf=examDf.corr()
print('相关系数矩阵:')
rDf
!!! 运行报错问题解决
#导入线性回归
from sklearn.linear_model import LinearRegression
#构建模型:线性回归
model=LinearRegression()
# 训练模型
model.fit(X_train,y_train)
'''
ValueError: Expected 2D array, got 1D array instead:
array=[1.25 1.75 2.25 4. 1.5 3. 0.75 5. 2. 2.75 3.5 1. 4.5 2.5
4.25 0.5 ].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature
or array.reshape(1, -1) if it contains a single sample.
'''
翻译:如果你输入的数据只有1个特征,需要用array.reshape(-1, 1)来改变数组的形状
#什么是arry.reshape(-1,1)
##定义2行*3列的数组
import numpy as np
aArr = np.array([
[1, 2, 3],
[5, 6, 7]
])
aArr.shape
输出结果: (2, 3)
##改变数组成为3行*2列
bArr=aArr.reshape(3,2)
bArr.shape
输出结果: (3, 2)
'''
reshape后面的参数是什么?
如果列的参数是-1,写成reshape(行数,-1),则会根据所给的行数,自动按照原始数组的大小形成一个新的数组,
如果列的参数是-1,写成reshape(-1,列数),则会根据所给的列数,自动按照原始数组的大小形成一个新的数组
'''
dArr=aArr.reshape(3,-1)
dArr.shape
dArr
输出结果:
array([[1, 2],
[3, 5],
[6, 7]])
dArr=aArr.reshape(-1,3)
dArr.shape
dArr
输出结果:
array([[1, 2, 3],
[5, 6, 7]])
!!!调整错误代码
#将训练数据特征转换成二维数组XX行*1列
X_train=X_train.values.reshape(-1,1)
#将测试数据特征转换成二维数组行数*1列
X_test=X_test.values.reshape(-1,1)
步骤6.训练模型-最佳拟合线
训练模型:训练数据的特征和标签--输入-->模型:线性回归--输出-->回归结果
'''
训练模型
'''
#第1步:导入线性回归
from sklearn.linear_model import LinearRegression
# 第2步:创建模型:线性回归
model = LinearRegression()
# 第3步:训练模型
model.fit(X_train,y_train)
'''
回归方程:y=a+bx
'''
#截距
a=model.intercept_
#回归系数
b=model.coef_
print('最佳拟合线:截距a=',a,'回归系数b=',b)
输出结果:
最佳拟合线:截距a= 5.936950904392781 回归系数b= [16.90129199]
'''
绘图
'''
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")
#训练数据的预测值
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()
步骤7.模型评估
测试数据--输入-->模型:逻辑回归算法--输出--预测结果
#模型精准度评估--决定系数R²
model.score(X_test,y_test)
线性回归模型的决定系数R²≈97.6%,准确度很高。
Part II 逻辑回归逻辑回归其实不是回归算法,是一个分类算法,是一个用于二分分类的算法。二分分类是指我们的分类结果标签只有两个。
逻辑函数是逻辑回归的关键。逻辑函数y表示当分类的结果等于1时x对应的概率值。决策面的规则是当逻辑函数计算出的概率在0.5-1之间,则标签等于1;如果计算出的概率在0-0.5之间,则标签为0.
一般的,将原数据集随机分为80%的训练数据和20%的测试数据,简单的Python实现顺序如下:
训练数据的特征和标签--输入-->机器学习算法--输出-->决策面
测试数据--输入-->机器学习模型--输出-->预测结果---->正确率=正确分类个数/数据总数
练习:
步骤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]
}
examOrderDict=OrderedDict(examDict)
examDf=pd.DataFrame(examOrderDict)
examDf.head()
步骤2.二分分类--逻辑回归Python实现
2.1为什么不用线性回归
本案例的标签值只有0和1,属于二分分类,若用线性回归就会得到结果
逻辑回归的核心--逻辑函数
逻辑函数值得y的含义,如:
2.2Python实现
#提取特征和标签
#特征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("Pass")
#显示图像
plt.show()
from sklearn.model_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("Pass")
#显示图像
plt.show()
'''
和在线性回回归中一样,如果直接引用逻辑回归模型,会出现运行报错,
因为这里输入的特征只有1个,需要引用reshape改变数组形状
'''
import numpy as np
#将训练数据特征转换成二维数组XX行*1列
X_train=X_train.values.reshape(-1,1)
#将测试数据特征转换成二维数组行数*1列
X_test=X_test.values.reshape(-1,1)
#使用训练数据-->训练模型
#第1步:导入逻辑回归
from sklearn.linear_model import LogisticRegression
# 第2步:创建模型:逻辑回归
model = LogisticRegression()
#第3步:训练模型
model.fit(X_train , y_train)
步骤3.模型评估--准确率
model.score(X_test , y_test)
步骤4.预测应用
# 1.可以用model的predict_proba方法预测给定学习时间通过考试的概率
model.predict_proba(3)
# 2.使用模型的predict方法可以进行预测
pred=model.predict([[3]])
print(pred)
# 3.预测的概率值
##回归方程:z= + x 得到回归方程的z值
a=model.intercept_ #截距
b=model.coef_ #回归系数
x=3
z=a+b*x
##将z值带入逻辑回归函数中,得到概率值
y_pred=1/(1+np.exp(-z))
print('预测的概率值:',y_pred)
python相关性分析特征过滤_Python相关性分析相关推荐
- python相关性分析特征过滤_特征选择-Filter过滤法后续(相关,互信息法)
3.1.2 相关性过滤 方差挑选完毕之后,我们就要考虑下一个问题:相关性了.我们希望选出与标签相关且有意义的特征,因为这样的 特征能够为我们提供大量信息.如果特征与标签无关,那只会白白浪费我们的计算内 ...
- python 做表格分析难么_Python处理分析128张Excel表格竟然不到3秒?
不少粉丝留言,想要了解怎么用Python提升处理数据的效率,或者说怎么用Python自动处理多张Excel表格,于是乎便有了本文. 这篇文章算是Python数据分析实战的第二个独立案例. 注:案例12 ...
- python文本分析和提取_python文本分析和提取 Python 文本内容指定字段提取
使用python对txt文本进行分析和提取 首先,打开计算机上的pycharm编辑器,如下图所示,然后进入下一步. 开学以后,小编没有碰过电脑,第一次,这就说明了开学是多么的可怕 其次,完成上述步骤后 ...
- python 销售数据分析输出表格_Python 处理分析 128 张 Excel 表格竟不到3秒?| 附数据集...
原标题:Python 处理分析 128 张 Excel 表格竟不到3秒?| 附数据集 作者 | 周志鹏 责编 | 刘静 有不少旁友想要了解怎么用Python提升处理数据的效率,或者说怎么用Python ...
- python分析股票数据_Python股票分析系列——系列介绍和获取股票数据.p1
本系列转载自youtuber sentdex博主的教程视频内容 https://www.youtube.com/watch?v=19yyasfGLhk&index=4&list=PLQ ...
- python商业数据分析报告范文_python案例分析之电商销售数据分析
import pandas as pd #读取文件 data= pd.read_csv('./dataset.csv') ########################### 查看数据概览 #### ...
- python随机森林特征重要性_Python中随机森林回归的特征重要性
当涉及到决策树时,特征重要性不是一个黑匣子.来自DecisionTreeRegressor的文档:The importance of a feature is computed as the (nor ...
- python可视化lassocv特征筛选之后的特征的相关性分析热力图
python可视化lassocv特征筛选之后的特征的相关性分析热力图 目录 python可视化lassocv特征筛选之后的特征的相关性分析热力图 #lassocv模型
- python相关性分析_python实践统计学中的三大相关性系数,并绘制相关性分析的热力图...
本文首发地址: https://yishuihancheng.blog.csdn.net/article/details/83547648 欢迎关注我的博客[Together_CZ],我是沂水寒城! ...
最新文章
- 合工大五套卷_2021森哥五套卷(五)
- 系统设计知识:系统设计的基本原理介绍
- 株洲市码高机器人编程_码高机器人教育
- 【转】mysql_fetch_row , mysql_fetch_array , mysql_fetch_assoc 的区别
- 手机qq2008触屏版_手机版卖家中心在哪里
- PDF编辑器(widsmob pdfedit)v3.0.1
- 移动机械硬盘测试软件,硬盘检测工具HDTune使用教程
- 19108期计算机开机号,排列三19108期藏机图诗汇总
- 全球科学家公认的高效学习法——费曼学习法
- 三层交换机和路由器的区别
- Matlab矩阵和向量中的常用函数
- Android跑指定包Monkey脚本
- Testin云层天咨众测学院开课了!
- 考研英语复习五大计划表
- ipad怎么压缩文件?教你一招快捷压缩图片
- 面试java工程师的自我介绍
- 网络监测机器人 设备自动监测软件c#
- audioread-支持多种解码 (GStreamer + Core Audio + MAD + FFmpeg) 的python音频解码库
- 英飞凌基础学习笔记-SCU(System Control Units)
- 人工智能又攻下一城:从智能翻译机掀起的AI硬件销售热潮说起
热门文章
- Python IO编程——文件读写
- Entity Framework 6新特性:全局性地自定义Code First约定
- 《windows核心编程》–Windows内存体结构(二)
- 微软宣布免费 Web 版 Office 2010发布日期
- CentOS7.2中使用Kubernetes(k8s)1.4.6源码搭建k8s容器集群环境
- 从0到1:微信后台系统的演进之路(转自INFOQ)
- mybatis审查要点
- Android,谁动了我的内存
- 关于批处理的学习之二[显示篇]
- vagrant开启Xshell使用密码登录方式