構建第一個模型:KNN演算法(Iris_dataset)
阿新 • • 發佈:2022-04-10
利用鳶尾花資料集完成一個簡單的機器學習應用~萬丈高樓平地起,雖然很基礎,但是還是跟著書敲了一遍程式碼。
一、模型構建流程
1、獲取資料
- 本次實驗的Iris資料集來自skicit-learn的datasets模組
from sklearn.datasets import load_iris
iris_dataset = load_iris()
-
檢視一下資料:
-
可以發現iris_dataset類似一個字典,裡面包含鍵和值,其中鍵值對包括資料的簡介(DESC)、標籤值(target)、資料樣本(data),標籤名(target name)等
2、資料預處理
- 本次使用的資料無需預處理,已經處理好了,目標值也被表示為0,1,2的數字標籤,data和target都是ndarray陣列。
3、特徵工程
- 本次資料還比較簡單,特徵也少,無需特徵選擇,
- 這裡利用pandas的scatter.metrix將資料進行視覺化一下,進行觀察各個特徵之間的關係,
在此之前先劃分一下訓練集和測試集
- 這裡利用pandas的scatter.metrix將資料進行視覺化一下,進行觀察各個特徵之間的關係,
#劃分訓練集,測試集 X_train,X_test,y_trian,y_test = train_test_split(irs_dataset['data'],irs_dataset['target'],random_state = 0) #利用pd,畫散點圖,觀察資料是否有異常值 irs_dataframe = pd.DataFrame(X_train,columns=irs_dataset.feature_names) grr = pd.plotting.scatter_matrix(irs_dataframe,c=y_trian,figsize=(8,8),marker='o', hist_kwds={'bins':20},s=60,alpha=.8)
4、(機器學習)構建模型
-
考慮到這個資料特點,這裡使用KNN演算法
-
KNN:在判斷一個數據X的標籤時,會計算距離它與其他所有樣本x1,x2,x3,...,的距離,選擇距離它最近的k個樣本的標籤值,作為該資料X的標籤值。
#建立模型:KNN演算法
knn = KNeighborsClassifier(n_neighbors=2) #把k值設為2
knn.fit(X_train, y_trian) #基於訓練集構建模型,兩個引數都是Numpy 陣列
5、模型評估
-
怎麼知道該模型在預測新資料時的有效性呢?有很多評估指標,比如說精確率、召回率...
-
這裡使用精確率:正確預測列別的資料,佔所有資料的比例
#評估模型
y_pred = knn.predict(X_test)
print(y_pred)
print("precision={:.2f}".format(np.mean(y_pred==y_test)))
print(knn.score(X_test, y_test))
二、遇到的問題
- 按照書上所寫使用pandas的scatter.metrix畫散點圖做相關性分析時遇到’module ‘pandas’ has no attribute ‘scatter_matrix’'這個問題
-
解決方法:
-
現在的pandas的scatter_matrix用法已經發生變化了,在使用時需要加上plotting,即:pandas.plotting.scatter_matrix
三、參考文獻
《python機器學習基礎教程》--【德】Adreas C.Muller