markdown效果在這
https://www.zybuluo.com/Qinxianshen/note/990758
我們首先要理解什么叫做學(xué)習(xí)?人在學(xué)習(xí)的過程中,特別是遇到陌生的事物的時(shí)候,通常會(huì)觀察新事物的特征
我們把各種特征用一個(gè)表畫好
| 顏色鮮艷? ? ? ? | 外表黏滑? | 生長地濕潤? | 花萼長度 | 花萼寬度 | 花瓣長度 | 花瓣寬度 |
| --------? | -----:? |-----:? | -----:? | -----:? | -----:? | -----:? | -----:? | -----:? | -----:? |? :----:? |
| 1? ? | 0 |? 0? ? |? 0? |? 0? | 0 |? 0 |
用0表示否
1表示是 來記錄下事物的特征,把這些特征用一個(gè)向量組合好,然后每一個(gè)樣本X對(duì)應(yīng)一個(gè)標(biāo)簽Y,這個(gè)Y也用一個(gè)向量表示,表示是不是某一個(gè)新事物 當(dāng)樣本和標(biāo)簽多了,我們就可以對(duì)他進(jìn)行訓(xùn)練,得到一個(gè)模型,這樣以后我們就可以用這個(gè)模型對(duì)這一類事物進(jìn)行分類或者預(yù)測(cè)
鳶尾花數(shù)據(jù)集(IRIS)是一個(gè)經(jīng)典的數(shù)據(jù)集。
其中有150個(gè)樣本,我們目標(biāo)是分成三類,分別是山鳶、變色鳶尾、維基尼亞鳶。(target,也就是Y)
| 山鳶? ? ? ? | 變色鳶尾? | 維基尼亞鳶? |
| --------? | -----:? |-----:? | -----:? | -----:? | -----:? | -----:? | -----:? | -----:? | -----:? |? :----:? |
| 0? ? | 1 |? 2? ? |
這些樣本有4個(gè)的特征(Feature)四維 分別是花萼長度,寬度,花瓣長度,寬度
```python
import numpy as np # 快速操作結(jié)構(gòu)數(shù)組的工具
import pandas as pd # 數(shù)據(jù)分析處理工具
import matplotlib.pyplot as plt # 畫圖工具
from sklearn import datasets # 機(jī)器學(xué)習(xí)庫
#數(shù)據(jù)集 0-setosa、1-versicolor、2-virginica
scikit_iris = datasets.load_iris()
# 轉(zhuǎn)換成pandas的DataFrame數(shù)據(jù)格式,方便觀察數(shù)據(jù)
iris = pd.DataFrame(data=np.c_[scikit_iris['data'], scikit_iris['target']],
columns=np.append(scikit_iris.feature_names, ['y']))
iris.head(2)
# 選擇全部特征訓(xùn)練模型
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新數(shù)據(jù)
knn.predict([[3, 2, 2, 5]])
from abupy import train_test_split
from sklearn import metrics
# 分割訓(xùn)練-測(cè)試集
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)))
```