sklearn中一些简单机器学习算法的使用

目录

前言

KNN算法

决策树算法

朴素贝叶斯算法

岭回归算法

线性优化算法


前言

本篇文章会介绍一些sklearn库中简单的机器学习算法如何使用,一些注释已经写在代码中,帮助一些小伙伴入门sklearn库的使用。

注意:本篇文章只涉及到如何使用,并不会讲解原理,如果想了解原理的小伙伴请自行搜索其他技术博客或者查看官方文档。

KNN算法

from sklearn.datasets import load_iris  # 导入莺尾花数据集的模块
from sklearn.model_selection import train_test_split # 导入划分数据集的模块
from sklearn.preprocessing import StandardScaler  # 导入标准化的模块
from sklearn.neighbors import KNeighborsClassifier  # 导入KNN算法的模块
from sklearn.model_selection import GridSearchCV  # 导入网格搜索和交叉验证的模块(判断k取几的时候KNN算法的准确率最高)iris = load_iris()  # 引入数据集x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target)  # 进行训练集和测试集的划分transfer = StandardScaler()  # 标准化操作
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)estimator = KNeighborsClassifier()  # KNN算法
param_dict = {'n_neighbors': [1, 3, 5, 7, 9, 11]}  # 以字典的形式传入
estimator = GridSearchCV(estimator, param_grid=param_dict,cv=10)  # 网格搜索
estimator.fit(x_train, y_train)
y_predict = estimator.predict(x_test)
print(y_predict)
print(y_predict == y_test)
r = estimator.score(x_test, y_test)
print('准确率:', r)
print('最佳参数:', estimator.best_params_)
print('最佳结果:', estimator.best_score_)
print('最佳估计器:', estimator.best_estimator_)
print('交叉验证结果:', estimator.cv_results_)

决策树算法

from sklearn.datasets import load_iris  # 导入莺尾花数据集的模块
from sklearn.model_selection import train_test_split  # 导入划分数据集的模块
from sklearn.tree import DecisionTreeClassifier  # 导入决策树算法的模块
from sklearn import tree  # 导入决策树可视化的模块
import matplotlib.pyplot as pltiris = load_iris()  # 引入数据集x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target)  # 进行训练集和测试集的划分estimator = DecisionTreeClassifier(criterion='entropy')  # 按照信息增益决定特征分别位于树的那层
estimator.fit(x_train, y_train)
y_predict = estimator.predict(x_test)
print(y_predict)
print(y_predict == y_test)
r = estimator.score(x_test, y_test)
print('准确率:', r)plt.figure(figsize=(10, 10))
tree.plot_tree(estimator, feature_names=iris.feature_names)  # 决策树可视化
plt.show()

 

 朴素贝叶斯算法

# 计算概率,那种的概率大就把它划分为那种
from sklearn.datasets import load_iris  # 导入莺尾花数据集的模块
from sklearn.model_selection import train_test_split  # 导入划分数据集的模块
from sklearn.naive_bayes import MultinomialNB  # 导入朴素贝叶斯算法的模块iris = load_iris()  # 引入数据集x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target)  # 进行训练集和测试集的划分estimator = MultinomialNB()  # 朴素贝叶斯算法
estimator.fit(x_train, y_train)
y_predict = estimator.predict(x_test)
print(y_predict)
print(y_predict == y_test)
r = estimator.score(x_test, y_test)
print('准确率:', r)

 

岭回归算法

# 用岭回归对波士顿房价进行预测
from sklearn.datasets import load_boston  # 导入波士顿房价的模块
from sklearn.model_selection import train_test_split  # 导入数据集划分的模块
from sklearn.preprocessing import StandardScaler  # 导入标准化的模块
from sklearn.linear_model import Ridge  # 导入岭回归算法的模块
from sklearn.metrics import mean_squared_error  # 导入均方误差的模块boston = load_boston()
print('特征数量:', boston.data.shape)x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)  # 进行数据集划分,最后一个参数是设定随机数种子transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)estimator = Ridge()
estimator.fit(x_train, y_train)
y_predict = estimator.predict(x_test)
error = mean_squared_error(y_test, y_predict)
print('岭回归-权重系数(k)为:', estimator.coef_)
print('岭回归-偏置(b)为:', estimator.intercept_)
print('岭回归-均方误差为:', error)

线性优化算法

# 几个特征对应几个权重系数:y=k1x1+k2x2+k3x3+k4x4+.....+knxn+b
# 对波士顿房价进行预测
# 正规方程优化算法和梯度下降优化算法
from sklearn.datasets import load_boston  # 导入波士顿房价的模块
from sklearn.model_selection import train_test_split  # 导入数据集划分的模块
from sklearn.preprocessing import StandardScaler # 导入标准化的模块
from sklearn.linear_model import LinearRegression, SGDRegressor  # 导入正规方程算法和梯度下降算法的模块
from sklearn.metrics import mean_squared_error  # 导入均方误差的模块(判断两个算法那个更优,均方误差越小的算法越优)boston = load_boston()
print('特征数量:', boston.data.shape)x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)  # 进行数据集划分,最后一个参数是设定随机数种子transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)estimator = LinearRegression()
estimator.fit(x_train, y_train)
y_predict = estimator.predict(x_test)
error=mean_squared_error(y_test, y_predict)
print('正规方程-权重系数(k)为:', estimator.coef_)
print('正规方程-偏置(b)为:', estimator.intercept_)
print('正规方程-均方误差为:', error)estimator = SGDRegressor()
estimator.fit(x_train, y_train)
y_predict = estimator.predict(x_test)
error = mean_squared_error(y_test, y_predict)
print('梯度下降-权重系数(k)为:', estimator.coef_)
print('梯度下降-偏置(b)为:', estimator.intercept_)
print('梯度下降-均方误差为:', error)

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

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

相关文章

React - 分页插件默认是英文怎么办

英文组件的通用解决方案 这里以分页插件为例: 大家可以看到,最后的这个页面跳转提示文字为Go to,不是中文,而官网里面的案例则是: 解决方案: import { ConfigProvider } from antd; import zhCN from an…

3D高斯溅射:面向三维场景的实时渲染技术

1. 前言 高斯溅射技术【1】一经推出,立刻引起学术界和工业界的广泛关注。相比传统的隐式神经散射场渲染技术,高斯溅射依托椭球空间,显性地表示多目图像的三维空间关系,其计算效率和综合性能均有较大的提升,且更容易理…

装箱问题+宠物小精灵之收服+数字组合——01背包

一、装箱问题 (裸题) 有一个箱子容量为 V&#xff0c;同时有 n 个物品&#xff0c;每个物品有一个体积&#xff08;正整数&#xff09;。 要求 n 个物品中&#xff0c;任取若干个装入箱内&#xff0c;使箱子的剩余空间为最小。 输入 第一行是一个整数 V (0 < V ≤ 20000)&…

微服务OAuth 2.1认证授权可行性方案(Spring Security 6)

文章目录 一、背景二、微服务架构介绍三、认证服务器1. 数据库创建2. 新建模块3. 导入依赖和配置4. 安全认证配置类 四、认证服务器测试1. AUTHORIZATION_CODE&#xff08;授权码模式&#xff09;1. 获取授权码2. 获取JWT 2. CLIENT_CREDENTIALS(客户端凭证模式) 五、Gateway1.…

什么是MVVM模型

MVVM&#xff08;Model-View-ViewModel&#xff09;是一种用于构建 Web 前端应用程序的架构模式。它是从传统的 MVC&#xff08;Model-View-Controller&#xff09;模型演变而来&#xff0c;旨在解决界面逻辑与业务逻辑之间的耦合问题。 在传统的 MVC 架构中&#xff0c;View …

【笔记】Helm-5 Chart模板指南-11 子chart和全局值

子chart和全局值 到目前为止&#xff0c;我们只使用了一个chart。但chart可以使用依赖&#xff0c;称为子chart&#xff0c;且有自己的值和模板。该章节我们会创建一个子chart并能看到访问模板中的值的不同方式。 在深入研究代码之前&#xff0c;需要了解一些应用的子chart的重…

波奇学Linux:文件重定向和虚拟文件系统

重定向 文件描述符所对应的分配规则&#xff0c;从0开始&#xff0c;寻找最小没有使用的数组位置。 如图所示&#xff0c;关闭文件描述符的0&#xff0c;新打开的文件描述符为0&#xff0c;而关闭2&#xff0c;文件描述符为2。 重定向&#xff1a;文件输出的对象发生改变 例…

【ESLint】TypeError:this.libOptions.parse is not a function

打开vue文件之后遇到如下错误&#xff1a; ESLint: TypeError: this.libOptions.parse is not a function该问题是由 ESLint 8.23 版本引起的 解决方法&#xff1a; 将 ESLint 降级到 8.22.x 或更早版本 npm install eslint8.22.0 --save-exact

C++对象继承

继承概念&#xff1a; 首先引入一个生活例子&#xff0c;普通人是一个类对象&#xff0c;学生是一个类对象&#xff0c;普通人拥有的属性学生一定会有&#xff0c;学生拥有的属性普通人不一定有。类比一下&#xff0c;把普通人抽象为A对象&#xff0c;学生抽象为B对象&#xf…

Centos7安装nginx yum报错

Centos7安装nginx yum报错&#xff0c;yum源报错解决办法&#xff1a; 1、更新epel源后&#xff0c;出现yum报错 [roothacker117 ~]# yum install epel-release&#xff08;安装成功&#xff09; [roothacker117 ~]# yum install nginx&#xff08;安装失败&#xff0c;提示如…

Java 对象字段基本类型和包装类型的选择以及 null 处理的一些思考

文章目录 版本起因解决方案方案一方案二方案三 聊聊几种方案的优劣方案一禁止使用方案二建议使用方案三依据实际情况选择 方案二 NullPointerException 的处理总结个人简介 版本 JDK 8 起因 最近合并代码中发现了一个有意思的报错&#xff1a;Lombok builder is missing non…

Windows系统特定快捷键

Windows系统特定快捷键 Windows系统提供了许多特定快捷键&#xff0c;这些快捷键用于快速访问系统设置、控制面板等功能。掌握这些快捷键可以大大提高您的工作效率。以下是一些常用的Windows系统特定快捷键&#xff1a; 1. 启动菜单和搜索&#xff1a; - WinS&#…

复习面经哦

1.函数可以变量提升 JavaScript 中的函数存在变量提升的概念&#xff0c;这意味着在执行代码之前&#xff0c;函数声明会被提升到其作用域的顶部。这使得你可以在函数声明之前调用函数。然而&#xff0c;这种行为只适用于函数声明&#xff0c;而不是函数表达式。 下面是一些关…

深度学习之线性模型

深度学习之线性模型 y w * x模型思路 y w * x b模型思路 y w * x模型 思路 这里求权重w , 求最适合的权重&#xff0c;就是求损失值最小的时候 这里用穷举法:在一个范围内&#xff0c;列出w的所有值&#xff0c;并且计算出每组数据的平均损失值,以w 为横坐标, 损失值为纵坐…

【Java】学习笔记:关于java.sql;

Connection conn null; Connection&#xff1a;这是一个 Java 接口&#xff0c;表示与数据库的连接。在这里&#xff0c;conn 是一个 Connection 类型的变量。 conn&#xff1a;这是变量的名称&#xff0c;可以根据需要进行更改。通常&#xff0c;conn 被用作表示数据库连接的…

Android 移动应用开发 创建第一个Android项目

文章目录 一、创建第一个Android项目1.1 准备好Android Studio1.2 运行程序1.3 程序结构是什么app下的结构res - 子目录&#xff08;所有图片、布局、字AndroidManifest.xml 有四大组件&#xff0c;程序添加权限声明 Project下的结构 二、开发android时&#xff0c;部分库下载异…

在没有鼠标或键盘的情况下在 Mac 上如何启用蓝牙?

通过这个技巧&#xff0c;小编将向您展示几种无需鼠标或键盘即可在 Mac 上重新启用蓝牙的方法。如果您想开始使用蓝牙配件&#xff0c;但还没有连接&#xff0c;这会很有用。 无需鼠标即可启用蓝牙 蓝牙是iPhone、iPad和 Mac 的标准配置。它确保您可以无线使用各种配件&#…

yolo层数连接

head [-1,6]连接的是第六层 [-1,4连接的是第四层

Leecode之合并两个有序链表

一.题目及剖析 https://leetcode.cn/problems/merge-two-sorted-lists/description/ 二.思路引入 用指针遍历两个链表并实时比较,较小的元素进行尾差,然后较小元素的指针接着向后遍历 三.代码引入 /*** Definition for singly-linked list.* struct ListNode {* int va…

ChatGPT-4.0:塑造未来对话的智能架构

ChatGPT-4.0&#xff1a;塑造未来对话的智能架构 引言 在人工智能领域&#xff0c;ChatGPT-4.0的问世标志着对话智能技术的重大突破。这个最新的模型不仅在技术层面上实现了革命性的进步&#xff0c;而且在真实世界的应用中展示了前所未有的潜力。本文将深入探讨ChatGPT-4.0的…