Python数据科学:Scikit-Learn机器学习

4.1Scikit-Learn机器学习

Scikit-Learn使用的数据表示:二维网格数据表

实例1:通过Seaborn导入数据

def skLearn():'''scikit Learn基本介绍:return:'''import seaborn as sns#导入Iris数据集#注:一般网络访问不了iris = sns.load_dataset('iris')iris.head()

实例2:通过本地导入数据

def skLearn1():'''本地导入csv数据:return:'''df_iris = pd.read_csv('./data/Iris.csv')print(df_iris.head())

鸢尾花数据集说明:

sepal_length:萼片长度

sepal_width:萼片宽度

petal_length:花瓣长度

petal_width:花瓣宽度

species:鸢尾花类型,Iris-setosa(山鸢尾),Iris-versicolor(变色鸢尾),Iris-virginica(维吉尼亚鸢尾)

df_iris.head()

样本:鸢尾花数据集矩阵,矩阵的行n_samples;

特征:某些数据参数的列称为特征,特征列数n_features,鸢尾花数据集需要去掉species列;

特征矩阵:数据集的特征列矩阵,一般用X表示。维度为[n_samples,n_features]。

目标数组:一个标签或目标数组,一般为一维数组,一般用y表示。长度为n_samples。

实例3:构建特征矩阵,目标数组

def skLearn1():'''本地导入csv数据:return:'''df_iris = pd.read_csv('./data/Iris.csv')print(df_iris.head())#获取数据集行列print(df_iris.shape)#构建特征矩阵X_iris = df_iris.drop('species',axis=1)#构建目标数组y_iris = df_iris['species']#使用seaborn绘制图片sns.set()sns.pairplot(df_iris,hue='species',height=1.5)plt.show()

通过sns.pairplot绘制不同特征值相关性图。

对角线上是单一特征值之间,不同鸢尾花种类在该特征值上数据的重叠程度。

Scikit-Learn的评估器API:

  1. 通过Scikit-Learn中导入合适的评估器类,选择模型类;
  2. 选择合适数值对模型类实例化;
  3. 整理数据,获取特征矩阵,目标数组;
  4. 调用模型fit()方法,对数据进行拟合
  5. 对新的数据应用模型:有监督学习模型中使用predict()方法,无监督学习使用transform()或predict()方法。

实例4:构建机器学习有监督学习模型,对鸢尾花进行识别

def skLearn2():'''有监督学习,鸢尾花分类:return:'''#读取数据df_iris = pd.read_csv('./data/Iris.csv')#构建特征矩阵X_iris = df_iris.drop('species',axis=1)#构建目标数组y_iris = df_iris['species']#划分训练集,测试集from sklearn.model_selection import train_test_splitXtrain,Xtest,ytrain,ytest = train_test_split(X_iris,y_iris,random_state=1)#选择模型#高斯朴素贝叶斯from sklearn.naive_bayes import GaussianNBmodel = GaussianNB()#训练模型model.fit(Xtrain,ytrain)#使用模型对数据进行预测y_model = model.predict(Xtest)#如何验证y_model数据准确性?#和实际的数据进行比较,确定模型预测准确率from sklearn.metrics import accuracy_score#ytest:实际数据#y_model:模型预测数据print(accuracy_score(ytest,y_model))

实例5:无监督学习,鸢尾花数据降维

鸢尾花数据集有四个特征维度,对数据进行降维,保留数据的本质特征,用低维度矩阵表示高维数据。

def skLearn3():'''无监督学习,鸢尾花数据降维:return:'''#读取数据df_iris = pd.read_csv('./data/Iris.csv')#构建特征矩阵X_iris = df_iris.drop('species',axis=1)#构建目标数组y_iris = df_iris['species']#选择模型#主成分分析PCA,快速线性降维from sklearn.decomposition import PCA#设置超参数model = PCA(n_components=2)#拟合数据model.fit(X_iris)#将数据转换为二维数据X_2d = model.transform(X_iris)#将数据插入原数据df_iris['PCA1'] = X_2d[:,0]df_iris['PCA2'] = X_2d[:,1]print(df_iris)#sns绘制二维数据投影图sns.lmplot("PCA1","PCA2",hue='species',data=df_iris,fit_reg=False)plt.show()

实例6:无监督学习,对鸢尾花数据进行聚类分析

def skLearn4():'''无监督学习,在降维后数据基础上,聚类分析高斯混合模型:return:'''#读取数据df_iris = pd.read_csv('./data/Iris.csv')#构建特征矩阵X_iris = df_iris.drop('species',axis=1)#构建目标数组y_iris = df_iris['species']#选择模型#主成分分析PCA,快速线性降维from sklearn.decomposition import PCA#设置超参数model_pca = PCA(n_components=2)#拟合数据model_pca.fit(X_iris)#将数据转换为二维数据X_2d = model_pca.transform(X_iris)#将数据插入原数据df_iris['PCA1'] = X_2d[:,0]df_iris['PCA2'] = X_2d[:,1]#选择模型#高斯混合模型GMMfrom sklearn.mixture import GaussianMixture#设置超参数model = GaussianMixture(n_components=3,covariance_type='full')#拟合数据model.fit(X_iris)#预测数据y_model = model.predict(X_iris)#将预测数据放入原数据df_iris['y_gmm'] = y_model#绘制图片sns.lmplot("PCA1","PCA2",data=df_iris,hue='species',col='y_gmm',fit_reg=False)plt.show()

实例7:手写数字识别

步骤1:获取手写数字集,查看数据

def skLearn5():'''手写数字探索:return:'''#加载手写数字集from sklearn.datasets import load_digitsdigits = load_digits()#(1798,8,8)#一共1798个样本,8x8的像素print(digits.images.shape)#绘制手写数据图fig,axes = plt.subplots(10,10,figsize=(8,8))for i,ax in enumerate(axes.flat):#显示图片手写数字ax.imshow(digits.images[i],cmap='binary',interpolation='nearest')#显示目标数字ax.text(0.05,0.05,str(digits.target[i]),transform=ax.transAxes,color='blue')

步骤2:将数据进行降维处理,查看降维后数据。可以发现还是有许多数字之间是重叠的。

#8x8矩阵相当于64个特征值#获取特征矩阵X_digits = digits.data#获取目标列y_digits = digits.target#64维的特征值进行降维处理,流形学习算法from sklearn.manifold import Isomap#降到二维iso = Isomap(n_components=2)#拟合数据iso.fit(X_digits)#获取转换后的数据X_trans = iso.transform(X_digits)#显示二维数据plt.scatter(X_trans[:,0],X_trans[:,1],c=y_digits,edgecolor='none',alpha=0.6,cmap=plt.cm.get_cmap('rainbow',10))plt.colorbar(label='digit label',ticks=range(10))

步骤3:使用高斯朴素贝叶斯模型训练识别模型。使用混淆矩阵判断模型识别效果

#训练模型,数字识别#划分训练集,测试集from sklearn.model_selection import train_test_splitXtrain,Xtest,ytrain,ytest = train_test_split(X_trans,y_digits,random_state=0)#使用模型from sklearn.naive_bayes import GaussianNBmodel = GaussianNB()#训练数据model.fit(Xtrain,ytrain)#预测测试数据y_model = model.predict(Xtest)#获取识别准确率from sklearn.metrics import accuracy_score#识别率有70*print(accuracy_score(ytest,y_model))#如何知道模型识别的不足?#使用混淆矩阵from sklearn.metrics import confusion_matrixmat = confusion_matrix(ytest,y_model)print(mat)#绘制热力图sns.heatmap(mat,square=True,annot=True,cbar=False)plt.xlabel('predict value')plt.ylabel('true value')

从图像可以看出,识别数字2时,许多识别成了7或者1;识别5时,也识别错误成其他数字

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/682465.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JavaScript】回调函数

文章目录 1. 什么是回调函数2. 回调函数的用法作为函数参数作为匿名函数 3. 处理异步编程4. 解决回调地狱问题5. 总结 在 JavaScript 中, 回调函数是一种重要的编程模式,特别是在处理异步操作时。本篇博客将介绍回调函数的概念、用法以及在异步编程中的…

Jdk11新增特性

目录 模块化系统(Jigsaw) 新的垃圾收集器(ZGC和Shenandoah) 新的API和工具 其他改进 JDK 11(Java Development Kit 11)Java的版本引入了一些新特性和改进,主要有:

助眠神器小程序源码|白噪音|小睡眠|微信小程序前后端开源

安装要求和说明后端程序运行环境:NginxPHP7.4MySQL5.6 PHP程序扩展安装:sg11 网站运行目录设置为:public 伪静态规则选择:thinkphp 数据库修改文件路径:/config/database.php需要配置后端的小程序配置文件,…

[word] word分割线在哪里设置 #其他#经验分享

word分割线在哪里设置 在工作中有些技巧,可以快速提高工作效率,解决大部分工作,今天给大家分享word分割线在哪里设置的小技能,希望可以帮助到你。 1、快速输入分割线 输入三个【_】按下回车就是一条长直线,同样分别…

webgis后端安卓系统部署攻略,超详细Termux攻略

目录 前言 一、将后端项目编译ARM64 二、安卓手机安装termux 1.更换为国内源 2.安装ssh远程访问 3.安装文件远程访问 三、安装postgis数据库 1.安装数据库 2.数据库配置 3.数据导入 四、后端项目部署 五、自启动设置 总结 前言 因为之前一直做的H5APP开发&#xf…

webpack面试解析

参考: 上一篇webpack相关的系列:webpack深入学习,搭建和优化react项目 爪哇教育字节面试官解析webpack-路白 1、Webpack中的module是什么? 通常来讲,一个 module 模块就是指一个文件中导出的内容,webpack…

什么是系统工程(字幕)27

0 00:00:00,990 --> 00:00:03,590 那么下一个在16.4 1 00:00:03,590 --> 00:00:06,190 16.4是描述需求嘛 2 00:00:06,190 --> 00:00:06,970 对不对 3 00:00:07,250 --> 00:00:07,501 4 00:00:07,501 --> 00:00:10,520 在那个教材里面是描述需求 5 00:00:11,…

android--RxJava源码详解

其实所有的节日都不是为了礼物和红包而生,而是为了提醒我们,不要忘记爱与被爱,生活需要仪式感,而你需要的是在乎和关爱 目录 前言 一,Hook点 二,RXJava的观察者模式 三,Map操作符原理 前言 关于…

Amber-Leedcode-Java - 代码随想录打卡第38 - 39天-动态规划汇总

本质上感觉是一个相加的问题,状态的转换,由前一种状态推至下一种状态509. 斐波那契数 较为简单 746. 使用最小花费爬楼梯 62. 不同路径 一开始写的时候被吓到了,但是发现听完一半之后再写还是比较容易的 对于我而言主要是找到逻辑&#xf…

Linux文件属性与目录等知识详解

在 Linux 系统中,文件和目录是基本的文件系统组成部分。文件系统是用于组织和存储文件的一种结构,而文件和目录则是文件系统的核心元素。以下是对 Linux 文件和目录的详细解释: 1. 文件(File) 在 Linux 中&#xff0…

Vue3+Ant-Design-Vue:报错Cannot read properties of null (reading ‘isCE‘)

问题描述 在使用Ant-Design-Vue内置的Table表格组件,实现expand展开行功能时,报错:Uncaught TypeError: Cannot read properties of null (reading ‘isCE‘) 。 报错信息图示: 在GitHub上找到如下描述, 解决方案 网上…

【漏洞复现】和为顺IP-COM WiFi未授权下载漏洞

Nx01 产品简介 深圳市和为顺网络技术有限公司是一家聚焦于商用级网络通信设备的研发与应用,为全球中小型企业提供高速、安全、易维护的网络设备产品和解决方案的公司。 Nx02 漏洞描述 深圳市和为顺网络技术有限公司IP-COM WiFi方案解决专家存在任意文件下载漏洞&am…

代码随想录算法训练营29期Day50|LeetCode 70,322,279

文档讲解:爬楼梯(进阶) 零钱兑换 完全平方数 70.爬楼梯(进阶) 题目链接:https://kamacoder.com/problempage.php?pid1067 思路: 这其实是一个完全背包问题。1阶,2阶&#xff0c…

编曲学习:录音设备的选取,麦克风和声卡,监听耳机

如果要录翻唱歌曲或原创歌曲人声的话,哪款麦克风或声卡比较好,性价比比较高? 可以尝试一下福克斯特声卡,和舒尔sm58动圈麦。之前问了一些大佬,有人用的是莱维特 540s。 我一直有点疑问,便宜声卡与麦克风&…

springsecurity6使用

spring security 中的类 : AuthenticationManager : 实现类:ProviderManager 管理很多的 provider ,,, 经常使用的,DaoAuthenticationProvider , 这个要设置一个 UserDetailService , 查找数据库&#xff…

java正则表达式获取json字符串中指定key的value

<仅支持取JSON字符串中, 简单属性值的配置, 即值内容中不包含[]或{}格式的数据> import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.List; import java.util.regex.…

【ASP.NET 6 Web Api 全栈开发实战】--前言

《ASP.NET 6 Web Api 实战》专栏通过一步一步的开发并完善一个记账软件项目&#xff0c;来引导大家学习相关的知识&#xff0c;其中的知识包括但不限于如下内容&#xff1a; Web Api 开发.NET 6 项目微服务架构的搭建身份认证移动端应用开发more。。。 专栏结构 专栏分为单体…

分享88个CSS3特效,总有一款适合您

分享88个CSS3特效&#xff0c;总有一款适合您 88个CSS3特效下载链接&#xff1a;https://pan.baidu.com/s/1pDAyFESnO8HSnCZj4-DOzQ?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集整理更不…

STM32CubeMX中外部中断的配置和使用指南

使用STM32CubeMX进行外部中断&#xff08;External Interrupt&#xff09;的配置和使用对于STM32微控制器开发非常重要。外部中断可以让微控制器在外部事件发生时及时作出反应&#xff0c;例如按键触发、传感器信号等。通过STM32CubeMX的图形化界面&#xff0c;开发人员可以轻松…

第13章 网络 Page724 asio定时器

程序代码&#xff1a; 11行&#xff0c;声明一个ios对象 13行&#xff0c;使用ios对象作为参数声明一个定时器&#xff0c;此时&#xff0c;定时器和ios完成了关联&#xff0c;后面定时器如果有任务的话&#xff0c;就可以将任务交给ios 16行&#xff0c;为定时器设置一个定…