Python程序设计与科学计算精录&总结Episode.5 Python进阶:机器学习、人工智能应用(基于Michael导师Python课程与VS2019)

昨天刚刚举行了我国2020年深度学习大会,我旁听了一会,深受启发。虽然网络会议的形式让不少的讲话流于了表面,但是不难发现科学家们对于深度学习领域的探索是从未停下脚步的。

个人认为,一味地为了高薪和就业前景去挤人工智能专业的做法不可取。深度学习的概念现在被炒的很火,许多并不是研究真正人工智能的公司&机构也将算法笼统地称作人工智能,这也使得这个新兴专业泥沙俱下。

既然是第四次全新技术革命,和曾经一样,绝对不是一蹴而就的。需要长期的积累,需要从生物学到电子学再到程序设计多方面技术的加特。由此看来,这篇博文总结的有关机器学习人工智能应用的东西,也是夹杂着炒概念嫌疑的设计,不过这至少可以打开这个新世界的大门。

所谓装逼第一步就是见谁都说自己在做人工智能,这也是我们起初想学习它的动力之一吧。


一、机器学习过程是人工智能的基础:

机器学习过程可以简要的总结为下面七个步骤

收集数据、数据准备、选择模型、训练模型、评估模型、调整参数、预测

下面我们利用评估苹果apple公司股票走势的实例来讲解机器学习的开发。这里我们需要用到的是一个循环卷积神经网络LSTM功能。想要用到神经网络的具体内容,还需要安装tensorflow模块,安装完成后继续安装keras模块(这个是神经网络的基础)。对于数学支持的机器学习库,需要安装scikit-learn。至于金融数据的获取,我们需要安装pandas-datareader模块。安装好这些东西之后,就可以开始今天的代码编写了。

1、基本的模块内容的导入:

import math
import pandas_datareader as web
import numpy as np
import pandas as pd
from sklern.preprocessing import MinMaxscaler
from keras.models import Sequential
from keras.layers import Dense, LSTM
import matplotlib.pyplot as plt

这些内容前面都有所介绍,此略。

2、获取金融方面的数据:

df=web.DataReader("AAPL", data_source="yahoo", start="2012-01-01", end="2020-05-21")

DataReader对象的调用,其中第一个字符串是公司名字,例如AAPL是苹果,这个需要去股市上查名字。data_source代表数据来源的库,金融方面一般是上yahoo。然后后面两个代表抓取的数据的开始和截止日期。

3、利用数据可视化来展示上面我们获取的数据:

因为数据是时间顺序同时又比较多,所以用折线图来显示:

plt.figure(figsize=(16,8))
plt.title("stock price history")
plt.plot(df["Close"])
plt.xlabel("Date", fontsize=18)
plt.ylabel("Closing Price USD($)", fontsize=18)
plt.show()

plt.figure对象是设定整个图像的大小,这里定位16X8的图片。title对象是命名整个图像。plot对象是对图像进行赋值,那么先然需要的就是对网上搜索到的df股票信息变量中,Close这一列的币值属性。然后是xlabel和ylabel横轴纵轴的命名和大小。最后使用show对象将图像给展示到控制台中。

4、利用numpy的功能实现close列的数据存储到新的python自带变量中:

data=df.filter(["Close"])
Dataset=data.values

首先filter对象是把Close类中的数据滤出来并且赋值给data,然后利用data中自带的values功能完成数据字符串到实际数据数字的转换工作。

5、开始训练我们的模型:

training_data_len=math.ceil(len(dataset)*0.8)

scaler=MinMaxScaler(feature_range=(0,1))
scaled_data=scaler.fit_transfrom(dataset)

train_data=scaled_data[0:training_data_len, :]
x_train=[]
y_train=[]
for i in range(60, len(train_data)):
    x_train.append(train_data[i-60:i,0])
    y_train.append(train_data[i,0])
    if i<=60:
        print(x_train)
        print(y_train)
        print()
x_train, y_train=np.array(x_train), np.array(y_train)

x_train=np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))

第一个math.ceil是对所有长度大于dataset零点八倍的数据选出来并且作为训练的样本。然后调用MinMaxScaler对数据进行数据归一化,说白了就是全部给压缩到(0,1)区间里面去。

然后利用scaled_data对象建立一个60个数据的学习模型,相当于是将这六十个数据提出来并且用于训练的样板数据。最后利用np.shape将这些转换为序列的数据变成三维的。

model=Sequential()
model.add(LSTM(50, return_sequences=TRUE, input_shape=(x_train.shape[1], 1))
model.add(LSTM(50, return_sequences=FALSE))
model.add(Dense(25))
model.add(Dense(1))

简单地来说,这五行是利用数学模型构建卷积神经网络层次关系的函数。实际上就是让我们的数据无限适应这个模型,下面就开始编译这个模型:

model.compile(optimizer="adam", loss="mean_squared_error")

model.fit(x_train, y_train, batch_size=1, epochs=1)

optimizer和loss都是衡量模型标准的参数的定义,这里用到了adam和mean_squared_error,学习统计学的同学们会很熟悉。然后训练模型,利用fit对象,分别传入自变量因变量,神经网络结构层次的模式定义batch和训练截止的标志epochs。

6、评估模型:

test_data=scaled_data[training_data_len-60:, :]
x_test=[]
y_test=[]
for i in range(60, len(test_data)):
    x_test.append(test_data[i-60:i, 0])
x_test=np.array(x_test)
x_test=np.reshape(x_test,(x_test.shape[0],x_test.shape[1],1))

利用test_data多用几个没用过的现成数据来试试看我们的模型准确度怎么样。不要忘记最后x_test还是需要转换为三维的。

7、得到预测值:

predictions=model.predict(x_test)
predictions=scaler.inverse_transform(predictions)

rmse=np.sqrt(np.mean(predictions-y_test)**2))

利用predict对象将数据预测出来。

预测完成之后我们画出预测图像即可:从新赋值train和valid就是模型和实际,然后复制前面第三步数据可视化的代码,稍稍改动参数名即可。

train=data[:training_data_len]
valid=data[training_data_len:]
valid["Predictions"]=predictions

plt.figure(figsize=(16,8))
plt.title("Model")
plt.xlabel("Date", fontsize=18)
plt.ylabel("Closing Price USD($)", fontsize=18)
plt.plot(train["Close"])
plt.plot(valid["Close", "Predictions"])
plt.legend(["Train", "Val", "Predictions"], loc="lower right")
plt.show()

最后我们再对模型进行一个展示:

valid

8、实操:预测5月21日之后的苹果公司的股票走势,和上述代码完全相同,只是改动代码即可。因为上面是获取60天数据而获取61天数据,那么不难可以改为利用前面上千天的数据预测新一天的数据。只要掌握上面的内容,这个实现很简单,此略。

最终我们就会得到这样的效果:

Python程序设计与科学计算精录&总结Episode.5 Python进阶:机器学习、人工智能应用(基于Michael导师Python课程与VS2019)_第1张图片


二、Python人工智能的未来发展方向:

1、据人民日报海外版报道,工信部教育考试中心副主任周明曾在2016年向媒体透露,中国人工智能人才缺口超过500万人。

2、根据脉脉数据研究院提供的数据显示,目前国内人工智能相关岗位的工作起薪基本都在12.5k/月以上,从业三年后人工智能岗位的技术人员,平均月薪在25k以上,基本实现薪酬翻番。

3、2018年人才争夺已呈白热化,处于行业风口的AI人才薪酬已是飙涨。毕竟有雄厚的实力豪取顶尖专家的头部公司还是少数,超过90%的互联网创业公司选择了把目光转向培养年轻AI人才。

但人工智能难度大,自学没有方向和重点。所以建议你进行系统的学习!

在未来,人工智能领域的投资将以“AI+行业”的方式展开,预计人工智能应用场景较为成熟且需求强烈的领域,如安防、语音识别、医疗、智慧城市、金融等领域,带来升级转换,提高行业智能化水平,改善企业的盈利能力,预计随着诸如无人驾驶汽车等认知智能技术的加速突破与应用,人工智能市场将加速爆发。

学习高等数学基础知识:首先,你是零基础的话,就先将高等数学基础知识学透,从基础的数据分析、线性代数及矩阵等等入门,只有基础有了,才会层层积累,不能没有逻辑性的看一块学一块。学习PythonPython具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。

比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。这也是人工智能必备知识。机器学习属于人工智能的一个分支,它是让机器能具备摆脱对人工指令的依赖,能按照一定的算法开展自主学习的能力。

可以说Python的出现才真正让“人工智能”不枉智能二字。所以,未来5到10年,整个人类社会都会迅速朝这个方向演进。如果我们个人想顺应这个潮流,我建议应该快速切入python的学习。为什么说要学习Python因为无论是大数据分析,还是机器学习,python都有很强大的支持能力

python代表了适应未来的一种趋势。python作为脚本语言,它本身具备了一般脚本语言的诸多优点,如:易上手,即写即能运行,易读,易维护等,同时它经过十多年的发展,目前能支持的领域非常广大,python可以从支持航空航天器系统的开发到小游戏开发的几乎所有的领域。这最根本还是来源于它一开始的开源策略!

Python在另一方面是不同的:它更多样化,鉴于Python不仅是一种通用的编程语言,而且也是一门科学的编程语言,我们很快就会看到Python在更高的薪水方面接管了Ruby,挣得更多。

Python开发语言专业性比较强,但目前高校相关课程的体系建立还不完整,绝大部分也只是停留在基础语法的讲解上,还是找个靠谱的Python培训机构来系统的去学习,专业的导师可以更加专业的指导培训,比起自学更加的事半功倍。当然,如果你自学能力很强,就忽略掉博主上面说的话即可。


至此,Python进阶的两篇文章也就更新完成了,在智能化应用总结的最后,再次放上人工智能交互对话的代码,有兴趣可以研究研究其模块、函数依据哦。

# -*- coding: utf-8 -*-
import aiml
import sys
import os
 
 
def get_module_dir(name):
 print("module", sys.modules[name])
 path = getattr(sys.modules[name], '__file__', None)
 print(path)
 if not path:
  raise AttributeError('module %s has not attribute __file__' % name)
 return os.path.dirname(os.path.abspath(path))
 
 
alice_path = get_module_dir('aiml') + '\\botdata\\alice'

os.chdir(alice_path)  # 切换到语料库所在工作目录

alice = aiml.Kernel()  # 创建机器人alice对象
alice.learn("startup.xml") # 加载...\\botdata\\alice\\startup.xml
alice.respond('LOAD ALICE') # 加载...\\botdata\\alice目录下的语料库
 
while True:
 message = input("Enter your message >> ")
 if("exit" == message):
  exit()
 response = alice.respond(message) # 机器人应答
 print(response)

 

你可能感兴趣的:(人工智能,神经网络,python,深度学习,大数据)