🎼個人主頁:【Y小夜】
😎作者簡介:一位雙非學校的大二學生,編程愛好者,
專注于基礎和實戰分享,歡迎私信咨詢!
🎆入門專欄:🎇【MySQL,Java基礎,Rust】
🎈熱門專欄:🎊【Python,Javaweb,Vue框架】
感謝您的點贊、關注、評論、收藏、是對我最大的認可和支持!??
學習推薦:
????????人工智能是一個涉及數學、計算機科學、數據科學、機器學習、神經網絡等多個領域的交叉學科,其學習曲線相對陡峭,對初學者來說可能會有一定的挑戰性。幸運的是,隨著互聯網教育資源的豐富,現在有大量優秀的在線平臺和網站提供了豐富的人工智能學習材料,包括視頻教程、互動課程、實戰項目等,這些資源無疑為學習者打開了一扇通往人工智能世界的大門。
????????前些天發現了一個巨牛的人工智能學習網站:前言 – 人工智能教程通俗易懂,風趣幽默,忍不住分享一下給大家。
目錄
🎯文章目的
🎯K最近鄰算法在分類任務中的應用
🥏在skearn中生成一個二元分類數據集,創建K最近鄰分類模型,訓練模型,并進行可視化,預測新數據的分類結果,查看預測準確率。
🎈代碼解析
🎈運行結果
🥏在skearn中生成一個多元分類數據集,創建K最近鄰分類模型,訓練模型,并進行可視化,查看預測準確率。
🎈代碼解析
🎈運行結果
🎯K最近鄰算法在回歸分析中的應用
🥏在skearn中生成一個回歸分析任務數據集,并進行可視化
🎈代碼解析
🎈運行結果
🥏訓練K最近鄰模型進行并進行回歸分析預測,并進行可視化
🎈代碼解析
🎈運行結果
🥏查看模型準確率,并進行模型調優,調整K參數的值,查看K參數分別取1,2,5,10時,模型的訓練準確率和預測準確率有何變化。
🎈k為2時
🎈k為5時
🎈k為10時
🎯文章目的
(一)理解K最近鄰算法的基本原理
(二)能夠使用sklearn庫進行K最近鄰分類和回歸模型的訓練和預測
(三)學會調整超參數K和權重參數weights
🎯K最近鄰算法在分類任務中的應用
🥏在skearn中生成一個二元分類數據集,創建K最近鄰分類模型,訓練模型,并進行可視化,預測新數據的分類結果,查看預測準確率。
🎈代碼解析
from sklearn.datasets import make_blobs
from sklearn.neighbors import KNeighborsClassifier
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
data=make_blobs(n_samples=100,centers=2,random_state=9)
x,y=data
plt.scatter(x[y==1,0],x[y==1,1],cmap=plt.cm.spring,edgecolor='k',marker='^')
plt.scatter(x[y==0,0],x[y==0,1],cmap=plt.cm.spring,edgecolor='k',marker='o')
plt.show()
?????????這段代碼使用了scikit-learn庫中的make_blobs函數生成了一個包含100個樣本的數據集,其中有兩個類別。然后使用matplotlib庫繪制了散點圖,將不同類別的樣本用不同的標記表示出來。
具體來說,代碼首先導入了所需的庫和模塊:
from sklearn.datasets import make_blobs
from sklearn.neighbors import KNeighborsClassifier
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
接下來,使用make_blobs
函數生成了一個包含100個樣本的數據集,其中有兩個類別(centers=2),并設置了隨機種子為9(random_state=9):
data = make_blobs(n_samples=100, centers=2, random_state=9)
然后,將數據集拆分為特征矩陣X和目標向量y:
x, y = data
最后,使用matplotlib庫繪制了散點圖,將不同類別的樣本用不同的標記表示出來:
plt.scatter(x[y==1, 0], x[y==1, 1], cmap=plt.cm.spring, edgecolor='k', marker='^')
plt.scatter(x[y==0, 0], x[y==0, 1], cmap=plt.cm.spring, edgecolor='k', marker='o')
plt.show()
這樣,就可以在圖形界面中看到兩個類別的樣本被繪制成散點圖的形式。
import numpy as np
clf=KNeighborsClassifier()
clf.fit(x,y)
x_min,x_max=x[:,0].min()-1,x[:,0].max()+1
y_min,y_max=x[:,1].min()-1,x[:,1].max()+1
xx,yy=np.meshgrid(np.arange(x_min,x_max,.02),np.arange(y_min,y_max,.02))
z=clf.predict(np.c_[xx.ravel(),yy.ravel()])
z=z.reshape(xx.shape)
plt.pcolormesh(xx,yy,z,cmap=plt.cm. Set2)
plt.scatter(x[y==1,0],x[y==1,1],cmap=plt.cm.spring,edgecolor='k',marker='^')
plt.scatter(x[y==0,0],x[y==0,1],cmap=plt.cm.spring,edgecolor='k',marker='o')
plt.xlim(xx.min(),xx.max())
plt.ylim(yy.min(),yy.max())
plt.title("Classifier:KNN")
plt.show()
print(clf.score(x,y))
????????這段代碼是使用K近鄰分類器(KNN)對數據進行分類,并繪制分類結果的散點圖。首先導入numpy庫,然后創建一個KNN分類器對象,接著使用fit方法訓練模型。接下來,計算數據的最小值和最大值,用于創建網格。然后使用predict方法預測網格上的點所屬的類別,并將結果轉換為與網格形狀相同的數組。最后,使用matplotlib庫繪制分類結果的散點圖,并顯示分類器的準確率。
解析:
- 導入numpy庫
- 創建KNN分類器對象
- 使用fit方法訓練模型
- 計算數據的最小值和最大值
- 創建網格
- 使用predict方法預測網格上的點所屬的類別
- 將結果轉換為與網格形狀相同的數組
- 使用matplotlib庫繪制分類結果的散點圖
- 顯示分類器的準確率
🎈運行結果
?
?
🥏在skearn中生成一個多元分類數據集,創建K最近鄰分類模型,訓練模型,并進行可視化,查看預測準確率。
🎈代碼解析
from sklearn.datasets import make_blobs
from sklearn.neighbors import KNeighborsClassifier
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
data2=make_blobs(n_samples=300,centers=4,random_state=4)
x2,y2=data2
plt.scatter(x2[y2==0,0],x2[y2==0,1],cmap=plt.cm.spring,edgecolor='k',marker='o')
plt.scatter(x2[y2==1,0],x2[y2==1,1],cmap=plt.cm.spring,edgecolor='k',marker='^')
plt.scatter(x2[y2==2,0],x2[y2==2,1],cmap=plt.cm.spring,edgecolor='k',marker='s')
plt.scatter(x2[y2==3,0],x2[y2==3,1],cmap=plt.cm.spring,edgecolor='k',marker='D')
plt.show()
????????這段代碼使用sklearn庫生成了一個包含300個樣本的數據集,其中包含4個類別。然后使用matplotlib庫繪制了散點圖,將不同類別的樣本用不同的標記表示出來。
import numpy as np
clf=KNeighborsClassifier()
clf.fit(x2,y2)
x_min,x_max=x2[:,0].min()-1,x2[:,0].max()+1
y_min,y_max=x2[:,1].min()-1,x2[:,1].max()+1
xx,yy=np.meshgrid(np.arange(x_min,x_max,.02),np.arange(y_min,y_max,.02))
z=clf.predict(np.c_[xx.ravel(),yy.ravel()])
z=z.reshape(xx.shape)
plt.pcolormesh(xx,yy,z,cmap=plt.cm.Set3)
plt.scatter(x2[y2==0,0],x2[y2==0,1],cmap=plt.cm.spring,edgecolor='k',marker='o')
plt.scatter(x2[y2==1,0],x2[y2==1,1],cmap=plt.cm.spring,edgecolor='k',marker='^')
plt.scatter(x2[y2==2,0],x2[y2==2,1],cmap=plt.cm.spring,edgecolor='k',marker='s')
plt.scatter(x2[y2==3,0],x2[y2==3,1],cmap=plt.cm.spring,edgecolor='k',marker='D')
plt.xlim(xx.min(),xx.max())
plt.ylim(yy.min(),yy.max())
plt.title("Classifier:KNN")
plt.show()
print(clf.score(x2,y2))
?????????這段代碼使用K近鄰分類器(KNN)對數據進行分類,并繪制分類結果的散點圖。首先導入numpy庫,然后創建一個KNN分類器對象,接著使用fit方法訓練模型。接下來,計算數據的最小值和最大值,用于創建網格。然后使用predict方法預測網格上的點所屬的類別,并將結果轉換為與網格形狀相同的數組。最后,使用matplotlib庫繪制分類結果的散點圖,并顯示分類器的準確率。
🎈運行結果
?
?
🎯K最近鄰算法在回歸分析中的應用
🥏在skearn中生成一個回歸分析任務數據集,并進行可視化
🎈代碼解析
import matplotlib.pyplot as plt
from sklearn.datasets import make_regression
x,y=make_regression(n_features=1,n_informative=1,noise=30,random_state=5)
plt.scatter(x,y,c='b',edgecolor='k')
plt.show()
????????這段代碼使用matplotlib庫繪制了一個散點圖,其中x和y是使用sklearn.datasets中的make_regression函數生成的回歸數據集。數據集的特征數為1,有1個信息特征,噪聲為30,隨機種子為5。散點圖中的點用藍色表示,邊緣顏色為黑色。
🎈運行結果
?
🥏訓練K最近鄰模型進行并進行回歸分析預測,并進行可視化
🎈代碼解析
from sklearn.neighbors import KNeighborsRegressor
import numpy as np
reg=KNeighborsRegressor()
reg.fit(x,y)
z=np.linspace(-2.5,2.5,200).reshape(-1,1)
plt.scatter(x,y,c='b',edgecolor='k')
plt.plot(z,reg.predict(z),c='r',linewidth=3)
plt.title('KNN Regressor')
plt.show()
print(reg.score(x,y))
?????????這段代碼使用sklearn庫中的KNeighborsRegressor類實現了K近鄰回歸算法。首先導入了KNeighborsRegressor類和numpy庫,然后創建了一個KNeighborsRegressor對象reg并使用fit方法訓練模型。接著生成了一個等差數列z,并將其轉換為二維數組。最后使用matplotlib庫繪制了散點圖和回歸線,并輸出了回歸模型的得分。
🎈運行結果
?
🥏查看模型準確率,并進行模型調優,調整K參數的值,查看K參數分別取1,2,5,10時,模型的訓練準確率和預測準確率有何變化。
🎈k為2時
reg2=KNeighborsRegressor(n_neighbors=2)
reg2.fit(x,y)
plt.scatter(x,y,c='b',edgecolor='k')
plt.plot(z,reg2.predict(z),c='r',linewidth=3)
plt.title("KNN Regressor:n_neighbors")
plt.show()
print(reg2.score(x,y))
?
🎈k為5時
reg3=KNeighborsRegressor(n_neighbors=5)
reg3.fit(x,y)
plt.scatter(x,y,c='b',edgecolor='k')
plt.plot(z,reg3.predict(z),c='r',linewidth=3)
plt.title("KNN Regressor:n_neighbors")
plt.show()
print(reg3.score(x,y))
?
🎈k為10時
reg4=KNeighborsRegressor(n_neighbors=10)
reg4.fit(x,y)
plt.scatter(x,y,c='b',edgecolor='k')
plt.plot(z,reg4.predict(z),c='r',linewidth=3)
plt.title("KNN Regressor:n_neighbors")
plt.show()
print(reg4.score(x,y))
?