专有名词

  • 机器学习 (machine learning)
  • 预测分析 (predictive analytics)
  • 统计学习 (statistical learning)
  • 监督学习 (supervised learning)
  • 无监督学习 (unsupervised learning)
  • 样本 (sample)
  • 特征 (feature)
  • 特征提取 (feature extraction)
  • 分类 (classification)
  • 类别 (class)
  • 标签 (label)
import numpy as np
import matplotlib as plt
import pandas as pd
import scipy as sp
import sklearn # 以上为我们需要的类

1、鸢尾花分类

关键词

  • 分类(classification)
  • 散点图(Scatter Plot)
  • 散点图矩阵(Pair Plot)
  • 训练数据(training data)
  • 训练集(training set)
  • 留出集(hold-out set)

鸢尾花分类,是机器学习的一个入门和经典的知识点。我们往往可以通过这个小例子入手,来了解一下什么是机器学习。

python的scikit-learn模块已经将鸢尾花的数据进行内置,所以只需要调用函数进行读取和训练即可,无需准备数据。

# 输出iris——dataset中的键,了解一下存储了那些内容
from sklearn.datasets import load_iris iris_dataset = load_iris()
print("keys of iris_dataset:{}\n".format(iris_dataset.keys()))
keys of iris_dataset:dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names', 'filename'])

load_iris返回的iris对象是一个Bunch对象,与字典很相似,里面包含了键和值

# 输出描述信息的部分内容
print(iris_dataset['DESCR'][:200]+'\n')
.. _iris_dataset:

Iris plants dataset
-------------------- **Data Set Characteristics:** :Number of Instances: 150 (50 in each of three classes)
:Number of Attributes: 4 numeric, predictive

上面的DESCR键对应的值为数据集的简要说明。

target_name键对应的值是一个字符串数组,里面包含我们要预测的花的种类

print("Target_name:{}".format(iris_dataset['target_names']))
Target_name:['setosa' 'versicolor' 'virginica']

feature_names键对应的值是一个字符串列表,对每一个特征进行了说明

print("Feature name:{}".format(iris_dataset['feature_names']))
Feature name:['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']

通常为了可以达到训练和测试的目的,将收集好的带标签数据分为两部分,一部分数据用于构建机器学习模型,叫做训练数据(training data)或训练集(training set)其余的数据用来评估模型的性能,叫做测试数据(test data)测试集(test set)或留出集(hold-out set)。

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris iris_dataset = load_iris()
X_train,X_target,y_train,y_target = train_test_split(iris_dataset['data'],iris_dataset['target'],random_state=0)
print("X_train:{}\n X_tar:{}\n y_tar:{}\n y_tra:{}\n".format(X_train,X_target,y_target,y_train))

为了实现训练和测试的目的,scikit-learn内置了train_test_split函数,帮助我们对训练、测试数据,和训练、测试的标签默认按3:1的比例进行拆分。从而返回数据给定的参数。也可以使用随机种子的形式进行随机按比例分布。

# 利用X_train中的数据创建DataFrame
# 利用iris_dataset.feature_names中的字符串对数据阵列进行标记
iris_dataframe = pd.DataFrame(X_train, columns=iris_dataset.feature_names)
# 利用DataFrame创建散点图矩阵,按y_train着色
grr = pd.scatter_matrix(iris_dataframe, c=y_train, figsize=(15, 15), maker='0',hist_kwds={'bins':20}, s=60,alpha=.8)

scikit-learn中所有的机器学习模型都在各自的类中实现,这些类被称之为Estimator类。k近邻分类算法是在neighbor模块的KNeightborsClassifier类中实现。


from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train,y_train)

KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',metric_params=None, n_jobs=None, n_neighbors=1, p=2,weights='uniform')

X_new = np.array([[5,2.9,1,0.2]])
prediction = knn.predict(X_new)
print("Result of Prediction:{}".format(prediction))
print("{}".format(iris_dataset['target_names'][prediction]))

Result of Prediction:[0]

['setosa']

流程总结:

  1. 准备数据
  2. 分为训练数据和测试数据
  3. 观察数据
  4. 构建模型
  5. 做出预测
  6. 评估精度
# 代码总结
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.neighbors import KNeighborsClassifier iris_dataset = load_iris()
X_train,X_target,y_train,y_target = train_test_split(iris_dataset['data'],iris_dataset['target'],random_state=0)
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(X_train,y_train)
print("Test set score:{:.2f}".format(knn.score(X_target,y_target)))
Test set score:0.97

一、【python】机器学习基础的更多相关文章

  1. Python机器学习基础教程-第2章-监督学习之决策树集成

    前言 本系列教程基本就是摘抄<Python机器学习基础教程>中的例子内容. 为了便于跟踪和学习,本系列教程在Github上提供了jupyter notebook 版本: Github仓库: ...

  2. Python机器学习基础教程-第2章-监督学习之决策树

    前言 本系列教程基本就是摘抄<Python机器学习基础教程>中的例子内容. 为了便于跟踪和学习,本系列教程在Github上提供了jupyter notebook 版本: Github仓库: ...

  3. Python机器学习基础教程-第2章-监督学习之线性模型

    前言 本系列教程基本就是摘抄<Python机器学习基础教程>中的例子内容. 为了便于跟踪和学习,本系列教程在Github上提供了jupyter notebook 版本: Github仓库: ...

  4. Python机器学习基础教程-第2章-监督学习之K近邻

    前言 本系列教程基本就是摘抄<Python机器学习基础教程>中的例子内容. 为了便于跟踪和学习,本系列教程在Github上提供了jupyter notebook 版本: Github仓库: ...

  5. Python机器学习基础教程

    介绍 本系列教程基本就是搬运<Python机器学习基础教程>里面的实例. Github仓库 使用 jupyternote book 是一个很好的快速构建代码的选择,本系列教程都能在我的Gi ...

  6. Python机器学习基础教程-第1章-鸢尾花的例子KNN

    前言 本系列教程基本就是摘抄<Python机器学习基础教程>中的例子内容. 为了便于跟踪和学习,本系列教程在Github上提供了jupyter notebook 版本: Github仓库: ...

  7. python 机器学习基础教程——第一章,引言

    https://www.cnblogs.com/HolyShine/p/10819831.html # from sklearn.datasets import load_iris import nu ...

  8. 画出决策边界线--plot_2d_separator.py源代码【来自python机器学习基础教程】

    import numpy as np import matplotlib.pyplot as plt from .plot_helpers import cm2, cm3, discrete_scat ...

  9. python机器学习经典实例PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取提取码:caji 在如今这个处处以数据驱动的世界中,机器学习正变得越来越大众化.它已经被广泛地应用于不同领域,如搜索引擎.机器人.无人驾驶汽车等.Python机器学习经典实例首先通过实用的案例 ...

  10. Python机器学习及实践_从零开始通往KAGGLE竞赛之路PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取提取码:i5nw Python机器学习及实践面向所有对机器学习与数据挖掘的实践及竞赛感兴趣的读者,从零开始,以Python编程语言为基础,在不涉及大量数学模型与复杂编程知识的前提下,逐步带领读 ...

随机推荐

  1. 动态SQL各个标签作用以及注意事项详解

    创建com.mybatis包,包含:UserMapper.xml和mybatis-config.xml UserMapper.xml代码: <?xml version="1.0&quo ...

  2. Mysql 远程连接错误排查

    1. 测试本地与远程服务器端口能否连通 telnet  远程IP  端口号 telnet 192.168.1.1 3306 2.如果是在aliyun或者aws云服务器上自建数据库 2.1 在安全组里开 ...

  3. centos8-django项目部署 nginx+uwsgi

    1.虚拟环境virtualenv安装 1.安装virtualenv pip3 install virtualenv 2.创建目录,把项目文件传过来 mkdir My cd My 3.创建独立运行环境- ...

  4. P2309(逆序对)

    传送门 描述:给定一个序列长n,求多少子串和大于零. \(一开始一定会想到根据前缀和优化,枚举起点和中点O(n)解决\) \(那更高效的方法呢?实际上,我们上面就是要求S_i-S_j>0的数量\ ...

  5. P2422 良好的感觉(两头单调)

    描述:https://www.luogu.com.cn/problem/P2422 kkk做了一个人体感觉分析器.每一天,人都有一个感受值Ai,Ai越大,表示人感觉越舒适.在一段时间[i, j]内,人 ...

  6. ACM入门问题:最大利益问题

    设最大的利益为maxv,最小值为minv 1.求最大利益的简单算法 ;j<=n-;j++) ;i<=j-;i++) maxv =(maxv与R[j]-R[i]中较大的一个) maxv=ma ...

  7. CSS实现div填充剩余高度

    相信小伙伴们经常会遇到这个问题,我也是填了很多坑,查了很多资料,才解决的,下面我列出2个方法: 我们的需求如图: 1:(这个方法不推荐使用,因为可能会因为设备不同,而出现未知BUG,特别是div出现p ...

  8. BIO、NIO、AIO的形象比喻

    BIO (Blocking I/O):同步阻塞I/O模式. NIO (New I/O):同步非阻塞模式. AIO (Asynchronous I/O):异步非阻塞I/O模型. 先看阻塞和非阻塞的区别, ...

  9. Luogu P3846 BSGS算法

    https://www.luogu.com.cn/problem/P3846 BSGS这个东西是用来干啥的? 形如下面这个式子: \[a^b = c\;(mod\;p) \] 其中:p是一个质数.\( ...

  10. 8086 8253 proteus仿真实验

    目录 实验内容 电路图 计数初值 关于8523的地址 关于灯的地址 代码内容 实验内容 电路图 计数初值 已知\(f_{clk0}=100khz\),所以\(T_{clk0}=\frac{1}{f_{ ...