导言机器学习的步骤

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相关性分析相关推荐

  1. python相关性分析特征过滤_特征选择-Filter过滤法后续(相关,互信息法)

    3.1.2 相关性过滤 方差挑选完毕之后,我们就要考虑下一个问题:相关性了.我们希望选出与标签相关且有意义的特征,因为这样的 特征能够为我们提供大量信息.如果特征与标签无关,那只会白白浪费我们的计算内 ...

  2. python 做表格分析难么_Python处理分析128张Excel表格竟然不到3秒?

    不少粉丝留言,想要了解怎么用Python提升处理数据的效率,或者说怎么用Python自动处理多张Excel表格,于是乎便有了本文. 这篇文章算是Python数据分析实战的第二个独立案例. 注:案例12 ...

  3. python文本分析和提取_python文本分析和提取 Python 文本内容指定字段提取

    使用python对txt文本进行分析和提取 首先,打开计算机上的pycharm编辑器,如下图所示,然后进入下一步. 开学以后,小编没有碰过电脑,第一次,这就说明了开学是多么的可怕 其次,完成上述步骤后 ...

  4. python 销售数据分析输出表格_Python 处理分析 128 张 Excel 表格竟不到3秒?| 附数据集...

    原标题:Python 处理分析 128 张 Excel 表格竟不到3秒?| 附数据集 作者 | 周志鹏 责编 | 刘静 有不少旁友想要了解怎么用Python提升处理数据的效率,或者说怎么用Python ...

  5. python分析股票数据_Python股票分析系列——系列介绍和获取股票数据.p1

    本系列转载自youtuber sentdex博主的教程视频内容 https://www.youtube.com/watch?v=19yyasfGLhk&index=4&list=PLQ ...

  6. python商业数据分析报告范文_python案例分析之电商销售数据分析

    import pandas as pd #读取文件 data= pd.read_csv('./dataset.csv') ########################### 查看数据概览 #### ...

  7. python随机森林特征重要性_Python中随机森林回归的特征重要性

    当涉及到决策树时,特征重要性不是一个黑匣子.来自DecisionTreeRegressor的文档:The importance of a feature is computed as the (nor ...

  8. python可视化lassocv特征筛选之后的特征的相关性分析热力图

    python可视化lassocv特征筛选之后的特征的相关性分析热力图 目录 python可视化lassocv特征筛选之后的特征的相关性分析热力图 #lassocv模型

  9. python相关性分析_python实践统计学中的三大相关性系数,并绘制相关性分析的热力图...

    本文首发地址: https://yishuihancheng.blog.csdn.net/article/details/83547648 欢迎关注我的博客[Together_CZ],我是沂水寒城! ...

最新文章

  1. 合工大五套卷_2021森哥五套卷(五)
  2. 系统设计知识:系统设计的基本原理介绍
  3. 株洲市码高机器人编程_码高机器人教育
  4. 【转】mysql_fetch_row , mysql_fetch_array , mysql_fetch_assoc 的区别
  5. 手机qq2008触屏版_手机版卖家中心在哪里
  6. PDF编辑器(widsmob pdfedit)v3.0.1
  7. 移动机械硬盘测试软件,硬盘检测工具HDTune使用教程
  8. 19108期计算机开机号,排列三19108期藏机图诗汇总
  9. 全球科学家公认的高效学习法——费曼学习法
  10. 三层交换机和路由器的区别
  11. Matlab矩阵和向量中的常用函数
  12. Android跑指定包Monkey脚本
  13. Testin云层天咨众测学院开课了!
  14. 考研英语复习五大计划表
  15. ipad怎么压缩文件?教你一招快捷压缩图片
  16. 面试java工程师的自我介绍
  17. 网络监测机器人 设备自动监测软件c#
  18. audioread-支持多种解码 (GStreamer + Core Audio + MAD + FFmpeg) 的python音频解码库
  19. 英飞凌基础学习笔记-SCU(System Control Units)
  20. 人工智能又攻下一城:从智能翻译机掀起的AI硬件销售热潮说起

热门文章

  1. Python IO编程——文件读写
  2. Entity Framework 6新特性:全局性地自定义Code First约定
  3. 《windows核心编程》–Windows内存体结构(二)
  4. 微软宣布免费 Web 版 Office 2010发布日期
  5. CentOS7.2中使用Kubernetes(k8s)1.4.6源码搭建k8s容器集群环境
  6. 从0到1:微信后台系统的演进之路(转自INFOQ)
  7. mybatis审查要点
  8. Android,谁动了我的内存
  9. 关于批处理的学习之二[显示篇]
  10. vagrant开启Xshell使用密码登录方式