当前位置: 首页 > news >正文

Sklearn(机器学习)实战:鸢尾花数据集处理技巧

1.数据集的使用:

先使用load导入鸢尾花数据:

from sklearn.datasets import load_iris

然后定义一个函数来查看鸢尾花数据集:

数据集的获取:

iris = load_iris()print('鸢尾花的数据集:\n',iris)

使用iris['DESCR']来查看数据及里面的描述:

print('查看数据集描述:\n',iris['DESCR'])

获取特征值的名字iris.feature_names

print('查看特征值的名字:\n',iris.feature_names)

查看特征值:iris.data

特征值的形状:iris.data.shape:特征值是150行4列的数据

print('查看特征值:\n', iris.data,iris.data.shape)

数据集划分:

先导入对应模块:

from sklearn.model_selection import train_test_split
  • iris.data
    表示鸢尾花数据集的特征矩阵(即输入数据),通常是一个二维数组或矩阵,每一行代表一个样本,每一列代表一个特征(如花萼长度、花萼宽度等)。

  • iris.target
    表示鸢尾花数据集的标签(即目标值),通常是一个一维数组,每个元素对应一个样本的类别(如0、1、2分别代表不同品种的鸢尾花)。

  • test_size=0.2
    指定测试集的比例为20%,即训练集占80%。可以是浮点数(比例)或整数(样本数)。

  • random_state=22
    随机种子,用于控制数据分割的随机性。固定此值可确保每次运行代码时,划分结果一致(适用于可复现的实验)。

输出变量说明

  • x_train
    训练集的特征数据,包含80%的原始样本特征,用于训练模型。

  • x_test
    测试集的特征数据,包含20%的原始样本特征,用于评估模型性能。

  • y_train
    训练集的标签数据,与 x_train 中的样本一一对应。

  • y_test
    测试集的标签数据,与 x_test 中的样本一一对应。

x_train,x_test,y_train,y_test=train_test_split(iris.data, iris.target, test_size=0.2,random_state=22)print('训练集的特征值:\n',x_train,x_train.shape)

完整代码:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_splitdef datasets_demo():"""sklearn数据集的使用:return:"""#获取数据集iris = load_iris()print('鸢尾花的数据集:\n',iris)print('查看数据集描述:\n',iris['DESCR'])print('查看特征值的名字:\n',iris.feature_names)print('查看特征值:\n', iris.data,iris.data.shape)#数据集划分x_train,x_test,y_train,y_test=train_test_split(iris.data, iris.target, test_size=0.2,random_state=22)print('训练集的特征值:\n',x_train,x_train.shape)return Noneif __name__ == '__main__':datasets_demo()

2.字典特征抽取:

导入对应模块:

from sklearn.feature_extraction import DictVectorizer

先定义一些数据:

 data=[{'city':'北京','temperature':100},{'city':'上海','temperature':50},{'city':'深圳','temperature':60}]

第一步先实例化一个转换器:

 sparse默认是true 返回的是一个稀疏矩阵,需要将其改为False才能够得到对应的矩阵,如果默认不写将出现下列的情况:

transformer = DictVectorizer(sparse=False)

第二步调用fit_transform()并输出打印:

  data_new=transformer.fit_transform(data)print(data_new)print('特征的名字:\n',transformer.get_feature_names_out())

完整代码:

from sklearn.feature_extraction import DictVectorizerdef dict_demo():"""字典特征抽取:return:"""data=[{'city':'北京','temperature':100},{'city':'上海','temperature':50},{'city':'深圳','temperature':60}]#1.实例化一个转换器类# sparse默认是true 返回的是一个稀疏矩阵transformer = DictVectorizer(sparse=False)#2.调用fit_transform()data_new=transformer.fit_transform(data)print(data_new)print('特征的名字:\n',transformer.get_feature_names_out())return Noneif __name__ == '__main__':dict_demo()

3.文本特征抽取:统计样本出现的次数

导入对应模块:

from sklearn.feature_extraction.text import CountVectorizer

随便定义一些单词:

 data=["life is short ,i like like python","life is too long,i dislike python"]

第一步还是实例化一个转换器:

transformer = CountVectorizer()

第二步调用:

toarray()是sparse矩阵里的一个方法作用是一样的

data_new=transformer.fit_transform(data)print(data_new.toarray()) print('特征名字:',transformer.get_feature_names_out())

完整代码:


from sklearn.feature_extraction.text import CountVectorizerdef count_demo():"""文本特征抽取:统计样本出现的次数:return:"""data=["life is short ,i like like python","life is too long,i dislike python"]#1.实例化一个转换器transformer = CountVectorizer()# 2.调用fit_transformdata_new=transformer.fit_transform(data)print(data_new.toarray())  # toarray()是sparse矩阵里的一个方法作用是一样的print('特征名字:',transformer.get_feature_names_out())if __name__ == '__main__':count_demo()

4.中文文本抽取特征:

导入所需要的库:

import jieba
from sklearn.feature_extraction.text import CountVectorizer

随机写入一些中文:

data=["一种还是一种今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天","我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去","如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。"]

首先我们应该先定义一个jieba函数:

将这些数据先转为列表要不然输出台会出现生成器不便于观察,在用字符串拼接起来:

def cut_words(text):"""进行中文分词:param text::return:"""return "".join(list(jieba.cut(text)))

定义一个空的列表,来对上后面的data进行遍历并添加到这个空列表中:

data_new=[]for item in data:data_new.append(cut_words(item))

完整代码:

import jieba
from sklearn.feature_extraction.text import CountVectorizerdef cut_words(text):"""进行中文分词:param text::return:"""return "".join(list(jieba.cut(text)))def count_words():"""中文文本特征抽取,自动分词:return:"""#1. 将中文文本进行分词data=["一种还是一种今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天","我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去","如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。"]data_new=[]for item in data:data_new.append(cut_words(item))# 1.实例化一个转换器transformer = CountVectorizer()# 2.调用fit_transformdata_new = transformer.fit_transform(data_new)print(data_new.toarray())  # toarray()是sparse矩阵里的一个方法作用是一样的print('特征名字:', transformer.get_feature_names_out())return Noneif __name__ == '__main__':count_words()

5.TFIDF文本抽取

导入对应模块

from sklearn.feature_extraction.text import TfidfVectorizer

完整代码:

from sklearn.feature_extraction.text import TfidfVectorizerdef Tfidf_words():"""文本特征抽取:return:"""#1. 将中文文本进行分词data=["一种还是一种今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天","我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去","如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。"]# 1.实例化一个转换器transformer = TfidfVectorizer()# 2.调用fit_transformdata_new = transformer.fit_transform(data)print(data_new.toarray())  # toarray()是sparse矩阵里的一个方法作用是一样的print('特征名字:', transformer.get_feature_names_out())return Noneif __name__ == '__main__':Tfidf_words()


文章转载自:

http://3mhL6mWN.rwpfb.cn
http://k1fpNs19.rwpfb.cn
http://UzsxMwB9.rwpfb.cn
http://YhdKczwL.rwpfb.cn
http://IeEstAey.rwpfb.cn
http://VYqr6nuf.rwpfb.cn
http://Kbhl1USX.rwpfb.cn
http://oUMxlRUf.rwpfb.cn
http://tC4ioRGB.rwpfb.cn
http://VcAKQ9D2.rwpfb.cn
http://V8MExn5W.rwpfb.cn
http://LT1gyJFt.rwpfb.cn
http://3b5TlTir.rwpfb.cn
http://x5GVP2YM.rwpfb.cn
http://zsZLI4U2.rwpfb.cn
http://vZzesBuB.rwpfb.cn
http://qgQjUE43.rwpfb.cn
http://BzAvdcry.rwpfb.cn
http://nudpu24r.rwpfb.cn
http://thGZvuvO.rwpfb.cn
http://klcJvTII.rwpfb.cn
http://PVp6FOO2.rwpfb.cn
http://gf4zL9CZ.rwpfb.cn
http://ERqjzcSV.rwpfb.cn
http://hQAEThIQ.rwpfb.cn
http://kON9RMKD.rwpfb.cn
http://Gi3NNkSg.rwpfb.cn
http://La4Pm1oV.rwpfb.cn
http://T9AL3LfA.rwpfb.cn
http://82aXmr5P.rwpfb.cn
http://www.dtcms.com/a/374774.html

相关文章:

  • 工具框架:Scikit-learn、Pandas、NumPy预测鸢尾花的种类
  • AI GEO 优化能否快速提升网站在搜索引擎的排名?​
  • nvm和nrm的详细安装配置,从卸载nodejs到安装NVM管理nodejs版本,以及安装nrm管理npm版本
  • 对口型视频怎么制作?从脚本到成片的全流程解析
  • 从“能说话”到“会做事”:AI Agent如何重构日常工作流?
  • 洛谷 P1249 最大乘积-普及/提高-
  • 小红书获取笔记详情API接口会返回哪些数据?
  • JAVA Spring Boot maven导入使用本地SDK(jar包)
  • Linux/UNIX系统编程手册笔记:SOCKET
  • F5和Nginx的区别
  • 9.9网编简单TCP,UDP的实现day2
  • Day39 SQLite数据库操作与HTML核心API及页面构建
  • Vue3 与 AntV X6 节点传参、自动布局及边颜色控制教程
  • 线程与进程的区别
  • RAC概念笔记
  • 如何将视频从安卓手机传输到电脑?
  • Day04_苍穹外卖——套餐管理(实战)
  • ElementUI 组件概览
  • fifo之读写指针
  • 【第三次全国土壤普查】一键制备土壤三普环境变量23项遥感植被指数神器
  • Java反射机制详解
  • PDF文件中的广告二维码图片该怎么批量删除
  • 记一次 .NET 某中医药附属医院门诊系统 崩溃分析
  • WPF/Prism 中计算属性的通知机制详解 —— SetProperty 与 RaisePropertyChanged
  • jmeter使用指南
  • 硬件(六)arm指令
  • 后端错误处理的艺术:BusinessException 与 ResultUtils 的完美分工
  • MCU、CPLD、DSP、FPGA 有什么区别,该如何选择?
  • 【React Native】点赞特效动画组件FlowLikeView
  • android studio gradle 访问不了