写点什么

Docker 下,五分钟极速体验机器学习,java 从入门到精通第五版防盗码

作者:Java高工P7
  • 2021 年 11 月 09 日
  • 本文字数:2128 字

    阅读完需:约 7 分钟

To access the notebook, open this file in a browser:


file:///root/.local/share/jupyter/runtime/nbserver-6-open.html


Or copy and paste one of these URLs:


http://(a61298ac6493 or 127.0.0.1):8888/?token=708d365fce9d9a76f98b2ade7e9aefcbc8401dbf5027ffa6


[W 06:31:15.960 NotebookApp] Clearing invalid/expired login cookie username-192-168-121-137-8888


[W 06:31:15.961 NotebookApp] Couldn't authenticate WebSocket connection


[W 06:31:15.961 NotebookApp] Clearing invalid/expired login cookie username-192-168-121-137-8888


[W 06:31:15.962 NotebookApp] Clearing invalid/expired login cookie username-192-168-121-137-8888


[W 06:31:15.981 NotebookApp] 403 GET /api/kernels/5e3f93d5-4f80-4ed3-ad56-b04db61c8487/channels?session_id=33173ba03fee449da0839df0e10cfb6e (192.168.121.1) 22.41ms referer=None


注意上面的 http://(a61298ac6493 or 127.0.0.1):8888/?token=708d365fce9d9a76f98b2ade7e9aefcbc8401dbf5027ffa6,其中的 708d365fce9d9a76f98b2ade7e9aefcbc8401dbf5027ffa6 是登录 jupyter 网页时要填写的 token 字段,后面会用到;


机器学习的开发环境已经 OK 了,够快吗?该运行经典入门实例了;

实战鸾尾花分类

  1. 运行 docker 的电脑 IP 地址是 192.168.121.137,于是打开浏览器,输入地址:http://192.168.121.137:8888

  2. 出现 jupyter 登录页面,如下图,前面我们记下来了 token 字符串的值(708d365fce9d9a76f98b2ade7e9aefcbc8401dbf5027ffa6),在红框位置输进去,然后点击右侧的"Log in"按钮,即可登录成功;

  3. 如下图,点击右侧的"New",在弹出的菜单中点击"Python 3":



  1. 会出现新的页面,如下图,这就是我们输入代码和运行代码的地方:



  1. 在上图红框中,输入以下代码,这段代码就是经典的鸾尾花分类:一共有 150 朵鸾尾花,每朵有自己的花萼长、花萼宽、花瓣长、花瓣宽这四个特征值,这 150 朵鸾尾花一共分为三类,我们取其中的 140 朵交给机器学习,学习完成后,我们将剩下 10 朵的特征给机器,让机器来分类,最后对比机器分类的结果和实际结果,看看误差有多大,代码中已经添加了详细的注释,就不再赘述了:


from sklearn.datasets import load_iris


from sklearn.model_selection import train_test_split


import numpy as np


import pandas as pd


from pandas.plotting import scatter_matrix


import matplotlib.pyplot as plt


from sklearn.neighbors import KNeighborsClassifier


#可以在浏览器上实时显示图像


%matplotlib inline


#取得鸾尾花数据集


iris_dataset = load_iris()


#将整个数据集分割成两部分:train 用来训练,test 用来测试,这里 test_size 等于 10 表示测试数据只有 10 条,其余的全部用作训练,


#注意,train_test_split 会将 iris_dataset 的数据顺序打乱再分割


#X 表示特征数据,每一行表示一朵鸾尾花的完整特征,该特征有四列:花萼长、花萼宽、花瓣长、花瓣宽


#y 表示标签,例如 y[0]=1,就表示 X[0]的四


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


个特征,对应的鸾尾花是第二类,总共有三类鸾尾花


X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], test_size=10)


#在绘图的时候,指定数据列的名称来自数据集的'feature_names'


iris_dataframe=pd.DataFrame(X_train, columns=iris_dataset['feature_names'])


#绘图,散点矩阵图,每个小图和横轴是一个特征,纵轴是另个特征,


#例如花萼长做横轴、花萼宽做纵轴,可以看出不同的花萼长、花萼宽数据对应的鸾尾花类型分布情况


grr=scatter_matrix(iris_dataframe, c=y_train, figsize=(15,15), marker='o', hist_kwds={'bins':20}, s=60, alpha=.8)


#使用 K 最邻近算法来做训练


knn = KNeighborsClassifier(n_neighbors=1)


#用前面分割好的数据来做训练,X 是特征,y 是确定的鸾尾花的类型


knn.fit(X_train, y_train)


#训练完毕后,输入前面分割好的 10 组特征值,用 K 最邻近算法预测这 10 组特征值分别是哪 10 种鸾尾花


y_pred = knn.predict(X_test)


#把预测结果打印出来


print("测试集预测结果:\n{}".format(y_pred))


#y_test 是早就准备好的,那 10 组特征对应的实际的类型


print("测试集实际结果:\n{}".format(y_test))


#将预测结果和实际结果做对比,可以得到预测的准确率


print("knn 打分:{:.2f}".format(knn.score(X_test, y_test)))


  1. 写完了代码,点击下图红框中的按钮,即可运行:



  1. 运行结果会立即显示出来,如下图:



  1. 您可以修改源码中 train_test_split 方法的 test_size 参数,例如从 10 改为 50,这样学习样本就减少了,而测试数据增加了,理论上推测准确率会下降,请您自行修改和验证这个推论;


至此,您已经搭建好了机器学习的开发环境,并且运行了最经典的入门 Demo。

关于 Docker

一行命令就搭建好了开发环境,您也许会对该命令中的 Docker 镜像感兴趣,该镜像的关键是两个文件:制作镜像的Dockerfile和容器启动的docker-entrypoint.sh,您可以在可以从 GitHub 上下载这两个文件,地址和链接信息如下表所示:


| 名称 | 链接 | 备注 |


| :-- | :-- | :-- |


| 项目主页 | https://github.com/zq2599/blog_demos | 该项目在 GitHub 上的主页 |

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
Docker下,五分钟极速体验机器学习,java从入门到精通第五版防盗码