KNN分類make circles生成資料

2021-10-05 02:21:13 字數 2110 閱讀 4034

題目要求:sklearn中的make_circles方法生成訓練樣本,並隨機生成測試樣本,用knn分類並視覺化。

**示例:

from sklearn.datasets import make_circles

from sklearn.neighbors import kneighborsclassifier

import matplotlib.pyplot as plt

import numpy as np

import random

fig = plt.figure(1)

x1, y1 = make_circles(n_samples=

400, factor=

0.5, noise=

0.1)

# 生成二維陣列

# n_samples:生成樣本數,內外平分 noise:異常點的比例 factor:內外圓之間的比例因子 ∈(0,1)

# x1[:,0]表示取所有座標的第一維資料 x1[0,:]表示第乙個座標的所有維資料

# # 模型訓練

k =15

clf = kneighborsclassifier(n_neighbors=k)

clf.fit(x1, y1)

;# # 進行**

x2 =

((random.random())

-0.5)*

1.6y2 =

((random.random())

-0.5)*

1.6x_sample = np.array(

[[x2, y2]])

y_sample = clf.predict(x_sample)

neighbors = clf.kneighbors(x1, return_distance=

false

)##輸出配置

plt.subplot(

121)

# 一行兩列 當前為1(第一行第一列)

plt.title(

'make_circles 1'

)plt.scatter(x1[:,

0], x1[:,

1], marker=

'o', c=y1,s=

10,cmap=

'viridis'

)plt.scatter(x2, y2, marker=

'*', s=

10,c=

'b')

# 第乙個引數橫座標 第二個引數縱座標 marker為標誌圖案 c為顏色(可以是二維行陣列)

# x1[:,0]即取x座標 x1[:,1]即取y座標

plt.subplot(

122)

plt.title(

'make_circles 2'

)plt.scatter(x1[:,

0], x1[:,

1], marker=

'o', c=y1,s=

10,cmap=

'viridis'

)plt.scatter(x2, y2, marker=

'*', c=

'c',s=

20,cmap=

'viridis'

)for i in neighbors[0]

: plt.plot(

[x1[i][0

], x_sample[0]

[0]]

,[x1[i][1

], x_sample[0]

[1]]

,'-'

, linewidth=

0.6, c=

'b')

plt.scatter(

[x1[i][0

], x_sample[0]

[0]]

,[x1[i][1

], x_sample[0]

[1]]

, marker=

'o', s=

9,c=

'r')

plt.show(

)

輸出示例

kNN分類演算法

knn k nearest neighbors 又叫k最鄰近演算法,是一種根據待分類的樣本與已知類別的樣本間的距離得到其分類結果的分類演算法。計算待分類樣本與所有已知類別樣本的距離值 從這些距離值中選取最小的k個 根據這k個樣本的類別情況,確定待分類的分類結果 距離的計算 這裡的距離其實是一種相似度...

kNN分類演算法

一 概述 knn演算法採用測量不同特徵值之間的距離方法進行分類。對未知類別屬性的資料集中的每個點執行如下操作 1 計算已知類別資料集中的點與當前點之間的距離 2 按照距離遞增次序排序 3 選取與當前點距離最小的k個點 4 確定前k個點所在類別的出現頻率 5 返回前k個點出現頻率最高的類別作為當前點的...

kNN分類演算法

一 演算法實施過程 1 計算已知類別資料集中的點與當前點之間的距離 2 按照距離遞增次序排序 3 選取與當前點距離最小的k個點 4 確定前k個點所在類別的出現頻率 5 返回前k個點出現頻率最高的類別作為當前點的 分類。二 python 實現 from numpy import import oper...