分类2:LDA-KNN 处理iris(鸢尾花)数据集代码

1 介绍

使用KNN对鸢尾花数据集进行分类,并且使用LDA进行降维,然后再使用KNN做对比实验

2 导入包

from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
import pandas as pd
from sklearn.utils import shuffle

3 加载数据

注意:

  • 1 打乱数据集
  • 2 划分训练集、测试集;
  • 3 每个数据都需要划分特征集、标签集
path = "iris.data"
df = pd.read_csv(path, header=None)
df = shuffle(df)
r = int(len(df) * 0.7)
train_data = df[:r]
test_data = df[r:]
train_x = train_data.loc[:, :3]
train_y = train_data.loc[:, 4]
test_x = test_data.loc[:, :3]
test_y = test_data.loc[:, 4]

4 使用KNN进行分类

KNN模型,K=5 为K紧邻,K=1为最近邻,使用费fit训练模型,使用predict函数进行预测,最后使用acc计算精度。

knn = KNeighborsClassifier(n_neighbors=5)  # 建立knn模型
knn.fit(train_x, train_y)  # 训练模型
y_pred = knn.predict(test_x)
a = accuracy_score(test_y, y_pred)
print(a)

5 先使用LDA进行降维,再使用KNN进行分类

  1. 使用LDA将维度降低到1维
  2. 使用transform对原数据进行降维,例如原来是4维的,现在是1维的,则会生成一个4*1的矩阵,降维后的数据特征是1维;
  3. 使用KNN进行降维
n_components = 1
lda = LinearDiscriminantAnalysis(solver='svd', n_components=n_components)
lda.fit(train_x, train_y)
train_x1 = lda.transform(train_x)
test_x1 = lda.transform(test_x)
knn = KNeighborsClassifier(n_neighbors=5)  # 建立knn模型
knn.fit(train_x1, train_y)
y_pred1 = knn.predict(test_x1)
a = accuracy_score(test_y, y_pred1)
print(a)
关注:AI学习部
发送:机器学习
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王小葱鸭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值