本文为作者学习之余创作,如有不正,请您指出.
预备知识
监督学习(Supervised Learning),最常用也是最成功的机器学习类型之一。
一言以蔽之,监督学习,就是有标签的学习。给你一大堆西瓜,它有根蒂、敲声、色泽等特征,同时,我们也有了这些西瓜中哪些是好瓜、哪些是坏瓜这一信息(习惯上称之为标签。当然,现实生活中的特征或者标签数目可能远不止此)。
监督机器学习问题主要有两种:分类、回归。(当然,说法不一,至少李宏毅老师认为远不止此)。但我们不应将重心置于此处。
好!!!到此为止。
关键词汇总(中英文)
- 监督学习(supervised Learning)
- 特征(feature)
- 标签或者目标输出(label or target output)
- and so on…
好!!!到此为止。具体请参考周志华的“西瓜书”.
分类简介
分类(Calssification),通俗来讲,就是给你一个西瓜,让你来预测它是好瓜还是坏瓜。怎么预测呢?
我们自然会敲一敲它,摸一摸它,看一看它。实际上,我们是根据其特征来判断它是不是一个好瓜。
那我们又为什么会根据特征来判断一颗西瓜是好瓜还是坏瓜呢?是因为我们以往的生活经验告诉我们,敲一敲你相中的西瓜,就能大概知道它是不是一颗好瓜了。
也就是说,以往的生活经验很重要。(刚出生的婴儿当然不会辨别好瓜与坏瓜)。这就回答了我们在第一行提到的"怎么预测"的问题。
好!!!也就是说,我们是根据已有的一堆数据(并且带有标签),来得到一个判断规则。这样,再给我一个新的数据,我就能根据其特征来预测它是好瓜还是坏瓜了。
常用分类算法
- KNN
- Logistic Regression
- SVM
- and so on…
KNN
本文仅介绍KNN这一算法,其他算法将会在后续学习过程中一一介绍。
KNN原理讲解
KNN(K-Nearest-Neighbor),是一个很容易理解的算法。要对一个新数据点作出预测,只需要计算当前已有数据集中与它前k近的数据点,则新的数据点就属于多者那一类即可。
1.实例一----鸢尾花分类
"""导入库"""
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import mglearn
from sklearn.datasets import load_iris
"""导入数据集"""
iris_dataset = load_iris()
"""做一些小check"""
print(f"Keys of iris_dataset: \n{
iris_dataset.keys()}")
print(iris_dataset['target'])
print(iris_dataset['target_names'])
print(iris_dataset['feature_names'])
"""将数据集分为训练集、测试集"""
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(
iris_dataset['data'],iris_dataset['target'],random_state=0)
"""利用X_train中的数据创建DataFrame"&#