機器學習3 分類演算法

2022-01-09 22:35:59 字數 3321 閱讀 2336

機器學習一般的資料集會劃分為兩個部分:

劃分比例:

想一下之前做的特徵工程的步驟?

我們把特徵工程的介面稱之為轉換器,其中轉換器呼叫有這麼幾種形式

在sklearn中,估計器(estimator)是乙個重要的角色,是一類實現了演算法的api

2、用於回歸的估計器:

3、用於無監督學習的估計器

如果乙個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。

兩個樣本的距離可以通過如下公式計算,又叫歐式距離

假設我們有現在幾部電影

其中? 號電影不知道類別,如何去**?我們可以利用k近鄰演算法的思想

"""knn演算法對鳶尾花進行分類

"""#

獲取資料

iris=load_iris()

#劃分資料集

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

#特徵工程:標準化

transfer=standardscaler()

x_train=transfer.fit_transform(x_train)

x_test =transfer.transform(x_test)

#knn演算法預估器

estimator=kneighborsclassifier(n_neighbors=3)

estimator.fit(x_train,y_train)

#模型評估

#方法1:直接比對真實值和**值

y_predict=estimator.predict(x_test)

print("

y_predict:\n

",y_predict)

print("

直接比對真實值和**值:\n

",y_test==y_predict)

#方法2:計算準確率

score=estimator.score(x_test,y_test)

print("

準確率為:\n

",score)

return none

結果為:

k值取很小:容易受到異常點的影響

k值取很大:受到樣本均衡的問題

距離計算上面,時間複雜度高

缺點:使用場景:小資料場景,幾千~幾萬樣本,具體場景具體業務去測試

交叉驗證目的:為了讓被評估的模型更加準確可信

交叉驗證:將拿到的訓練資料,分為訓練和驗證集。以下圖為例:將資料分成5份,其中乙份作為驗證集。然後經過5次(組)的測試,每次都更換不同的驗證集。即得到5組模型的結果,取平均值作為最終結果。又稱5折交叉驗證。

我們之前知道資料分為訓練集和測試集,但是為了讓從訓練得到模型結果更加準確。做以下處理

通常情況下,有很多引數是需要手動指定的(如k-近鄰演算法中的k值),這種叫超引數。但是手動過程繁雜,所以需要對模型預設幾種超引數組合。每組超引數都採用交叉驗證來進行評估。最後選出最優引數組合建立模型。

"""knn演算法對鳶尾花進行分類,新增網格搜尋和交叉驗證

"""#

獲取資料

iris=load_iris()

#劃分資料集

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

#特徵工程:標準化

transfer=standardscaler()

x_train=transfer.fit_transform(x_train)

x_test =transfer.transform(x_test)

#knn演算法預估器

estimator=kneighborsclassifier()

#加上網格搜尋與交叉驗證

param_dict=

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

estimator.fit(x_train,y_train)

#模型評估

#方法1:直接比對真實值和**值

y_predict=estimator.predict(x_test)

print("

y_predict:\n

",y_predict)

print("

直接比對真實值和**值:\n

",y_test==y_predict)

#方法2:計算準確率

score=estimator.score(x_test,y_test)

print("

準確率為:\n

",score)

print("

最佳引數:\n

", estimator.best_params_)

print("

最佳結果:\n

", estimator.best_score_)

print("

最佳估計器:\n

", estimator.best_estimator_)

print("

每次交叉驗證的結果為:\n

", estimator.cv_results_)

return none

結果為:

機器學習(2) 分類問題

參考部落格 根據一些 feature 進行分類,每個節點提乙個問題,通過判斷,將資料分為兩類,再繼續提問。這些問題是根據已有資料學習出來的,再投入新資料的時候,就可以根據這棵樹上的問題,將資料劃分到合適的葉子上。個人總結 不能保證正確 一組資料的特徵用向量表示,比如 x1,x2,x3,x4 有4個特...

機器學習演算法面試口述(7) 分類小結

這個系列是為了應對找工作面試時面試官問的演算法問題,所以只是也謝演算法的簡要介紹,後期會陸續補充關於此 演算法的常見面問題。分類的概念就說了,分類一般分為兩個階段 學習階段以及分類階段 常用的分類方法有 決策樹不需要任何領域的知識或者引數的設定,其可以處理高維資料,簡單快速。若分類的資料是連續的,則...

機器學習 分類3

今天,輸出了cross validation 在每個類別裡面的 模型評估值。主要有下面2步 這是將輸出變成pandas矩陣的函式 from sklearn.metrics import classification report from collections import defaultdict...