"""标签:KNN,iris,近邻,print,算法,train,test,data From: https://www.cnblogs.com/zeliangzhang/p/18502837
K-近邻算法用于分类和回归问题。比如,判断一款游戏是否受欢迎。
KNN算法的基本思想是:如果一个样本在特征空间中的k个最邻近的样本中的大多数属于某个类别,则该样本也属于这个类别。
KNN算法的实现方法有两种:
1. 基于欧氏距离的KNN算法
2. 基于余弦相似度的KNN算法
KNN算法的优点:
1. 简单易用,计算量小,易于理解和实现。
2. 无需训练过程,直接使用。
3. 适用于多分类和回归问题。
4. 对于异常值不敏感。
这段代码展示了如何使用KNeighborsClassifier类创建模型。KNN会根据最近的邻居来判断数据点的类别。
https://mp.weixin.qq.com/s/SL57KglCbNDoONSKFmXRtA
"""
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.datasets import load_iris
# 加载数据集
"""
iris数据集包含150个样本,每个样本有四个特征,三个类别。
特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度。
类别:山鸢尾、变色鸢尾、维吉尼亚鸢尾。
iris在机器学习中的应用:
属于监督式学习应用:根据花的四个特征预测鸢尾花卉属于(iris-setosa,iris-versicolour,iris-virginica)中的那一品种。
机器学习中经典案例,简单而具有代表性。
"""
data = load_iris()
X = data.data
#print(X)数据和类型
y = data.target
#print(y)数据和类型
# 特征名称
#print(data.feature_names)
# 类别名称
#print(data.target_names)#
# 打印数据集的大小
#print(X.shape)
#print(y.shape)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建模型
model = KNeighborsClassifier(n_neighbors=3)
# 训练模型
model.fit(X_train, y_train)
# 预测
predictions = model.predict(X_test)
# 模型评估
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100:.2f}%")
X_new = [[1, 3.5, 1.4, 0.2], [6.3, 3.3, 4.7, 1.6]]
test_ = model.predict(X_new)
for a, b in zip(X_new,test_):
print(f"数据:{a},结果:{data.target_names[b]}")