python 逻辑量是什么_Python机器学习之线性回归和逻辑回归

机器学习基本知识

机器学习的步骤

相关性分析

使用python进行线性回归分析

逻辑回归与三种数据类型

使用python实现逻辑回归

线性回归和逻辑回归的区别

机器学习算法和机器学习模型的区别

总结

相关性分析

线性回归

逻辑回归

python逻辑回归

数据类型

线性回归和逻辑回归区别

一、机器学习基本知识

1、什么是机器学习?

机器学习是通过数据训练,使用算法挖掘事物背后隐藏的规律和本质,得到模型。

“Machine Learning studies computer algorithms for learning to do stuff ”

2、人工智能,机器学习,深度学习之间的关系

通过下图可以了解:人工智能,机器学习,深度学习之间的关系。人工智能应用范围很广,机器学习是实现人工智能的一种技术,深度学习是机器学习中的一种算法。

3、什么是特征,什么是标签?

(1)特征:数据的物理属性(输入),数据的这些特征可以代表数据的特点,比如橘子的颜色,尺寸等,比如音乐的强度,歌曲时长,节奏等

(2)标签:对数据的预测结果,输出的(结果或目的),比如橘子甜还是不甜。或者类别,喜欢或者不喜欢,代表数据的预测结果

4、机器学习的模型

机器学习算法(输入训练数据)——结果(输出)

5、Python的机器学习包:sklearn,使用conda 安装scikit-learn

正确学习路线:当我们碰到某个机器学习算法,比如线性回归算法,通过了解案例文档包,带着目的学习并使用这个包。

二、机器学习的步骤

1、提出问题

一切机器学习的目标都是为了解决我们生活和工作中遇到的问题。比如我们我们想知道喜欢听a类音乐的的用户,还喜欢什么什么类的音乐,明确的问题,为机器学习提供了目标。

2、理解数据

1)采集数据,根据研究问题采集相关数据

2)导入数据,分析的数据中可能在网络中,数据库中,excel中,比如导入python中。

3)查看数据集的信息:包括描述统计信息,从整体上理解信息。

3、数据清洗

数据清洗也叫数据预处理,对数据进行整容。从数据集中提出我们想要特征的数据的信息

4、构建模型

用训练模型构建模型,将提取的特质放入机器学习算法中来构建模型,机器学习最核心的是机器学习算法。

5、评估模型

对模型进行评估:通过测试数据评估模型的准确性,看看模型的预测效果如何,得出预测准确率。

总结:机器学习算法是从普通算法演化过来的,通过自动从提供的数据中学习,让程序变得更聪明。从数据中随机抽取一些样本,样本在机器学子中即训练数据,模型学习越多训练数据就会越准确,并且在作出错误的预测的时候可以自行修正。我们可以使用同样的机器学习算法去训练不同的模型,这就是机器学习。

三、相关性分析

1、用散点图展现2个数据间的关系(散点图可以看出是否相关)

学习时间是特征,分数是标签。

2、三种线性相关性

正线性相关:直线朝上

负线性相关:直线朝下

不是线性相关:随机,没有线性相关,有可能有其他相关关系。

3、如何衡量相关性程度——协方差、相关系数

1)协方差的功能

协方差的正负可以反应数据相关性方向

协方差表示两个变量相关性程度

2)协方差的缺点:

被变量的变化幅度影响

4、相关系数:

1)消除变量变化幅度对协方差的影响,标准后的协方差,反应两个标量每单位变化的相似程度。r也称之为皮尔逊积矩相关系数。标准差是衡量数据集波动大小的统计量。

计算公式:相关系数 r=X和Y的协方差/(X的标准差*Y的标准差)

2)相关系数的功能

1)范围是-1到1变化,三个极值-1,1,0,反映两个变量的相关性方向

2)值的大小表示两个变量每单位的相关性程度

5、相关系数分类:

0.6~~0.1强相关

0.3~~0.6中等程度相关

0~~0.3 弱相关

6、如何用python如何计算相关系数

相关系数矩阵

相关系数接近1 ,学习时间和分数之间有很强的正线性相关即高度相关。

四、用python进行 简单回归分析

1、什么是最佳拟合线

在散点图上画一条穿过这些点的直线,使直线尽量接近这些数据点,这条直线就是最佳拟合线。(作为零散分布的原始数据的代表,距离各点(数据)之和最小的直线)

2、回归方程 y=a+bx 一元直线方程

b是回归系数(斜率),a是截距,x是学习时间,y是考试分数。

最小二乘法可以使误差平方和最小。

3、如何用python求简单线性回归

建立训练数据和测试数据

画出训练数据和测试数据散点图

4、使用机械学习包用python训练模型

输入:训练数据的标签(学习时间),特征(分数)

模型:线性回顾

输出:回归结果

5、使用python画出最佳拟合线

6、如何评估模型精确度?

1)在比较多个数据集的拟合情况时,误差平方和会因为数据集点的多少而影响 评价的结果。

2)决定系数R平方与训练点点的数量无关,不受数据点数量多少的影响。

功能:评估线性回顾模型的精确度,值的大小反应模型精准度。

7、如何用python求决定系数R平方(评估模型精准度)

通过score()函数对模型进行评估,得到决定系数

最后绘制散点图查看训练数据、测试数据与最佳拟合线之间的关系.

五、逻辑回归和逻辑函数

1、机器学习

输入 训练数据(特征、标签)

机器学习算法

输出:分类结果(喜欢或不喜欢)

2、机器学习模型是如何起作用?

对分类问题,定义一个决策面,一侧预测的是喜欢,一侧是不喜欢的。

机器模型的准确率:正确率 模型预测的结果正确分类的数据数占所有数据的比例

3、什么是逻辑回归

逻辑回归是一个分类算法,用于二分分类的算法,指的是分类结果只有2个标签,在这种二分分类问题就可以使用逻辑回归算法。

为什么不使用线性回归?因为线性回归无法解决分类问题,线性回归预测的值是一个连续数据,分类中预测值是一个离散数据,比如0或者1。

4、逻辑函数

逻辑函数是一个S型曲线,y的值是0-1之间变化,和垂直轴相交在0.5处。逻辑回归的逻辑函数参数z是一个线性回归函数。

逻辑函数的值:

逻辑函数是一个S型曲线,y的值是0-1之间变化,和垂直轴相交在0.5处。逻辑回归的逻辑函数参数z是一个线性回归函数。

将训练数据的特征和标签转化为一个决策面

决策面:如果逻辑函数得到的概率值y>=0.5 特征=1,如果y<0.5 特征=0

5、三种数据类型

1)、数值数据(定量数据)温度,金钱,又分为2种离散数据和连续数据。

离散数据只能包含特定的值,数据的取值是不连续的,比如抛硬币的数据就是离散数据,结果正面或者反面。连续数据是某个范围内 可以取任何数值,比如时间就是一个连续数据,可以进行无限分割,平滑的曲线。

2)、分类数据(定性数据)

对数据进行描述的信息,无法用数字进行量化,比如性别分为男性,女性。有时候也有数据表示,但是数据不具备数学意义,不可以进行运算。机器学习中通常用数值表示分类,因为算法中传入的值同样要求是数值型,用数值来对应分类,比如0、1,比如有序分类,比如1-5星。

3)、时间序列数据

长时间重复测量而获得的观测数据的集合,时间序列是在一段时间内定期收集的数据序列,例如股票每天的股价,可以说明时间的顺序。

六、使用python实现逻辑回归

1、建立数据集

2、提取数据集的特征和标签并绘制散点图

3、使用机器学习建立训练数据和测试数据 随机分配

4、绘制训练和测试数据散点图

5、训练模型 使用训练数据

6、计算模型的准确率 使用测试数据

7、使用数据验证模型准确率与预测概率值 回归方程

七、线性回归和逻辑回归的区别

1、输出数据类型不同,逻辑回顾输出的是是离散数据(分类标签),线性回归是连续数据类型。比如通过学习时间预测考试分数。

2、想得到什么:逻辑回归得到一个决策面,用于对数据进行对数据分类,回

归算法得到最优拟合线,可以更好接近数据中的各个点。逻辑回归本质上是一个分类算法。

3、评估指标:在逻辑回归中我们使用正确率作为评估指标,即正确比率

线性回归中使用决定系数R平方,表示有多少百分比的y波动被回归线所描述。

八、机器学习算法和机器学习模型的区别

机器学习算法是处理某一类型问题的通用算法框架

机器学习模型=机器学习算法+训练数据 ,一个专门用于处理某一类问题的模型。比如使用线性回归模型或逻辑回归模型。

九、总结

1、机器学习基本知识:特征和标签

2、训练数据和测试数据

3、线性回归问题和分类问题:决定系数R平方和决策面、正确率

4、逻辑回归:用于二分分类问题,逻辑函数

5、如何用python实现线性回归和逻辑回归

6、三种数据类型

7、逻辑分类和线性回归的区别

8、机器学习算法和机器学习模型的区别

线性回归代码部分:

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)画出数据集散点图:

#提取数据的特征和标签 学习时间是特征 标签是分数

#特征features

exam_X=examDf.loc[:,'学习时间']

#标签labes

exam_y=examDf.loc[:,'分数']

#绘制散点图 使用绘图包matplotlib

import matplotlib.pyplot as plt

#散点图

plt.scatter(exam_X, exam_y, color="b", label="exam data")

#添加图标标签

plt.xlabel("Hours")

plt.ylabel("Score")

#显示图像

plt.show()

3)计算相关系数

#相关系数:corr返回结果是一个数据框,存放的是相关系数矩阵

rDf=examDf.corr()

print('相关系数矩阵:')

rDf

4)建立训练数据和测试数据

#特征features _X表示标签

exam_X=examDf.loc[:,'学习时间']

#标签labes _y表示标签

exam_y=examDf.loc[:,'分数']

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 = 0.8)

#输出数据大小

print('原始数据特征:',exam_X.shape ,

',训练数据特征:', X_train.shape ,

',测试数据特征:',X_test.shape )

print('原始数据标签:',exam_y.shape ,

'训练数据标签:', y_train.shape ,

'测试数据标签:' ,y_test.shape)

5)训练模型(使用训练数据)

X_train=X_train.values.reshape(-1,1)

X_test=X_test.values.reshape(-1,1)

#第1步:导入线性回归

from sklearn.linear_model import LinearRegression

# 第2步:创建模型:线性回归

model = LinearRegression()

#第3步:训练模型

model.fit(X_train , y_train)

7)计算最佳拟合线方程

#截距

a=model.intercept_

#回归系数

b=model.coef_

print('最佳拟合线:截距a=',a,',回归系数b=',b)

8) 画出最佳拟合线 训练数据

#绘散点图 并画出最佳拟合线

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()

9)模型评估(使用测试数据)

#线性回归的scroe方法得到的是决定系数R平方

#评估模型:决定系数R平方

model.score(X_test , y_test)

10)画出最后的最佳拟合线(训练数据和测试数据)

#导入绘图包

import matplotlib.pyplot as plt

plt.scatter(X_train, y_train, color='blue', label="train data")

#最佳拟合线训练数据的预测值

y_train_pred = model.predict(X_train)

#绘制最佳拟合线:标签用的是训练数据的预测值y_train_pred

plt.plot(X_train, y_train_pred, color='black', linewidth=3, label="best line")

plt.scatter(X_test, y_test, color='red', label="test data")

#添加图标标签

plt.legend(loc=2)

plt.xlabel("Hours")

plt.ylabel("Score")

#显示图像

plt.show()

逻辑回归代码部分

1)导入数据集

#导入pandas和有序字典

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(10)

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("Pass")

#显示图像

plt.show()

3)建立训练数据和测试数据

使用机器学习包 建立训练和测试数据

#train_test_split是交叉验证中常用的函数,功能是从样本中随机的按比例选取训练数据(train)和测试数据(test)

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)

4)绘制训练和测试数据散点图

#绘制训练数据和测试数据的散点图

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()

5)训练模型

#使用训练数据 训练模型 需要先将数据转化为数组 多行一列的数组

#将训练数据特征转换成二维数组X行*1列

X_train=X_train.values.reshape(-1,1)

#将测试数据特征转换成二维数组X行*1列

X_test=X_test.values.reshape(-1,1)

#导入逻辑回归包

from sklearn.linear_model import LogisticRegression

# 创建模型:逻辑回归

model = LogisticRegression()

#训练模型

model.fit(X_train , y_train)

6)评估模型(使用训练数据评估模型准确率)

#评估模型:准确率 score方法计算出的是正确率 测试数据的特征和标签

model.score(X_test , y_test)

7)决策面

#获取概率值第1个值是标签为0的概率值,第2个值是标签为1的概率值,两个值的和=1

#决策面 概率大于0.5等于标签为1的分类

#model.predict_proba(4)

model.predict_proba([[4]])

8)预测数据

#预测数据:使用模型的predict方法可以进行预测。这里我们输入学生的特征学习时间4小时,模型返回结果标签是0,

#表示预测该学生通过考试。#决策面 概率大于0.5等于标签为1的分类

pred=model.predict([[4]])

print(pred)

9)计算预测概率值 回归方程

第1步:得到回归方程的z值

#回归方程:z= + x

#截距

a=model.intercept_

#回归系数

b=model.coef_

x=4

z=a+b*x

#第2步:将z值带入逻辑回归函数中,得到概率值

y_pred=1/(1+np.exp(-z))

print('预测的概率值:',y_pred)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值