Python 数据挖掘与机器学习实战 (77):回归分析介 3.7.4

阅读数:1 2020 年 1 月 11 日 17:05

Python数据挖掘与机器学习实战(77):回归分析介 3.7.4

(数据预测)

内容简介
本书作为数据挖掘和机器学习的读物,基于真实数据集进行案例实战,使用 Python 数据科学库,从数据预处理开始一步步介绍数据建模和数据挖掘的过程。书中主要介绍了数据挖掘的基础知识、基本工具和实践方法,通过循序渐进地讲解算法,带领读者轻松踏上数据挖掘之旅。本书采用理论与实践相结合的方式,呈现了如何使用逻辑回归进行环境数据检测,如何使用 HMM 进行中文分词,如何利用卷积神经网络识别雷达剖面图,如何使用循环神经网络构建聊天机器人,如何使用朴素贝叶斯算法进行破产预测,如何使用 DCGAN 网络进行人脸生成等。本书也涉及神经网络、在线学习、强化学习、深度学习和大数据处理等内容。
本书以人工智能主流编程语言 Python 3 版作为数据分析与挖掘实战的应用工具,从 Pyhton 的基础语法开始,陆续介绍了 NumPy 数值计算、Pandas 数据处理、Matplotlib 数据可视化、爬虫和 Sklearn 数据挖掘等内容。全书共涵盖 16 个常用的数据挖掘算法和机器学习实战项目。通过学习本书内容,读者可以掌握数据分析与挖掘的理论知识及实战技能。
本书内容丰富,讲解由浅入深,特别适合对数据挖掘和机器学习算法感兴趣的读者阅读,也适合需要系统掌握深度学习的开发人员阅读,还适合 Python 程序员及人工智能领域的开发人员阅读。编程爱好者、高校师生及培训机构的学员也可以将本书作为兴趣读物或教材使用。

对数据进行预测,代码如下:

复制代码
from numpy import *
import pandas as pd
from pandas import DataFrame
filename='/Users/apple27/Documents/data.txt' #文件目录
#df = DataFrame(pd.read_csv('/Users/apple27/Documents/logi.csv'))
def loadDataSet(): #读取数据(这里只有两个特征)
df=pd.read_csv(filename)
print(df)
dataMat = []
labelMat = []
fr = open(filename)
for line in fr.readlines():
lineArr = line.strip().split()
dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])])
#前面的 1 表示方程的常量。比如两个特征 X1 和 X2, 共需要 3 个参数
#W1+W2*X1+W3*X2
labelMat.append(int(lineArr[2]))
return dataMat,labelMat
#调用函数
loadDataSet()
def sigmoid(inX): #定义 sigmoid 函数
return 1.0/(1+exp(-inX))
def stocGradAscent1(dataMat, labelMat):
#改进版随机梯度上升,在每次迭代中随机选择样本来更新权重
#并且随迭代次数增加,权重变化越小
dataMatrix=mat(dataMat)
classLabels=labelMat
m,n=shape(dataMatrix)
weights=ones((n,1))
maxCycles=500
for j in range(maxCycles): #迭代
dataIndex=[i for i in range(m)]
for i in range(m): #随机遍历每一行
alpha=4/(1+j+i)+0.0001 #随迭代次数增加, 权重变化越小
randIndex=int(random.uniform(0,len(dataIndex))) #随机抽样
h=sigmoid(sum(dataMatrix[randIndex]*weights))
error=classLabels[randIndex]-h
weights=weights+alpha*error*dataMatrix[randIndex].transpose()
del(dataIndex[randIndex]) #去除已经抽取的样本
return weights
#画出最终分类的图
def plotBestFit(weights):
import matplotlib.pyplot as plt
dataMat,labelMat=loadDataSet()
dataArr = array(dataMat)
n = shape(dataArr)[0]
xcord1 = []; ycord1 = []
xcord2 = []; ycord2 = []
for i in range(n):
if int(labelMat[i])== 1:
xcord1.append(dataArr[i,1])
ycord1.append(dataArr[i,2])
else:
xcord2.append(dataArr[i,1])
ycord2.append(dataArr[i,2])
fig = plt.figure()
ax = fig.add_subplot(111)
#定义颜色线条
ax.scatter(xcord1, ycord1, s=30, c='red', marker='s')
ax.scatter(xcord2, ycord2, s=30, c='green')
#坐标轴
x = arange(-3.0, 3.0, 0.1)
y = (-weights[0]-weights[1]*x)/weights[2]
ax.plot(x, y)
#绘图
plt.xlabel('X1')
plt.ylabel('X2')
plt.show()
plt.savefig('images/logExample.png', format='png'
def main(): #主函数
datamat,labelmat=loadDataSet()
weights=stocGradAscent1(datamat, labelmat).getA()
plotBestFit(weights)
if __name__=='__main__':
main()

逻辑回归分析结果如图 3-12 所示,蓝色线为拟合曲线。

Python数据挖掘与机器学习实战(77):回归分析介 3.7.4

图 3-12 逻辑回归实验结果

Python数据挖掘与机器学习实战(77):回归分析介 3.7.4

购书地址 https://item.jd.com/12623592.html?dist=jd

评论

发布