機器學習Demo1 鳶尾花

2021-10-04 11:38:30 字數 4264 閱讀 5819

文章**基於 2023年3天快速入門python機器學習p21-p22 修改而來(講課的小姐姐聲音非常好聽)

2.測試集的劃分

3.標準化

4.演算法預估器

5.模型評估

6.模型成果儲存

7.完整**

該資料集**於網路。iris也稱鳶尾花卉資料集,是一類多重變數分析的資料集。通過花萼長度,花萼寬度,花瓣長度,花瓣寬度4個屬性**鳶尾花卉屬於(setosa,versicolour,virginica)三個種類中的哪一類。

我這裡記錄一下課程中鳶尾花案例的乙個**實現過程,其中有關機器學習相關的知識點不是很詳細,完整**會放在最後

機器學習就是通過大量的資料經過演算法訓練建立乙個模型,然後通過這個模型可以對這類資料進行乙個**。

也就是說要進行機器學習先要有資料,下面是一些可以獲得資料集的**:

ucisklearn

阿里天池

kaggle

這裡用的是sklearn的鳶尾花資料集,如果是本地的資料的話就要自己寫方法引入一下。

依賴庫安裝順序numpy / scipy / matplotlib / scikit-learn

安裝方式:

pip install numpy
from sklearn.datasets import load_iris

iris = load_iris()

print("資料集", iris.data)

print("目標集", iris.target)

這裡通過列印我們可以看到資料集是乙個二維陣列,目標集是乙個一維陣列

其中資料集中的乙個陣列,對應目標中相同位置的數字 如:0而目標集中的每種數字表示一類。

為什麼要劃分測試集?

因為這個資料集只有這麼多,所以我們要分出一部分用於後續驗證建立的模型是否正確

其中x_train, x_test, y_train, y_test分別為訓練集測試集訓練集類別測試集類別

x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target)
讓不同的屬性之間無量綱化,比如說我們要給房子分類,房子的大小是120平公尺,**24 00 000元這時我們去構建模型時兩個數字之間的相差較大不利於模型建立,所以我們要將其標準化在一定的區間上。

訓練集和測試集都要進行標準化,不過測試集不需要fit過程

transfer = standardscaler()

x_train = transfer.fit_transform(x_train)

x_test = transfer.transform(x_test)

knn的全稱是k nearest neighbors,意思是k個最近的鄰居,從這個名字我們就能看出一些knn演算法的蛛絲馬跡了。k個最近鄰居,毫無疑問,k的取值肯定是至關重要的。

這裡第一步我們例項化了乙個kneighborsclassifier物件並且指定了k值為3

第二步我們傳入了訓練集x_train,和訓練驗證集y_train對其進行訓練以生成模型

estimator = kneighborsclassifier(n_neighbors=3)

estimator.fit(x_train, y_train)

上面說到k的取值肯定是至關重要的

所以通過模型調優可以獲得相對更好的k值,而不要用我們去給定

這裡我給定k的範圍是在[1,3,5,7,9,11]

estimator = kneighborsclassifier()

param_dict =

estimator = gridsearchcv(estimator, param_grid=param_dict, cv=10)

estimator.fit(x_train, y_train)

模型建立後我們需要驗證它的好壞,這裡主要是兩種方式

y_predict = estimator.predict(x_test)

print("y_predict:\n", y_predict)

print("直接比對", y_test == y_predict)

score = estimator.score(x_test, y_test)

print("準確率:", score)

一般乙個複雜的機器學習過程時間都是很長的,所以如何機器學習獲得的模型達到了我們的預期,我們就需要將它儲存起來,這樣下一次就可以之間呼叫模型了

joblib.dump(estimator, "achievements/flowers.pkl")
from sklearn.datasets import load_iris

from sklearn.model_selection import train_test_split, gridsearchcv

from sklearn.preprocessing import standardscaler

from sklearn.neighbors import kneighborsclassifier

import joblib

def knn_iris():

# knn演算法

# 1.獲取資料

iris = load_iris()

print("資料集", iris.data)

print("目標集", iris.target)

# 2.劃分

x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target)

# 3.標準化

transfer = standardscaler()

x_train = transfer.fit_transform(x_train)

x_test = transfer.transform(x_test)

# 4.knn 演算法預估器

# estimator = kneighborsclassifier(n_neighbors=3)

# estimator.fit(x_train, y_train)

# 4.knn 演算法預估器 加入網格搜尋與模型調優

estimator = kneighborsclassifier()

param_dict =

estimator = gridsearchcv(estimator, param_grid=param_dict, cv=10)

estimator.fit(x_train, y_train)

# 5.模型評估

# 5.1 對比真實值和**值

y_predict = estimator.predict(x_test)

print("y_predict:\n", y_predict)

print("直接比對", y_test == y_predict)

# 5.2 計算準確值

score = estimator.score(x_test, y_test)

print("準確率:", score)

print("最佳引數:", estimator.best_params_)

print("最佳結果:", estimator.best_score_)

print("最佳估計器:", estimator.best_estimator_)

print("交叉驗證結果:", estimator.cv_results_)

# 6. 成果儲存

joblib.dump(estimator, "achievements/flowers.pkl")

if __name__ == "__main__":

# 鳶尾花

knn_iris()

Python 機器學習 鳶尾花分類

python 機器學習 鳶尾花分類 匯入類庫 from pandas import read csv from pandas.plotting import scatter matrix from matplotlib import pyplot from sklearn.model selecti...

機器學習 鳶尾花資料集

鳶尾花資料集採集的是鳶尾花的測量資料以及其所屬的類別。每個類的觀察值數量是均等的。一共有 150 個觀察值,4個輸入變數和1個輸出變數。測量資料報括 萼片長度 cm 萼片寬度 cm 花瓣長度 cm 花瓣寬度 cm 類別共分為三類 iris setosa,iris versicolour,iris v...

鳶尾花分類 機器學習 鳶尾花資料集 貝葉斯分類

step1 庫函式匯入 import warnings warnings.filterwarnings ignore import numpy as np 載入鶯尾花資料集 from sklearn import datasets 匯入高斯樸素貝葉斯分類器 from sklearn.bayes im...