K近邻算法分析

K近邻算法分类可视化分析

K近邻算法: 近朱者赤,近墨者黑。新的数据点离谁(一个或多个近邻点)最近, 就和谁属于同一类。
K近邻算法分析_第1张图片
在skilit-learn中内置了若干个数据集(Toy Datasets), 还有一些API可以自己动手生成数据集,代码如下:

from sklearn.datasets import  make_blobs
from sklearn.neighbors import  KNeighborsClassifier
import  matplotlib.pyplot as plt
# 生成数据集, eg: x=(花瓣长度, 花茎的长度), y=(第一种花: 鸢尾花1). 训练集
X, y = make_blobs(n_samples=200, n_features=2, centers=2, random_state=8)


# 如何去寻找一个模型,并最终根据模型预判新的测试数据所属的分类?
# 机器学习: 寻找一个函数/模型的过程. f(x)='xxxxxxx', f(image)='cat', f(alpha-go)=5x5, f('对话')=‘对话’
clf = KNeighborsClassifier()
clf.fit(X, y)       # 拟合(找模型的过程)
test_data = [6, 3]  # 测试集: 测试模型好坏/正确率的数据集
class_name = clf.predict([test_data])
print("新数据点的分类是: ", class_name)



# # 给定一个新的特征信息, 分析属于哪一类?
# test_data = [6, 3]
#
# # 通过绘制散点图, 清楚的看到分为2类
# plt.scatter(X[:, 0], X[:, 1], edgecolors='orange', color='white')
# plt.scatter(test_data[0], test_data[1], marker='*', color='r')
# plt.show()

K近邻算法回归可视化分析

K近邻算法也可以用于回归, 原理和分类相同。 计算每个数据点的预测值时,模型会选择离该数据点最近的若干个点,并将它们的y值取平均值,并作为新数据点的预测值。

import matplotlib.pyplot as plt
import numpy as np
from sklearn.datasets import make_regression
from sklearn.neighbors import KNeighborsRegressor

# 产生回归的数据集(训练集)
X, y = make_regression(n_samples=100, n_features=1, n_informative=1,
                       noise=50, random_state=8)

# 通过K近邻的回归器, 拟合/寻找模型
reg = KNeighborsRegressor()
reg.fit(X, y)

# 给定一些新的数据(测试集),预测y值
"""
一维数组: np.linspace [1, 2, 3, 4, 5]
n*1数组: rwshape(-1, 1)
reg.predict([[1], [2]])  # 预测市需要传递的信息
"""
test_x = np.linspace(-3, 3, 100).reshape(-1, 1)
test_y = reg.predict(test_x)
# print("模型的准确度: ", reg.score(X, y))

# ***********中文乱码如何解决
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 绘制图形
plt.scatter(X, y, marker='*', color='orange', edgecolors='orange', label='训练集')
plt.plot(test_x, test_y, color='black', label='测试集')
plt.title('KNN Regressor')
plt.legend()
plt.show()

你可能感兴趣的:(K近邻算法分析)