KPCA-小麦分类

简介: KPCA-小麦分类

import required packages

import numpy as np
import matplotlib.pyplot as plt
from sklearn import   datasets,decomposition

处理数据得到标准化后的X和y

fp=open('seeds_dataset.txt','r')
ls=[]
for line in fp:
    line=line.strip('\n')   #将\n去掉
    ls.append(line.split('\t'))   #将空格作为分隔符将一个字符切割成一个字符数组
fp.close()
ls=numpy.array(ls,dtype=float)   #将其转换成numpy的数组,并定义数据类型为float
print(ls)
# 将文件转为DataFrame表格
ls_pd = pd.DataFrame(ls)
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
data_std = sc.fit_transform(ls_pd.loc[:,1:6])

plot_PCA函数

def plot_KPCA(*data):
#     ''' 绘制经过 KernelPCA 降维到二维之后的样本点'''
    X,y=data
    kernels=['linear','poly','rbf','sigmoid']
    fig=plt.figure(figsize = (10,10))
    colors=((1,0,0),(0,1,0),(0,0,1),(0.5,0.5,0),(0,0.5,0.5),(0.5,0,0.5),
        (0.4,0.6,0),(0.6,0.4,0),(0,0.6,0.4),(0.5,0.3,0.2),)# 颜色集合,不同标记的样本染不同的颜色
    for i,kernel in enumerate(kernels): # 外层循环是对于kernel的循环 外层第一次循环,某一种kernel的三种类别被画出来了
        kpca=decomposition.KernelPCA(n_components=2,kernel=kernel)
        kpca.fit(X)
        X_r=kpca.transform(X)# 原始数据集转换到二维
        ax=fig.add_subplot(2,2,i+1) ## 两行两列,每个单元显示一种核函数的 KernelPCA 的效果图
        for label ,color in zip( np.unique(y),colors): # np.unique(y)得到几个类别:1、2、3
            position=y==label# position的长度为210
#             print(position) # 第一次所有类别为1的样本的Position为True
            ax.scatter(X_r[position,0],X_r[position,1],label="target= %d"%label,
            color=color) # 找到某一个label的x的列表集合 找到某一个label的y的列表集合
            # scatter函数的第一个参数是x的列表,第二个参数是y的列表     
#             break
#         break
#         ax.set_xlabel("X[0]")
#         ax.set_ylabel("X[1]")
#         ax.legend(loc="best")
#         ax.set_title("kernel=%s"%kernel)
#     plt.suptitle("KPCA")
    plt.show()

探索函数

kk = np.array([[1,2],
              [3,4],
              [5,6]])

kk

array([[1, 2],

[3, 4],

[5, 6]])

pp = pd.Series([True,True,False])

(kk[pp,0],kk[pp,1])

(array([1, 3]), array([2, 4]))

实验过程

  1. 首先处理数据后得到标准化后的data_std和样本标签y。
  2. 调用plot_KPCA函数画出不同kernel的KPCA分类图(特征降到二维后分类的图)

实验结果

相关文章
|
14天前
|
机器学习/深度学习 人工智能 数据可视化
构建AI智能体:四十四、线性回归遇见大模型:从数学原理到智能实战
本文系统介绍了线性回归的原理、实现和应用。线性回归通过建立自变量(X)与因变量(Y)之间的线性关系(Y=wX+b)进行预测,核心方法包括最小二乘法(精确解析解)和梯度下降法(迭代数值解)。文章结合Python代码示例,演示了从简单线性回归到多元线性回归的实现过程,并分析了大模型时代线性回归的新应用场景。同时指出了线性回归的局限性(如对异常值敏感)和扩展方向(多项式回归、正则化等)。通过Qwen等大模型的辅助,可以快速生成高质量代码并深入分析回归结果,使这一基础方法在复杂数据中发挥更大价值。
122 6
|
8天前
|
人工智能 自然语言处理 算法
2025年 GEO行业年度鸟瞰全景报告:商业化深耕期的全球竞合与企业适配指南
2025年,中国生成式AI搜索(GEO)市场规模突破480亿元,年增68%。技术成熟与企业需求推动商业化爆发,多模态检索、垂直领域适配成主流。头部效应显著,国内外巨头竞逐本土化与全球化赛道,中小企业迎来轻量化机遇。
|
3月前
|
监控 安全 网络协议
阿里云CDN域名怎么迁移到另一个账号?
阿里云CDN域名支持跨账号迁移,需确保原账号与目标账号均无欠费,且具备相应权限。仅支持单个迁移,需提前处理证书、回源鉴权及监控日志配置,避免业务中断。通过DNS或文件验证完成归属校验后,即可在控制台操作迁入。
|
3月前
|
监控 Java 关系型数据库
HikariCP 高性能数据库连接池技术详解与实践指南
本文档全面介绍 HikariCP 高性能数据库连接池的核心概念、架构设计和实践应用。作为目前性能最优异的 Java 数据库连接池实现,HikariCP 以其轻量级、高性能和可靠性著称,已成为 Spring Boot 等主流框架的默认连接池选择。本文将深入探讨其连接管理机制、性能优化策略、监控配置以及与各种框架的集成方式,帮助开发者构建高性能的数据访问层。
321 8
|
7月前
|
JavaScript 前端开发 小程序
风靡全网的《羊了个羊》,其实可以用几百行代码复刻?
《羊了个羊》是一款曾在2022年9月风靡全网的小游戏,凭借第二关的超高难度成为现象级话题。本文通过CodeBuddy代码助手,探讨该游戏的核心机制与爆火原因,并尝试复刻其玩法。游戏结合“叠层消除+有限背包”设计,利用社交传播和心理驱动吸引用户,通关率极低的第二关更是激发了玩家的挑战欲。借助HTML和JS开发,我们逐步实现基础功能与优化,最终完成一个可运行的版本。无论是学习开发技巧还是理解爆款逻辑,这都是一次有趣的实践。
|
Linux Shell C语言
【Shell 命令集合 系统管理 】Linux 删除Linux系统中的用户组 groupdel命令 使用指南
【Shell 命令集合 系统管理 】Linux 删除Linux系统中的用户组 groupdel命令 使用指南
414 0
|
SQL
SQL 中,通配符
【11月更文挑战第13天】
374 5
生物合成材料:生物制造的新材料
【10月更文挑战第19天】生物合成材料是利用生物体系中的生物大分子或通过生物转化过程得到的新型材料,具有良好的生物相容性、可降解性和特定的生物活性。本文介绍了其基本原理、制备技术、应用领域及未来发展趋势,涵盖医疗、环保、农业等多个领域,展示了其广阔的应用前景和巨大潜力。
|
开发框架 前端开发 JavaScript
微信小游戏案例三 抓星星
微信小游戏案例三 抓星星
297 0
微信小游戏案例三 抓星星
|
自然语言处理 监控 安全
一款面向全场景应用开发的现代编程语言:华为仓颉编程语言
仓颉编程语言是华为公司自主研发的一款静态强类型、编译型语言,具备高效编程、安全可靠、轻松并发和卓越性能等特点。该语言旨在解决全场景应用开发中的挑战,为开发者提供友好的开发体验和卓越的程序性能。
630 5