markdown效果在这
https://www.zybuluo.com/Qinxianshen/note/990758
我们首先要理解什么叫做学习?人在学习的过程中,特别是遇到陌生的事物的时候,通常会观察新事物的特征
我们把各种特征用一个表画好
| 颜色鲜艳 | 外表黏滑 | 生长地湿润 | 花萼长度 | 花萼宽度 | 花瓣长度 | 花瓣宽度 |
| -------- | -----: |-----: | -----: | -----: | -----: | -----: | -----: | -----: | -----: | :----: |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 |
用0表示否
1表示是 来记录下事物的特征,把这些特征用一个向量组合好,然后每一个样本X对应一个标签Y,这个Y也用一个向量表示,表示是不是某一个新事物 当样本和标签多了,我们就可以对他进行训练,得到一个模型,这样以后我们就可以用这个模型对这一类事物进行分类或者预测
鸢尾花数据集(IRIS)是一个经典的数据集。
其中有150个样本,我们目标是分成三类,分别是山鸢、变色鸢尾、维基尼亚鸢。(target,也就是Y)
| 山鸢 | 变色鸢尾 | 维基尼亚鸢 |
| -------- | -----: |-----: | -----: | -----: | -----: | -----: | -----: | -----: | -----: | :----: |
| 0 | 1 | 2 |
这些样本有4个的特征(Feature)四维 分别是花萼长度,宽度,花瓣长度,宽度
```python
import numpy as np # 快速操作结构数组的工具
import pandas as pd # 数据分析处理工具
import matplotlib.pyplot as plt # 画图工具
from sklearn import datasets # 机器学习库
#数据集 0-setosa、1-versicolor、2-virginica
scikit_iris = datasets.load_iris()
# 转换成pandas的DataFrame数据格式,方便观察数据
iris = pd.DataFrame(data=np.c_[scikit_iris['data'], scikit_iris['target']],
columns=np.append(scikit_iris.feature_names, ['y']))
iris.head(2)
# 选择全部特征训练模型
X = iris[scikit_iris.feature_names]
# label
y = iris['y']
# 第一步,选择model
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=1)
# 第二步,fit X、y
knn.fit(X, y)
# 第三步,predict新数据
knn.predict([[3, 2, 2, 5]])
from abupy import train_test_split
from sklearn import metrics
# 分割训练-测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=4)
# K=15
knn = KNeighborsClassifier(n_neighbors=15)
knn.fit(X_train, y_train)
y_pred_on_train = knn.predict(X_train)
y_pred_on_test = knn.predict(X_test)
# print(metrics.accuracy_score(y_train, y_pred_on_train))
print('accuracy: :{}'.format(metrics.accuracy_score(y_test, y_pred_on_test)))
```